P4 to Git Change 1130172 by asalmanp@asalmanp-opencl-stg1 on 2015/03/12 14:15:06

EPR #394115 - Adding the environment variable "GPU_SELECT_COMPUTE_RINGS_ID" to select a specific compute queue for OCL submission. This EV was requested from KMD team for testing the CWSR demo on CZ.

	ReviewBoardURL = http://ocltc.amd.com/reviews/r/7082/

Affected files ...

... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#354 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp#111 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.h#44 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/flags.hpp#226 edit
This commit is contained in:
foreman
2015-03-12 14:44:24 -04:00
vanhempi 034de4c607
commit 0494cd6ace
4 muutettua tiedostoa jossa 36 lisäystä ja 11 poistoa
@@ -495,7 +495,8 @@ VirtualGPU::create(
// hwRing_ should be set 0 if forced to have single scratch buffer
hwRing_ = (dev().settings().useSingleScratch_) ? 0 : idx;
engineMask = dev().engines().getMask((gslEngineID)(GSL_ENGINEID_COMPUTE0 + idx));
engineMask = dev().engines().getMask((gslEngineID)(dev().isComputeRingIDForced() ?
dev().getforcedComputeEngineID() : (GSL_ENGINEID_COMPUTE0 + idx)));
if (dev().canDMA()) {
if (index() & 0x1) {
engineMask |= dev().engines().getMask(GSL_ENGINEID_DRMDMA0);
@@ -42,7 +42,8 @@ void CALGSLDevice::Initialize()
m_vpuMask = 1;
m_PerformLazyDeviceInit = false;
m_computeRing = false;
m_isComputeRingIDForced = false;
m_forcedComputeEngineID = GSL_ENGINEID_INVALID;
gslDeviceOps_ = NULL;
}
@@ -313,8 +314,6 @@ CALGSLDevice::open(uint32 gpuIndex, bool enableHighPerformanceState, bool report
return false;
}
m_adp->queryAvailableEngines(&m_nEngines, m_engines);
if (m_PerformLazyDeviceInit)
{
// close the adaptor
@@ -411,7 +410,9 @@ CALGSLDevice::SetupAdapter(int32 &asic_id)
m_canDMA = hasDmaEngine;
//Disable DRMDMA on CFX mode for linux on all GPUs.
m_adp->queryAvailableEngines(&m_nEngines, m_engines);
//Disable DRMDMA on CFX mode for linux on all GPUs.
#ifdef ATI_OS_LINUX
if ((m_vpucount > 1) && !DRMDMA_FOR_LNX_CF)
{
@@ -426,7 +427,7 @@ CALGSLDevice::SetupAdapter(int32 &asic_id)
m_computeRing = false;
}
else
{
{
m_computeRing = true;
}
@@ -435,6 +436,22 @@ CALGSLDevice::SetupAdapter(int32 &asic_id)
m_computeRing = (GPU_NUM_COMPUTE_RINGS != 0);
}
if ((!flagIsDefault(GPU_SELECT_COMPUTE_RINGS_ID)) && (m_computeRing))
{
gslEngineID engineID;
engineID = static_cast<gslEngineID>(GPU_SELECT_COMPUTE_RINGS_ID + GSL_ENGINEID_COMPUTE0);
if ((engineID >= GSL_ENGINEID_COMPUTE0) && (engineID <= GSL_ENGINEID_COMPUTE7))
{
for (uint i = 0; i < m_nEngines; ++i) {
if (m_engines[i].id == engineID){
m_isComputeRingIDForced = true;
m_forcedComputeEngineID = engineID;
break;
}
}
}
}
if (m_computeRing && !hasComputeEngine)
{
return false;
@@ -446,8 +463,8 @@ CALGSLDevice::SetupAdapter(int32 &asic_id)
bool
CALGSLDevice::SetupContext(int32 &asic_id)
{
gsl::gsCtx* temp_cs = m_adp->createComputeContext(m_computeRing ? GSL_ENGINEID_COMPUTE0 : GSL_ENGINEID_3DCOMPUTE0,
m_canDMA ? GSL_ENGINEID_DRMDMA0 : GSL_ENGINEID_INVALID);
gsl::gsCtx* temp_cs = m_adp->createComputeContext(m_computeRing ? (m_isComputeRingIDForced ? m_forcedComputeEngineID : GSL_ENGINEID_COMPUTE0)
: GSL_ENGINEID_3DCOMPUTE0, m_canDMA ? GSL_ENGINEID_DRMDMA0 : GSL_ENGINEID_INVALID);
temp_cs->getMainSubCtx()->setVPUMask(m_vpuMask);
m_revision = temp_cs->getChipRev();
@@ -632,8 +649,8 @@ CALGSLDevice::PerformFullInitialization_int()
if (m_cs == 0)
{
m_cs = m_adp->createComputeContext(m_computeRing ? GSL_ENGINEID_COMPUTE0 : GSL_ENGINEID_3DCOMPUTE0,
m_canDMA ? GSL_ENGINEID_DRMDMA0 : GSL_ENGINEID_INVALID);
m_cs = m_adp->createComputeContext(m_computeRing ? (m_isComputeRingIDForced ? m_forcedComputeEngineID : GSL_ENGINEID_COMPUTE0)
: GSL_ENGINEID_3DCOMPUTE0, m_canDMA ? GSL_ENGINEID_DRMDMA0 : GSL_ENGINEID_INVALID);
m_cs->getMainSubCtx()->setVPUMask(m_vpuMask);
//
@@ -134,6 +134,9 @@ public:
gsl::gsCtx* gslCtx() const { return m_cs; }
bool isComputeRingIDForced() const { return m_isComputeRingIDForced; }
gslEngineID getforcedComputeEngineID() const { return m_forcedComputeEngineID; }
protected:
//
/// channel order enumerants
@@ -211,7 +214,7 @@ private:
CALdevicestatus m_deviceStatus;
gslTextureResourceObject m_textureResource;
gslSamplerObject m_textureSampler;
bool m_isOpenCL200Device;
gslEngineID m_forcedComputeEngineID;
union {
struct {
@@ -222,6 +225,8 @@ private:
uint m_PerformLazyDeviceInit : 1;
uint m_vmMode : 1;
uint m_uavInCB : 1;
uint m_isComputeRingIDForced : 1;
bool m_isOpenCL200Device : 1;
};
};
+2
Näytä tiedosto
@@ -122,6 +122,8 @@ release(uint, GPU_SINGLE_ALLOC_PERCENT, 75, \
"Maximum size of a single allocation as percentage of total") \
release(uint, GPU_NUM_COMPUTE_RINGS, 2, \
"GPU number of compute rings. 0 - disabled, 1 , 2,.. - the number of compute rings") \
release(int, GPU_SELECT_COMPUTE_RINGS_ID, -1, \
"GPU select the compute rings ID -1 - disabled, 0 , 1,.. - the forced compute rings ID for submission") \
release_on_stg(bool, C1X_ATOMICS, !IS_MAINLINE, \
"Runtime will report c1x atomics support") \
release(uint, GPU_WORKLOAD_SPLIT, 22, \