From 10b19089fe5cf282554bf2589a97edad0267b259 Mon Sep 17 00:00:00 2001
From: foreman
Date: Wed, 16 Sep 2015 16:26:46 -0400
Subject: [PATCH] P4 to Git Change 1191418 by gandryey@gera-dev-w7 on
2015/09/16 16:13:13
ECR #304775 - Remove EG/NI specific features
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/device.cpp#185 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#251 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpublit.cpp#117 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#522 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#147 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.cpp#296 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.hpp#115 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#226 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.hpp#82 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuscr800.cpp#11 delete
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuscsi.cpp#34 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.cpp#326 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.hpp#93 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#378 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.hpp#134 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLContext.cpp#79 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLContext.h#51 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp#142 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLDevice.h#56 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#66 edit
... //depot/stg/opencl/drivers/opencl/runtime/utils/flags.hpp#241 edit
---
rocclr/runtime/device/device.cpp | 1 -
rocclr/runtime/device/device.hpp | 5 +-
rocclr/runtime/device/gpu/gpublit.cpp | 71 +--
rocclr/runtime/device/gpu/gpudevice.cpp | 79 ++-
rocclr/runtime/device/gpu/gpudevice.hpp | 4 +-
rocclr/runtime/device/gpu/gpukernel.cpp | 248 +--------
rocclr/runtime/device/gpu/gpukernel.hpp | 14 +-
rocclr/runtime/device/gpu/gpuresource.cpp | 66 +--
rocclr/runtime/device/gpu/gpuresource.hpp | 5 -
rocclr/runtime/device/gpu/gpuscr800.cpp | 479 ------------------
rocclr/runtime/device/gpu/gpuscsi.cpp | 3 -
rocclr/runtime/device/gpu/gpusettings.cpp | 76 ---
rocclr/runtime/device/gpu/gpusettings.hpp | 4 +-
rocclr/runtime/device/gpu/gpuvirtual.cpp | 85 +---
rocclr/runtime/device/gpu/gpuvirtual.hpp | 8 -
.../device/gpu/gslbe/src/rt/GSLContext.cpp | 111 +---
.../device/gpu/gslbe/src/rt/GSLContext.h | 4 +-
.../device/gpu/gslbe/src/rt/GSLDevice.cpp | 68 +--
.../device/gpu/gslbe/src/rt/GSLDevice.h | 2 -
rocclr/runtime/platform/program.cpp | 2 +-
rocclr/runtime/utils/flags.hpp | 2 -
21 files changed, 102 insertions(+), 1235 deletions(-)
delete mode 100644 rocclr/runtime/device/gpu/gpuscr800.cpp
diff --git a/rocclr/runtime/device/device.cpp b/rocclr/runtime/device/device.cpp
index bf134c708e..4e1ef8a2e8 100644
--- a/rocclr/runtime/device/device.cpp
+++ b/rocclr/runtime/device/device.cpp
@@ -521,7 +521,6 @@ Settings::Settings()
customHostAllocator_ = false;
waitCommand_ = AMD_OCL_WAIT_COMMAND;
supportDepthsRGB_ = false;
- assumeAliases_ = false;
enableHwDebug_ = false;
}
diff --git a/rocclr/runtime/device/device.hpp b/rocclr/runtime/device/device.hpp
index aea5d8dd44..feaf374ff7 100644
--- a/rocclr/runtime/device/device.hpp
+++ b/rocclr/runtime/device/device.hpp
@@ -101,7 +101,6 @@ enum OclExtensions {
ClKhrD3d9Sharing,
#endif
ClKhrImage2dFromBuffer,
- ClAmdImage2dFromBufferReadOnly,
ClAmdSemaphore,
ClAMDBusAddressableMemory,
ClAMDC11Atomics,
@@ -143,7 +142,6 @@ OclExtensionsString[] = {
"cl_khr_dx9_media_sharing ",
#endif
"cl_khr_image2d_from_buffer ",
- "cl_amd_image2d_from_buffer_read_only ",
"",
"cl_amd_bus_addressable_memory ",
"cl_amd_c11_atomics ",
@@ -582,9 +580,8 @@ public:
uint customHostAllocator_: 1;//!< True if device has custom host allocator
// that replaces generic OS allocation routines
uint supportDepthsRGB_: 1; //!< Support DEPTH and sRGB channel order format
- uint assumeAliases_: 1; //!< Assume aliases in the compilation process
uint enableHwDebug_: 1; //!< Enable HW debug support
- uint reserved_: 24;
+ uint reserved_: 25;
};
uint value_;
};
diff --git a/rocclr/runtime/device/gpu/gpublit.cpp b/rocclr/runtime/device/gpu/gpublit.cpp
index 35fe409b65..e201985e09 100644
--- a/rocclr/runtime/device/gpu/gpublit.cpp
+++ b/rocclr/runtime/device/gpu/gpublit.cpp
@@ -582,7 +582,7 @@ DmaBlitManager::copyBufferRect(
uint bytesPerElement = 16;
bool optimalElementSize = false;
- bool subWindowRectCopy = dev().settings().rectLinearDMA_;
+ bool subWindowRectCopy = true;
srcOffset = srcRect.offset(0, 0, 0);
dstOffset = dstRect.offset(0, 0, 0);
@@ -605,13 +605,12 @@ DmaBlitManager::copyBufferRect(
size_t pitchLimit = dev().settings().ciPlus_ ? (0x3FFF * bytesPerElement) | 0xF : 0x7FFFF;
size_t sizeLimit = dev().settings().ciPlus_ ? (0x3FFF * bytesPerElement) | 0xF : 0x3FFF;
- if (subWindowRectCopy &&
- (!optimalElementSize ||
+ if (!optimalElementSize ||
(srcRect.rowPitch_ > pitchLimit) ||
(dstRect.rowPitch_ > pitchLimit) ||
(size[0] > sizeLimit) || // See above
(size[1] > 0x3fff) || // 14 bits limit in HW
- (size[2] > 0x7ff))) { // 11 bits limit in HW
+ (size[2] > 0x7ff)) { // 11 bits limit in HW
// Restriction with rectLinearDRMDMA packet
subWindowRectCopy = false;
}
@@ -1232,8 +1231,6 @@ KernelBlitManager::copyBufferToImageKernel(
size_t globalWorkOffset[3] = { 0, 0, 0 };
size_t globalWorkSize[3];
size_t localWorkSize[3];
- bool swapLayer = (gpuMem(dstMemory).cal()->dimension_ == GSL_MOA_TEXTURE_1D_ARRAY) &&
- !dev().settings().siPlus_;
// Program the kernels workload depending on the blit dimensions
dim = 3;
@@ -1250,14 +1247,6 @@ KernelBlitManager::copyBufferToImageKernel(
globalWorkSize[2] = amd::alignUp(size[2], 1);
localWorkSize[0] = localWorkSize[1] = 16;
localWorkSize[2] = 1;
- // Swap the Y and Z components, apparently HW expects
- // layer in Z
- if (swapLayer) {
- globalWorkSize[2] = globalWorkSize[1];
- globalWorkSize[1] = 1;
- localWorkSize[2] = localWorkSize[1];
- localWorkSize[1] = 1;
- }
}
else {
globalWorkSize[0] = amd::alignUp(size[0], 8);
@@ -1294,12 +1283,7 @@ KernelBlitManager::copyBufferToImageKernel(
cl_int copySize[4] = { (cl_int)size[0],
(cl_int)size[1],
(cl_int)size[2], 0 };
- if (swapLayer) {
- dstOrg[2] = dstOrg[1];
- dstOrg[1] = 0;
- copySize[2] = copySize[1];
- copySize[1] = 1;
- }
+
setArgument(kernels_[blitType], 3, sizeof(dstOrg), dstOrg);
setArgument(kernels_[blitType], 4, sizeof(copySize), copySize);
@@ -1579,8 +1563,6 @@ KernelBlitManager::copyImageToBufferKernel(
size_t globalWorkOffset[3] = { 0, 0, 0 };
size_t globalWorkSize[3];
size_t localWorkSize[3];
- bool swapLayer = (gpuMem(srcMemory).cal()->dimension_ == GSL_MOA_TEXTURE_1D_ARRAY) &&
- !dev().settings().siPlus_;
// Program the kernels workload depending on the blit dimensions
dim = 3;
@@ -1598,14 +1580,6 @@ KernelBlitManager::copyImageToBufferKernel(
globalWorkSize[2] = amd::alignUp(size[2], 1);
localWorkSize[0] = localWorkSize[1] = 16;
localWorkSize[2] = 1;
- // Swap the Y and Z components, apparently HW expects
- // layer in Z
- if (swapLayer) {
- globalWorkSize[2] = globalWorkSize[1];
- globalWorkSize[1] = 1;
- localWorkSize[2] = localWorkSize[1];
- localWorkSize[1] = 1;
- }
}
else {
globalWorkSize[0] = amd::alignUp(size[0], 8);
@@ -1633,12 +1607,6 @@ KernelBlitManager::copyImageToBufferKernel(
cl_int copySize[4] = { (cl_int)size[0],
(cl_int)size[1],
(cl_int)size[2], 0 };
- if (swapLayer) {
- srcOrg[2] = srcOrg[1];
- srcOrg[1] = 0;
- copySize[2] = copySize[1];
- copySize[1] = 1;
- }
setArgument(kernels_[blitType], 4, sizeof(srcOrg), srcOrg);
const MemFormatStruct& memFmt = memoryFormatSize(gpuMem(srcMemory).cal()->format_);
@@ -1799,20 +1767,12 @@ KernelBlitManager::copyImage(
cl_int srcOrg[4] = { (cl_int)srcOrigin[0],
(cl_int)srcOrigin[1],
(cl_int)srcOrigin[2], 0 };
- if ((gpuMem(srcMemory).cal()->dimension_ == GSL_MOA_TEXTURE_1D_ARRAY) &&
- !dev().settings().siPlus_) {
- srcOrg[3] = 1;
- }
setArgument(kernels_[blitType], 2, sizeof(srcOrg), srcOrg);
// Program destinaiton origin
cl_int dstOrg[4] = { (cl_int)dstOrigin[0],
(cl_int)dstOrigin[1],
(cl_int)dstOrigin[2], 0 };
- if ((gpuMem(dstMemory).cal()->dimension_ == GSL_MOA_TEXTURE_1D_ARRAY) &&
- !dev().settings().siPlus_) {
- dstOrg[3] = 1;
- }
setArgument(kernels_[blitType], 3, sizeof(dstOrg), dstOrg);
cl_int copySize[4] = { (cl_int)size[0],
@@ -1995,13 +1955,11 @@ KernelBlitManager::copyBufferRect(
// Fall into the CAL path for rejected transfers
if (setup_.disableCopyBufferRect_ ||
- ((gpuMem(srcMemory).isHostMemDirectAccess() || gpuMem(dstMemory).isHostMemDirectAccess()) &&
- dev().settings().rectLinearDMA_) ||
+ (gpuMem(srcMemory).isHostMemDirectAccess() || gpuMem(dstMemory).isHostMemDirectAccess()) ||
(!dev().heap()->isVirtual() &&
((gpuMem(dstMemory).hb() == NULL) || (gpuMem(srcMemory).hb() == NULL)))) {
// Copy data with CAL (no VM mode only)
- if ((gpuMem(srcMemory).isHostMemDirectAccess() || gpuMem(dstMemory).isHostMemDirectAccess())
- && dev().settings().rectLinearDMA_) {
+ if (gpuMem(srcMemory).isHostMemDirectAccess() || gpuMem(dstMemory).isHostMemDirectAccess()) {
result = DmaBlitManager::copyBufferRect(srcMemory, dstMemory,
srcRectIn, dstRectIn, sizeIn, entire);
}
@@ -2570,9 +2528,6 @@ KernelBlitManager::fillImage(
Memory* memView = &gpuMem(memory);
amd::Image::Format newFormat(gpuMem(memory).owner()->asImage()->getImageFormat());
- bool swapLayer = (memView->cal()->dimension_ == GSL_MOA_TEXTURE_1D_ARRAY) &&
- !dev().settings().siPlus_;
-
// Program the kernels workload depending on the fill dimensions
fillType = FillImage;
dim = 3;
@@ -2641,14 +2596,6 @@ KernelBlitManager::fillImage(
globalWorkSize[2] = amd::alignUp(size[2], 1);
localWorkSize[0] = localWorkSize[1] = 16;
localWorkSize[2] = 1;
- // Swap the Y and Z components, apparently HW expects
- // layer in Z
- if (swapLayer) {
- globalWorkSize[2] = globalWorkSize[1];
- globalWorkSize[1] = 1;
- localWorkSize[2] = localWorkSize[1];
- localWorkSize[1] = 1;
- }
}
else {
globalWorkSize[0] = amd::alignUp(size[0], 8);
@@ -2671,12 +2618,6 @@ KernelBlitManager::fillImage(
cl_int fillSize[4] = { (cl_int)size[0],
(cl_int)size[1],
(cl_int)size[2], 0 };
- if (swapLayer) {
- fillOrigin[2] = fillOrigin[1];
- fillOrigin[1] = 0;
- fillSize[2] = fillSize[1];
- fillSize[1] = 1;
- }
setArgument(kernels_[fillType], 4, sizeof(fillOrigin), fillOrigin);
setArgument(kernels_[fillType], 5, sizeof(fillSize), fillSize);
diff --git a/rocclr/runtime/device/gpu/gpudevice.cpp b/rocclr/runtime/device/gpu/gpudevice.cpp
index 08c5e5c4ae..32bd622b01 100644
--- a/rocclr/runtime/device/gpu/gpudevice.cpp
+++ b/rocclr/runtime/device/gpu/gpudevice.cpp
@@ -235,31 +235,20 @@ void NullDevice::fillDeviceInfo(
info_.maxWorkItemDimensions_ = 3;
info_.numberOfShaderEngines = calAttr.numberOfShaderEngines;
- if (settings().siPlus_) {
- // SI parts are scalar. Also, reads don't need to be 128-bits to get peak rates.
- // For example, float4 is not faster than float as long as all threads fetch the same
- // amount of data and the reads are coalesced. This is from the H/W team and confirmed
- // through experimentation. May also be true on EG/NI, but no point in confusing
- // developers now.
- info_.nativeVectorWidthChar_ = info_.preferredVectorWidthChar_ = 4;
- info_.nativeVectorWidthShort_ = info_.preferredVectorWidthShort_ = 2;
- info_.nativeVectorWidthInt_ = info_.preferredVectorWidthInt_ = 1;
- info_.nativeVectorWidthLong_ = info_.preferredVectorWidthLong_ = 1;
- info_.nativeVectorWidthFloat_ = info_.preferredVectorWidthFloat_ = 1;
- info_.nativeVectorWidthDouble_ = info_.preferredVectorWidthDouble_ =
- (settings().checkExtension(ClKhrFp64)) ? 1 : 0;
- info_.nativeVectorWidthHalf_ = info_.preferredVectorWidthHalf_ = 0; // no half support
- }
- else {
- info_.nativeVectorWidthChar_ = info_.preferredVectorWidthChar_ = 16;
- info_.nativeVectorWidthShort_ = info_.preferredVectorWidthShort_ = 8;
- info_.nativeVectorWidthInt_ = info_.preferredVectorWidthInt_ = 4;
- info_.nativeVectorWidthLong_ = info_.preferredVectorWidthLong_ = 2;
- info_.nativeVectorWidthFloat_ = info_.preferredVectorWidthFloat_ = 4;
- info_.nativeVectorWidthDouble_ = info_.preferredVectorWidthDouble_ =
- (settings().checkExtension(ClKhrFp64)) ? 2 : 0;
- info_.nativeVectorWidthHalf_ = info_.preferredVectorWidthHalf_ = 0; // no half support
- }
+ // SI parts are scalar. Also, reads don't need to be 128-bits to get peak rates.
+ // For example, float4 is not faster than float as long as all threads fetch the same
+ // amount of data and the reads are coalesced. This is from the H/W team and confirmed
+ // through experimentation. May also be true on EG/NI, but no point in confusing
+ // developers now.
+ info_.nativeVectorWidthChar_ = info_.preferredVectorWidthChar_ = 4;
+ info_.nativeVectorWidthShort_ = info_.preferredVectorWidthShort_ = 2;
+ info_.nativeVectorWidthInt_ = info_.preferredVectorWidthInt_ = 1;
+ info_.nativeVectorWidthLong_ = info_.preferredVectorWidthLong_ = 1;
+ info_.nativeVectorWidthFloat_ = info_.preferredVectorWidthFloat_ = 1;
+ info_.nativeVectorWidthDouble_ = info_.preferredVectorWidthDouble_ =
+ (settings().checkExtension(ClKhrFp64)) ? 1 : 0;
+ info_.nativeVectorWidthHalf_ = info_.preferredVectorWidthHalf_ = 0; // no half support
+
info_.maxClockFrequency_ = (calAttr.engineClock != 0) ? calAttr.engineClock : 555;
info_.maxParameterSize_ = 1024;
info_.minDataTypeAlignSize_ = sizeof(cl_long16);
@@ -959,7 +948,7 @@ Device::initializeHeapResources()
// Initialize the number of mem object for the scratch buffer
for (uint s = 0; s < scratch_.size(); ++s) {
- scratch_[s] = new ScratchBuffer((settings().siPlus_) ? 1 : info_.numberOfShaderEngines);
+ scratch_[s] = new ScratchBuffer();
if (NULL == scratch_[s]) {
return false;
}
@@ -2301,11 +2290,9 @@ Device::ScratchBuffer::~ScratchBuffer()
void
Device::ScratchBuffer::destroyMemory()
{
- for (uint i = 0; i < memObjs_.size(); ++i) {
- // Release memory object
- delete memObjs_[i];
- memObjs_[i] = NULL;
- }
+ // Release memory object
+ delete memObj_;
+ memObj_ = NULL;
}
bool
@@ -2333,7 +2320,7 @@ Device::allocScratch(uint regNum, const VirtualGPU* vgpu)
// Calculate the size of the scratch buffer for a queue
scratchBuf->size_ = calcScratchBufferSize(scratchBuf->regNum_);
scratchBuf->offset_ = offset;
- size += scratchBuf->size_ * scratchBuf->memObjs_.size();
+ size += scratchBuf->size_;
offset += scratchBuf->size_;
}
}
@@ -2352,22 +2339,20 @@ Device::allocScratch(uint regNum, const VirtualGPU* vgpu)
}
for (uint s = 0; s < scratch_.size(); ++s) {
- std::vector& mems = scratch_[s]->memObjs_;
-
// Loop through all memory objects and reallocate them
- for (uint i = 0; i < mems.size(); ++i) {
- if (scratch_[s]->regNum_ > 0) {
- // Allocate new buffer
- mems[i] = new gpu::Memory(*this, scratch_[s]->size_);
- Resource::ViewParams view;
- view.resource_ = globalScratchBuf_;
- view.offset_ = scratch_[s]->offset_ + i * scratch_[s]->size_;
- view.size_ = scratch_[s]->size_;
- if ((mems[i] == NULL) || !mems[i]->create(Resource::View, &view)) {
- LogError("Couldn't allocate a scratch view");
- scratch_[s]->regNum_ = 0;
- return false;
- }
+ if (scratch_[s]->regNum_ > 0) {
+ // Allocate new buffer
+ scratch_[s]->memObj_ = new gpu::Memory(*this, scratch_[s]->size_);
+ Resource::ViewParams view;
+ view.resource_ = globalScratchBuf_;
+ view.offset_ = scratch_[s]->offset_;
+ view.size_ = scratch_[s]->size_;
+ if ((scratch_[s]->memObj_ == NULL) ||
+ !scratch_[s]->memObj_->create(Resource::View, &view)) {
+ LogError("Couldn't allocate a scratch view");
+ delete scratch_[s]->memObj_;
+ scratch_[s]->regNum_ = 0;
+ return false;
}
}
}
diff --git a/rocclr/runtime/device/gpu/gpudevice.hpp b/rocclr/runtime/device/gpu/gpudevice.hpp
index dea3028fe3..4072ed9670 100644
--- a/rocclr/runtime/device/gpu/gpudevice.hpp
+++ b/rocclr/runtime/device/gpu/gpudevice.hpp
@@ -303,12 +303,12 @@ public:
struct ScratchBuffer : public amd::HeapObject
{
uint regNum_; //!< The number of used scratch registers
- std::vector memObjs_; //!< Memory objects for scratch buffers
+ Memory* memObj_; //!< Memory objects for scratch buffers
uint offset_; //!< Offset from the global scratch store
uint size_; //!< Scratch buffer size on this queue
//! Default constructor
- ScratchBuffer(uint numMems): regNum_(0), memObjs_(numMems), offset_(0) {}
+ ScratchBuffer(): regNum_(0), memObj_(NULL), offset_(0) {}
//! Default constructor
~ScratchBuffer();
diff --git a/rocclr/runtime/device/gpu/gpukernel.cpp b/rocclr/runtime/device/gpu/gpukernel.cpp
index 41694e2d8e..0ffabf5468 100644
--- a/rocclr/runtime/device/gpu/gpukernel.cpp
+++ b/rocclr/runtime/device/gpu/gpukernel.cpp
@@ -533,8 +533,6 @@ NullKernel::NullKernel(
{
// UAV raw index will be detected
uavRaw_ = UavIdUndefined;
- // Initialize UAV arena index(should be 8)
- uavArena_ = VirtualGPU::UavArena;
// CB index will be detected
cbId_ = UavIdUndefined;
// Printf index will be detected
@@ -771,7 +769,6 @@ NullKernel::create(
workGroupInfo_.usedLDSSize_ = calFuncInfo.LDSSizeUsed;
workGroupInfo_.availableStackSize_ = calFuncInfo.stackSizeAvailable;
workGroupInfo_.usedStackSize_ = calFuncInfo.stackSizeUsed;
- setBufferForNumGroup_ = calFuncInfo.setBufferForNumGroup;
device::Kernel::parameters_t params;
if (!createSignature(params)) {
@@ -935,12 +932,7 @@ NullKernel::createMultiBinary(uint* imageSize, void** image, const void* isa)
AMUabiMultiBinary amuBinary;
amuABIMultiBinaryCreate(&amuBinary);
- if (nullDev().settings().siPlus_) {
- result = siCreateHwInfo(shader, encoding);
- }
- else {
- result = r800CreateHwInfo(shader, encoding);
- }
+ result = siCreateHwInfo(shader, encoding);
if (!result) {
delete [] tmpMem;
LogWarning("Error Creating program info");
@@ -975,7 +967,6 @@ NullKernel::createMultiBinary(uint* imageSize, void** image, const void* isa)
uint inputResourceCount = 0;
uint uavCount = 0;
- bool globalBound = false;
bool cbBound = false;
bool printfBound = false;
for (uint i = 0; i < arguments_.size(); ++i) {
@@ -986,30 +977,11 @@ NullKernel::createMultiBinary(uint* imageSize, void** image, const void* isa)
constBuffers[constBufferCount++].index = arg->index_;
break;
case KernelArg::PointerGlobal:
- if (nullDev().settings().useAliases_) {
- if (!globalBound) {
- uav[uavCount].offset = uavRaw_;
- uav[uavCount].type = AMU_ABI_UAV_TYPE_RAW;
- uav[uavCount].dimension = AMU_ABI_DIM_BUFFER;
- uav[uavCount].format = AMU_ABI_UAV_FORMAT_TYPELESS;
- uavCount++;
- if (uavArena_ != 0) {
- uav[uavCount].offset = uavArena_;
- uav[uavCount].type = AMU_ABI_UAV_TYPE_ARENA;
- uav[uavCount].dimension = AMU_ABI_DIM_BUFFER;
- uav[uavCount].format = AMU_ABI_UAV_FORMAT_TYPELESS;
- uavCount++;
- }
- }
- globalBound = true;
- }
- else {
- uav[uavCount].offset = arg->index_;
- uav[uavCount].type = AMU_ABI_UAV_TYPE_TYPELESS;
- uav[uavCount].dimension = AMU_ABI_DIM_BUFFER;
- uav[uavCount].format = AMU_ABI_UAV_FORMAT_TYPELESS;
- uavCount++;
- }
+ uav[uavCount].offset = arg->index_;
+ uav[uavCount].type = AMU_ABI_UAV_TYPE_TYPELESS;
+ uav[uavCount].dimension = AMU_ABI_DIM_BUFFER;
+ uav[uavCount].format = AMU_ABI_UAV_FORMAT_TYPELESS;
+ uavCount++;
break;
case KernelArg::ConstBufId:
if (!cbBound) {
@@ -1032,8 +1004,7 @@ NullKernel::createMultiBinary(uint* imageSize, void** image, const void* isa)
printfBound = true;
break;
case KernelArg::UavId:
- if (!nullDev().settings().useAliases_ &&
- (UavIdUndefined != uavRaw_) &&
+ if ((UavIdUndefined != uavRaw_) &&
!(flags() & PrintfOutput)) {
uav[uavCount].offset = arg->index_;
uav[uavCount].type = AMU_ABI_UAV_TYPE_TYPELESS;
@@ -1049,13 +1020,6 @@ NullKernel::createMultiBinary(uint* imageSize, void** image, const void* isa)
uav[uavCount].format = AMU_ABI_UAV_FORMAT_TYPELESS;
uavCount++;
}
- if (uavArena_ != 0) {
- uav[uavCount].offset = uavArena_;
- uav[uavCount].type = AMU_ABI_UAV_TYPE_ARENA;
- uav[uavCount].dimension = AMU_ABI_DIM_BUFFER;
- uav[uavCount].format = AMU_ABI_UAV_FORMAT_TYPELESS;
- uavCount++;
- }
}
break;
case KernelArg::Sampler:
@@ -1518,16 +1482,14 @@ Kernel::bindConstantBuffers(VirtualGPU& gpu) const
return result;
}
-bool
+void
Kernel::processMemObjects(
VirtualGPU& gpu,
const amd::Kernel& kernel,
const_address params,
bool nativeMem) const
{
- bool aliases = false;
VirtualGPU::MemoryDependency& dependecy = gpu.memoryDependency();
- bool readCache = !internal_ && rwAttributes_ && !dev().settings().assumeAliases_;
// Mark the tracker with a new kernel,
// so we can avoid checks of the aliased objects
@@ -1539,7 +1501,6 @@ Kernel::processMemObjects(
const amd::KernelParameterDescriptor& desc = signature.at(i);
const KernelArg* arg = argument(i);
Memory* memory = NULL;
- bool readOnly = false;
// Find if current argument is a buffer
if ((desc.type_ == T_POINTER) &&
@@ -1557,44 +1518,11 @@ Kernel::processMemObjects(
}
if (memory != NULL) {
- readOnly = arg->memory_.readOnly_;
-
- // Check if read cache optimization is possible
- if (readCache) {
- // Find if the same buffer was sent to other arguments (aliases)
- for (size_t j = i + 1; (j < signature.numParameters()); ++j) {
- const amd::KernelParameterDescriptor& descJ = signature.at(j);
- const KernelArg* argJ = argument(j);
- if (argJ->type_ == KernelArg::PointerGlobal) {
- bool readOnlyJ = argJ->memory_.readOnly_;
- Memory* memory2 = NULL;
- if (nativeMem) {
- memory2 = *reinterpret_cast
- (params + descJ.offset_);
- }
- else if (*reinterpret_cast
- (params + descJ.offset_) != NULL) {
- memory2 = dev().getGpuMemory(
- *reinterpret_cast
- (params + descJ.offset_));
- }
- if (memory == memory2) {
- if (!readOnly || !readOnlyJ) {
- aliases = true;
- break;
- }
- }
- }
- }
- }
-
// Validate memory for a dependency in the queue
- gpu.memoryDependency().validate(gpu, memory, readOnly);
+ gpu.memoryDependency().validate(gpu, memory, arg->memory_.readOnly_);
}
}
}
-
- return aliases & readCache;
}
bool
@@ -1612,8 +1540,7 @@ Kernel::loadParameters(
return false;
}
- if (!dev().settings().useAliases_ &&
- (UavIdUndefined != uavRaw_) &&
+ if ((UavIdUndefined != uavRaw_) &&
(!(flags() & PrintfOutput) || (printfId_ != UavIdUndefined))) {
Memory* gpuMemory = dev().getGpuMemory(dev().dummyPage());
// Bind a buffer for a dummy read
@@ -1638,10 +1565,7 @@ Kernel::loadParameters(
result = bindConstantBuffers(gpu);
- if (dev().settings().useAliases_) {
- result &= bindResource(gpu, dev().globalMem(), 0, GlobalBufferArena, uavArena_);
- }
- else if (flags() & PrivateFixed) {
+ if (flags() & PrivateFixed) {
result &= bindResource(gpu, dev().globalMem(), 0, GlobalBuffer, uavRaw_);
}
@@ -1658,32 +1582,6 @@ bool
Kernel::run(VirtualGPU& gpu, GpuEvent* calEvent, bool lastRun) const
{
const VirtualGPU::CalVirtualDesc* dispatch = gpu.cal();
- // 8xx workaround for the number of groups limit in HW
- if (setBufferForNumGroup_) {
- ConstBuffer* cb = gpu.numGrpCb();
- assert((cb != NULL) && "Runtime must have the constant buffer");
-
- uint32_t* memPtr = reinterpret_cast(cb->sysMemCopy());
- memPtr[0] = dispatch->gridSize.width;
- memPtr[1] = dispatch->gridSize.height;
- memPtr[2] = dispatch->gridSize.depth;
- memPtr[3] = 0;
-
- memPtr[4] = dispatch->gridBlock.width;
- memPtr[5] = dispatch->gridBlock.height;
- memPtr[6] = dispatch->gridBlock.depth;
- memPtr[7] = 0;
-
- bool result = cb->uploadDataToHw(8 * sizeof(uint32_t));
- if (result) {
- gpu.setConstantBuffer(SC_INFO_CONSTANTBUFFER,
- cb->gslResource(), static_cast(cb->wrtOffset()), cb->hbSize());
- }
- else {
- assert(!"Runtime didn't upload data for NumGroup workaround");
- return false;
- }
- }
auto compProg = static_cast(gpu.gslKernelDesc()->func_);
compProg->setWavesPerSH(waveLimiter_.getWavesPerSH(&gpu));
@@ -1950,15 +1848,13 @@ Kernel::setArgument(
// Update offset only if we bind HeapBuffer or
// it's global address space in UAV setup on SI+
- if ((type == ArgumentHeapBuffer) || dev().settings().siPlus_) {
- if (!blitKernelHack_) {
- offset += gpuMem->hbOffset();
- if (!forceZeroOffset) {
- assert((offset != 0) && "Offset 0 with a real allocation!");
- }
+ if (!blitKernelHack_) {
+ offset += gpuMem->hbOffset();
+ if (!forceZeroOffset) {
+ assert((offset != 0) && "Offset 0 with a real allocation!");
}
- gpu.addVmMemory(gpuMem);
}
+ gpu.addVmMemory(gpuMem);
}
// Wait for resource if it was used on an inactive engine
@@ -2290,14 +2186,6 @@ Kernel::bindResource(
physUnit = uavRaw_;
uavType = GSL_UAV_TYPE_TYPELESS;
break;
- case GlobalBufferArena:
- if (gpu.state_.boundGlobal_) {
- return true;
- }
- gpu.state_.boundGlobal_ = true;
- physUnit = uavArena_;
- uavType = GSL_UAV_TYPE_TYPELESS;
- break;
case ArgumentCbID:
if (gpu.state_.boundCb_) {
return true;
@@ -2365,8 +2253,7 @@ Kernel::bindResource(
gslMemObject gslMem = NULL;
// Use global address space on SI+ for UAV setup
- if (dev().settings().siPlus_ &&
- ((type == ArgumentBuffer) || (type == ArgumentCbID) ||
+ if (((type == ArgumentBuffer) || (type == ArgumentCbID) ||
(type == ArgumentUavID) || (type == ArgumentPrintfID)) &&
!blitKernelHack_) {
gslMem = dev().heap()->resource().gslResource();
@@ -2379,7 +2266,6 @@ Kernel::bindResource(
bool result = true;
switch (type) {
case GlobalBuffer:
- case GlobalBufferArena:
case ArgumentBuffer:
case ArgumentImageWrite:
case ArgumentUavID:
@@ -2396,10 +2282,6 @@ Kernel::bindResource(
gpu.setUAVChannelOrder(physUnit, gslMem);
gpu.cal_.uavs_[physUnit] = gslMem;
}
- else if (!dev().settings().siPlus_)
- {
- gpu.setUAVChannelOrder(physUnit, gslMem);
- }
break;
case ConstantBuffer:
case ArgumentConstBuffer:
@@ -2425,25 +2307,6 @@ Kernel::bindResource(
return false;
}
- if ((type == GlobalBuffer) && dev().settings().useAliases_) {
- if (uavArena_ != 0) {
- if (!setupArenaAliases(gpu, resource)) {
- return false;
- }
- if ((uavArena_ != physUnit) &&
- (gpu.cal_.uavs_[uavArena_] != gslMem)) {
- gpu.cal_.uavs_[uavArena_] = gslMem;
- // Associate memory with the name
- if (!gpu.setUAVBuffer(uavArena_, gslMem,
- GSL_UAV_TYPE_TYPELESS)) {
- LogError("calCtxSetMem failed!");
- return false;
- }
- gpu.setUAVChannelOrder(uavArena_, gslMem);
- }
- }
- }
-
return true;
}
@@ -2494,64 +2357,12 @@ Kernel::unbindResources(
gpu.constBufs_[i]->setBusy(gpu, calEvent);
}
- // 8xx workaround for the number of groups limit in HW
- if (setBufferForNumGroup_) {
- ConstBuffer* cb = gpu.numGrpCb();
- assert((cb != NULL) && "Runtime must have the constant buffer");
- cb->setBusy(gpu, calEvent);
- }
-
// Set the event object for the scratch buffer
if (workGroupInfo()->scratchRegs_ > 0) {
- for (uint i = 0; i < dev().scratch(gpu.hwRing())->memObjs_.size(); ++i) {
- dev().scratch(gpu.hwRing())->memObjs_[i]->setBusy(gpu, calEvent);
- }
+ dev().scratch(gpu.hwRing())->memObj_->setBusy(gpu, calEvent);
}
}
-bool
-Kernel::setupArenaAliases(VirtualGPU& gpu, const Resource& resource) const
-{
- const static uint ScArenaUavShortId = 9;
- const static uint ScArenaUavByteId = 10;
-
- Resource* buf = &(const_cast(resource));
- Resource* alias;
- gslMemObject gslMem = NULL;
- //
- // byte view
- //
- alias = buf->getAliasUAVBuffer(CM_SURF_FMT_R8I);
- if (NULL == alias) {
- return false;
- }
- gslMem = alias->gslResource();
- if (gpu.cal_.uavs_[ScArenaUavByteId] != gslMem) {
- if (!gpu.setUAVBuffer(ScArenaUavByteId,
- gslMem, GSL_UAV_TYPE_TYPELESS)) {
- return false;
- }
- gpu.cal_.uavs_[ScArenaUavByteId] = gslMem;
- }
-
- //
- // short view
- //
- alias = buf->getAliasUAVBuffer(CM_SURF_FMT_R16I);
- if (NULL == alias) {
- return false;
- }
- bool result = true;
- gslMem = alias->gslResource();
- if (gpu.cal_.uavs_[ScArenaUavShortId] != gslMem) {
- result = gpu.setUAVBuffer(ScArenaUavShortId,
- gslMem, GSL_UAV_TYPE_TYPELESS);
- gpu.cal_.uavs_[ScArenaUavShortId] = gslMem;
- }
-
- return result;
-}
-
void
Kernel::copyImageConstants(
const amd::Image* amdImage,
@@ -2993,29 +2804,13 @@ NullKernel::parseArguments(const std::string& metaData, uint* uavRefCount)
// Check if can't use a dedicated UAV,
// so realloc memory in the heap
arg->memory_.realloc_ = isRealloc();
-
- if (nullDev().settings().useAliases_) {
- if (uavRefCount[arg->index_] > 1) {
- // Multiple accesses, assume this is the heap
- uavRaw_ = arg->index_;
- }
- // Mark argument as an UAV buffer if no aliases or it's not arena
- else if (arg->index_ != VirtualGPU::UavArena) {
- arg->memory_.uavBuf_ = true;
- }
- }
- else {
- arg->memory_.uavBuf_ = true;
- }
+ arg->memory_.uavBuf_ = true;
break;
case KernelArg::PointerHwConst:
arg->memory_.realloc_ = true;
break;
case KernelArg::UavId:
- if (!nullDev().settings().useAliases_ ||
- (arg->index_ != VirtualGPU::UavArena)) {
- uavRaw_ = arg->index_;
- }
+ uavRaw_ = arg->index_;
break;
default:
break;
@@ -3029,8 +2824,7 @@ NullKernel::parseArguments(const std::string& metaData, uint* uavRefCount)
}
}
- if (!nullDev().settings().useAliases_ &&
- (uavRaw_ != UavIdUndefined) &&
+ if ((uavRaw_ != UavIdUndefined) &&
!(flags() & PrintfOutput)) {
// Find if default UAV is already assigned to an argument
for (uint i = 0; i < arguments_.size(); ++i) {
diff --git a/rocclr/runtime/device/gpu/gpukernel.hpp b/rocclr/runtime/device/gpu/gpukernel.hpp
index 0bf06ffd38..b46242ec2d 100644
--- a/rocclr/runtime/device/gpu/gpukernel.hpp
+++ b/rocclr/runtime/device/gpu/gpukernel.hpp
@@ -385,7 +385,6 @@ public:
Undefined = 0x00000000, //!< resource type will be detected
ConstantBuffer = 0x00000001, //!< resource is a constant buffer
GlobalBuffer = 0x00000002, //!< resource is a global buffer
- GlobalBufferArena = 0x00000003, //!< resource is a global buffer
ArgumentHeapBuffer = 0x00000004, //!< resource is an argument buffer
ArgumentBuffer = 0x00000005, //!< resource is an argument buffer
ArgumentImageRead = 0x00000006, //!< resource is an argument image read
@@ -482,9 +481,6 @@ protected:
//! Returns UAV raw index for this kernel
uint uavRaw() const { return uavRaw_; }
- //! Returns UAV arena index for this kernel
- uint uavArena() const { return uavArena_; }
-
cl_int buildError_; //!< Kernel's build error
std::string ilSource_; //!< IL source code of this kernel
@@ -502,10 +498,8 @@ protected:
uint numCb_; //!< total number of constant buffers
uint uavRaw_; //!< UAV used for RAW access
- uint uavArena_; //!< UAV used for arena access
bool rwAttributes_; //!< backend provides RW attributes for arguments
- bool setBufferForNumGroup_;
uint instructionCnt_;//!< Instruction count
@@ -600,7 +594,7 @@ public:
*
* \return True if aliases were detected in the kernel arguments
*/
- bool processMemObjects(
+ void processMemObjects(
VirtualGPU& gpu, //!< Virtual GPU objects - queue
const amd::Kernel& kernel, //!< AMD kernel object for execution
const_address params, //!< pointer to the param's store
@@ -761,12 +755,6 @@ private:
bool lastRun //!< last run in the split execution
) const;
- //! Returns true if arena setup was successful
- bool setupArenaAliases(
- VirtualGPU& gpu, //!< Virtual GPU device object
- const Resource& resource //!< Resource for aliases setup
- ) const;
-
//! Copies image constants to the constant buffer
void copyImageConstants(
const amd::Image* amdImage, //!< Abstraction layer image object
diff --git a/rocclr/runtime/device/gpu/gpuresource.cpp b/rocclr/runtime/device/gpu/gpuresource.cpp
index 994d8df24f..85feb33c5e 100644
--- a/rocclr/runtime/device/gpu/gpuresource.cpp
+++ b/rocclr/runtime/device/gpu/gpuresource.cpp
@@ -67,8 +67,6 @@ Resource::Resource(
, hbOffset_(0)
, hbSize_(0)
, pinOffset_(0)
- , byteView_(NULL)
- , shortView_(NULL)
, glInterop_(0)
, gpu_(NULL)
{
@@ -114,8 +112,6 @@ Resource::Resource(
, hbOffset_(0)
, hbSize_(0)
, pinOffset_(0)
- , byteView_(NULL)
- , shortView_(NULL)
, glInterop_(0)
, gpu_(NULL)
{
@@ -1069,15 +1065,6 @@ Resource::reallocate(CreateParams* params)
void
Resource::free()
{
- if (NULL != byteView_) {
- delete byteView_;
- byteView_ = NULL;
- }
- if (NULL != shortView_) {
- delete shortView_;
- shortView_ = NULL;
- }
-
if (gslRef_ == NULL) {
return;
}
@@ -1935,7 +1922,7 @@ Resource::warmUpRenames(VirtualGPU& gpu)
// EPR #411675 - On Kaveri, benchmark "photo editing" of PCMarks takes longer time
// if writing 0 for the buffer paging by VidMM is excuted. Not sure how PCMarks measures it.
// Disable this code for apu
- if (dev().settings().siPlus_ && !dev().settings().apuSystem_) {
+ if (!dev().settings().apuSystem_) {
uint dummy = 0;
const bool NoWait = false;
// Write 0 for the buffer paging by VidMM
@@ -1946,57 +1933,6 @@ Resource::warmUpRenames(VirtualGPU& gpu)
}
}
-Resource*
-Resource::getAliasUAVBuffer(cmSurfFmt newFormat)
-{
- Resource* view = NULL;
- uint byteSize;
-
- // Lock device so a view allocation is unique operation
- amd::ScopedLock k(dev().gslDeviceOps());
-
- if (newFormat == CM_SURF_FMT_R8I) {
- view = byteView_;
- byteSize = 1;
- }
- else if (newFormat == CM_SURF_FMT_R16I) {
- view = shortView_;
- byteSize = 2;
- }
- else { // only take byte and short
- assert(false && "Unsupported format for a view");
- return NULL;
- }
-
- // allocate byte/short view
- if (NULL == view) {
- view = new Resource(dev(), (cal()->width_ * elementSize()) / byteSize, newFormat);
- if (view == NULL) {
- return NULL;
- }
-
- Resource::ViewParams params;
- params.offset_ = 0;
- params.size_ = cal()->width_ * elementSize();
- params.resource_ = this;
-
- if (!view->create(Resource::View, ¶ms)) {
- delete view;
- return NULL;
- }
-
- // save view resource
- if (newFormat == CM_SURF_FMT_R8I) {
- byteView_ = view;
- }
- else if (newFormat == CM_SURF_FMT_R16I) {
- shortView_ = view;
- }
- }
-
- return view;
-}
-
ResourceCache::~ResourceCache()
{
free();
diff --git a/rocclr/runtime/device/gpu/gpuresource.hpp b/rocclr/runtime/device/gpu/gpuresource.hpp
index c0aaf4c25a..6430467760 100644
--- a/rocclr/runtime/device/gpu/gpuresource.hpp
+++ b/rocclr/runtime/device/gpu/gpuresource.hpp
@@ -359,9 +359,6 @@ public:
bool isCacheable() const
{ return (isMemoryType(Remote) || isMemoryType(Pinned)) ? true : false; }
- //! Returns alias memory object
- Resource* getAliasUAVBuffer(cmSurfFmt newFormat);
-
bool gslGLAcquire() ;
bool gslGLRelease() ;
@@ -443,8 +440,6 @@ private:
uint64_t hbOffset_; //!< Offset in the heap (virtual or real)
uint64_t hbSize_; //!< Memory size
uint64_t pinOffset_; //!< Pinned memory offset
- Resource* byteView_; //!< Byte view memory object
- Resource* shortView_; //!< Short view memory object
gslMemObject glInterop_; //!< Original GL interop object
void* glInteropMbRes_;//!< Mb Res handle
uint32_t glType_; //!< GL interop type
diff --git a/rocclr/runtime/device/gpu/gpuscr800.cpp b/rocclr/runtime/device/gpu/gpuscr800.cpp
deleted file mode 100644
index daaa8a84ba..0000000000
--- a/rocclr/runtime/device/gpu/gpuscr800.cpp
+++ /dev/null
@@ -1,479 +0,0 @@
-//
-// Copyright (c) 2008 Advanced Micro Devices, Inc. All rights reserved.
-//
-
-#include "device/gpu/gpukernel.hpp"
-#include
-#include
-#include
-#include
-#include
-
-#include "acl.h"
-#define R900_BUILD 1
-#include "SCShadersR800.h"
-#include "r8xx_r9xx_merged__offset.h"
-#include "r8xx_r9xx_merged__typedef.h"
-
-namespace gpu {
-
-#define NUM_R800_CS_INFOS (0x22+SC_R800_MAX_UAV+ \
- 3+ /* globalReturnBuffer flag plus numUavs and numGlobalReturnBuffers */ \
- 1+ /* extendedCaching flag */ \
- 3+ /* globalReturnBuffer sizes for dword, shorts and bytes */ \
- 3*SC_R800_MAX_UAV+ /* offsetmap, cached and uncached fetch consts */ \
- 2*SC_R800_MAX_UAV+ /* 64- and 128-bit cached fetch consts */ \
- 2*R800_GLOBAL_RTN_BUF_LAST /* global return buffer fetch consts and type */ )
-
-struct Options {
- uint numClauseTemps_;
- uint numGPRs_;
- uint numThreads_;
- uint numStackEntries_;
- uint ldsSize_;
-
- Options(CALtarget target) {
- numClauseTemps_ = 4;
-
- switch (target) {
- case CAL_TARGET_DEVASTATOR:
- case CAL_TARGET_SCRAPPER:
- case CAL_TARGET_CAYMAN:
- case CAL_TARGET_KAUAI:
- numClauseTemps_ = 0;
- numStackEntries_ = 512;
- numThreads_ = 248;
- break;
- case CAL_TARGET_SUPERSUMO:
- case CAL_TARGET_TURKS:
- case CAL_TARGET_REDWOOD:
- numStackEntries_ = 256;
- numThreads_ = 248;
- break;
- case CAL_TARGET_WRESTLER:
- case CAL_TARGET_SUMO:
- case CAL_TARGET_CAICOS:
- case CAL_TARGET_CEDAR:
- numStackEntries_ = 256;
- numThreads_ = 192;
- break;
- case CAL_TARGET_CYPRESS:
- case CAL_TARGET_BARTS:
- case CAL_TARGET_JUNIPER:
- numStackEntries_ = 512;
- numThreads_ = 248;
- break;
- default:
- numStackEntries_ = 512;
- numThreads_ = 248;
- LogError("Unknown ASIC type");
- }
-
- numGPRs_ = 256 - 2 * numClauseTemps_;
- ldsSize_ = 32*1024;
- }
-private:
- Options();
- Options(const Options&);
- Options& operator=(const Options&);
-};
-
-static const uint UncachedFetchConst[SC_R800_MAX_UAV] =
- { 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 173 };
-
-static const uint CachedFetchConst[SC_R800_MAX_UAV] =
- { 144, 145, 146, 148, 149, 150, 151, 152, 0, 0, 0, 153 };
-
-static const uint GlobalReturnFetchConst[R800_GLOBAL_RTN_BUF_LAST] =
- { 165, 166, 167, 168, 169, 170, 171, 172 };
-
-static const uint GlobalReturnBufferType[R800_GLOBAL_RTN_BUF_LAST] =
- { AMU_ABI_UAV_FORMAT_TYPELESS, AMU_ABI_UAV_FORMAT_FLOAT,
- AMU_ABI_UAV_FORMAT_UNORM, AMU_ABI_UAV_FORMAT_SNORM, AMU_ABI_UAV_FORMAT_UINT,
- AMU_ABI_UAV_FORMAT_SINT, AMU_ABI_UAV_FORMAT_SHORT, AMU_ABI_UAV_FORMAT_BYTE };
-
-static const uint CachedFetchConst64[SC_R800_MAX_UAV] =
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174 };
-
-static const uint CachedFetchConst128[SC_R800_MAX_UAV] =
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175 };
-
-bool
-NullKernel::r800CreateHwInfo(const void* shader, AMUabiAddEncoding& encoding)
-{
- CALProgramInfoEntry* newInfos;
- const Options options(nullDev().calTarget());
- uint i = 0;
- uint numShaderEngines = 1;
- if ((nullDev().calTarget() == CAL_TARGET_CAYMAN) ||
- (nullDev().calTarget() == CAL_TARGET_CYPRESS) ||
- (nullDev().calTarget() == CAL_TARGET_BARTS)) {
- numShaderEngines = 2;
- }
-
- uint infoCount = NUM_R800_CS_INFOS;
- SC_R800CSHWSHADER* cShader = (SC_R800CSHWSHADER *)shader;
- if (cShader->u32NumThreadPerGroup == 0) {
- return false;
- }
- newInfos = new CALProgramInfoEntry[infoCount];
- encoding.progInfos = newInfos;
- if (encoding.progInfos == 0) {
- infoCount = 0;
- return false;
- }
- memset(newInfos, 0, infoCount * sizeof(CALProgramInfoEntry));
-
- newInfos[i].address = mmSQ_PGM_START_LS;
- newInfos[i].value = 0x0;
- i++;
- newInfos[i].address = mmSQ_PGM_RESOURCES_LS;
- cShader->sqPgmResourcesCs.bits.UNCACHED_FIRST_INST = 1;
- cShader->sqPgmResourcesCs.bits.PRIME_CACHE_ENABLE = 1;
- cShader->sqPgmResourcesCs.bits.PRIME_CACHE_ON_CONST = 0;
- newInfos[i].value = cShader->sqPgmResourcesCs.u32All;
- i++;
- newInfos[i].address = mmSQ_PGM_RESOURCES_2_LS;
- newInfos[i].value = cShader->sqPgmResources2Cs.u32All;
- i++;
-
- newInfos[i].address = mmSPI_THREAD_GROUPING;
- regSPI_THREAD_GROUPING spi_thread_grouping;
- spi_thread_grouping.u32All = 0;
- spi_thread_grouping.bits.PS_GROUPING = 0;
- spi_thread_grouping.bits.VS_GROUPING = 0;
- spi_thread_grouping.bits.ES_GROUPING = 0;
- spi_thread_grouping.bits.GS_GROUPING = 0;
- // dyn_gpr_mgmt if CS_GROUPING = 1.
- spi_thread_grouping.bits.CS_GROUPING = 0;
- newInfos[i].value = spi_thread_grouping.u32All;
- i++;
-
- const unsigned int numSharedGPR = cShader->u32NumSharedGprTotal;
- newInfos[i].address = mmSQ_DYN_GPR_CNTL_PS_FLUSH_REQ;
- regSQ_DYN_GPR_CNTL_PS_FLUSH_REQ sq_dyn_gpr_cntl_ps_flush_req;
- sq_dyn_gpr_cntl_ps_flush_req.u32All = 0;
- sq_dyn_gpr_cntl_ps_flush_req.bits.RING0_OFFSET = numSharedGPR;
- newInfos[i].value = sq_dyn_gpr_cntl_ps_flush_req.u32All;
- i++;
-
- const unsigned int numClauseTemps = options.numClauseTemps_;
- const unsigned int MaxNumGPRsAvail = options.numGPRs_;
- newInfos[i].address = mmSQ_GPR_RESOURCE_MGMT_1;
- regSQ_GPR_RESOURCE_MGMT_1 sq_gpr_resource_mgmt_1;
- sq_gpr_resource_mgmt_1.u32All = 0;
- sq_gpr_resource_mgmt_1.bits.NUM_CLAUSE_TEMP_GPRS = numClauseTemps;
- newInfos[i].value = sq_gpr_resource_mgmt_1.u32All;
- i++;
-
- newInfos[i].address = mmSQ_GPR_RESOURCE_MGMT_3__EG;
- regSQ_GPR_RESOURCE_MGMT_3__EG sq_gpr_resource_mgmt_3;
- sq_gpr_resource_mgmt_3.u32All = 0;
- {
- const unsigned int numWavefrontPerSIMD = 1 ; // ?? cShader->u32NumWavefrontPerSIMD;
- if ((cShader->u32NumSharedGprUser != cShader->u32NumSharedGprTotal)) // cShader->bIsMaxNumWavePerSIMD)
- {
- // if running with a barrier, need to limit the number of wavefronts on a SIMD.
- // force max wavefronts run on a simd by adjusting the num_es_gprs pool that all es programs can
- // allocate from. (# of gprs the program uses * numWavefrontsPerSIMD)
- sq_gpr_resource_mgmt_3.bits.NUM_LS_GPRS = cShader->sqPgmResourcesCs.bits.NUM_GPRS * numWavefrontPerSIMD;
- }
- else
- {
- sq_gpr_resource_mgmt_3.bits.NUM_LS_GPRS = MaxNumGPRsAvail - numSharedGPR;
- }
- }
- newInfos[i].value = sq_gpr_resource_mgmt_3.u32All;
- i++;
-
- newInfos[i].address = mmSPI_GPR_MGMT;
- regSPI_GPR_MGMT spi_gpr_mgmt;
- spi_gpr_mgmt.u32All = 0;
- {
- const unsigned int numWavefrontPerSIMD = 1 ; // ?? cShader->u32NumWavefrontPerSIMD;
- if ((cShader->u32NumSharedGprUser != cShader->u32NumSharedGprTotal)) // cShader->bIsMaxNumWavePerSIMD)
- {
- // if running with a barrier, need to limit the number of wavefronts on a SIMD.
- // force max wavefronts run on a simd by adjusting the num_es_gprs pool that all es programs can
- // allocate from. (# of gprs the program uses * numWavefrontsPerSIMD)
- spi_gpr_mgmt.bits.NUM_LS_GPRS = (cShader->sqPgmResourcesCs.bits.NUM_GPRS * numWavefrontPerSIMD) >> 3;
- }
- else
- {
- spi_gpr_mgmt.bits.NUM_LS_GPRS = (MaxNumGPRsAvail - numSharedGPR) >> 3;
- }
- }
- newInfos[i].value = spi_gpr_mgmt.u32All;
- i++;
-
-
- newInfos[i].address = mmSPI_WAVE_MGMT_1;
- regSPI_WAVE_MGMT_1 spi_wave_mgmt_1;
- spi_wave_mgmt_1.u32All = 0;
- newInfos[i].value = spi_wave_mgmt_1.u32All;
- i++;
-
- newInfos[i].address = mmSPI_WAVE_MGMT_2;
- regSPI_WAVE_MGMT_2 spi_wave_mgmt_2;
- spi_wave_mgmt_2.u32All = 0;
- spi_wave_mgmt_2.bits.NUM_CS_WAVES_ONE_RING = (options.numThreads_) >> 3;
- newInfos[i].value = spi_wave_mgmt_2.u32All;
- i++;
-
- newInfos[i].address = mmSQ_THREAD_RESOURCE_MGMT__EG;
- regSQ_THREAD_RESOURCE_MGMT__EG sq_thread_resource_mgmt;
- sq_thread_resource_mgmt.u32All = 0;
- sq_thread_resource_mgmt.bits.NUM_PS_THREADS = 0;
- sq_thread_resource_mgmt.bits.NUM_VS_THREADS = 0;
- sq_thread_resource_mgmt.bits.NUM_GS_THREADS = 0;
- sq_thread_resource_mgmt.bits.NUM_ES_THREADS = 0;
- newInfos[i].value = sq_thread_resource_mgmt.u32All;
- i++;
-
- newInfos[i].address = mmSQ_THREAD_RESOURCE_MGMT_2__EG;
- regSQ_THREAD_RESOURCE_MGMT_2__EG sq_thread_resource_mgmt_2;
- sq_thread_resource_mgmt_2.u32All = 0;
- sq_thread_resource_mgmt_2.bits.NUM_HS_THREADS = 0;
- sq_thread_resource_mgmt_2.bits.NUM_LS_THREADS = options.numThreads_;
- newInfos[i].value = sq_thread_resource_mgmt_2.u32All;
- i++;
-
- regSPI_COMPUTE_INPUT_CNTL spi_dompute_input_cntl;
- spi_dompute_input_cntl.u32All = 0;
- spi_dompute_input_cntl.bits.DISABLE_INDEX_PACK = 1;
- spi_dompute_input_cntl.bits.TID_IN_GROUP_ENA = 1;
- spi_dompute_input_cntl.bits.TGID_ENA = 1;
- newInfos[i].address = mmSPI_COMPUTE_INPUT_CNTL;
- newInfos[i].value = spi_dompute_input_cntl.u32All;
- i++;
-
- newInfos[i].address = mmSQ_LDS_ALLOC;
- newInfos[i].value = cShader->sqLdsAllocCs.u32All;
- i++;
-
- //This is information passed from SC to GSL, there is no valid address, so make up one.
- newInfos[i].address = AMU_ABI_CS_MAX_SCRATCH_REGS;
- newInfos[i].value = cShader->MaxScratchRegsNeeded;
- i++;
- newInfos[i].address = AMU_ABI_CS_NUM_SHARED_GPR_USER;
- newInfos[i].value = cShader->u32NumSharedGprUser;
- i++;
- newInfos[i].address = AMU_ABI_CS_NUM_SHARED_GPR_TOTAL;
- newInfos[i].value = cShader->u32NumSharedGprTotal;
- i++;
- newInfos[i].address = AMU_ABI_NUM_THREAD_PER_GROUP;
- newInfos[i].value = cShader->u32NumThreadPerGroup;
- i++;
- newInfos[i].address = AMU_ABI_NUM_THREAD_PER_GROUP_X;
- newInfos[i].value = cShader->u32NumThreadPerGroup_x;
- i++;
- newInfos[i].address = AMU_ABI_NUM_THREAD_PER_GROUP_Y;
- newInfos[i].value = cShader->u32NumThreadPerGroup_y;
- i++;
- newInfos[i].address = AMU_ABI_NUM_THREAD_PER_GROUP_Z;
- newInfos[i].value = cShader->u32NumThreadPerGroup_z;
- i++;
- newInfos[i].address = AMU_ABI_TOTAL_NUM_THREAD_GROUP;
- newInfos[i].value = cShader->u32TotalNumThreadGroup;
- i++;
- newInfos[i].address = AMU_ABI_NUM_WAVEFRONT_PER_SIMD;
- newInfos[i].value = 1;
- i++;
- newInfos[i].address = AMU_ABI_IS_MAX_NUM_WAVE_PER_SIMD;
- newInfos[i].value = 0; // ??
- i++;
- newInfos[i].address = AMU_ABI_SET_BUFFER_FOR_NUM_GROUP;
- newInfos[i].value = cShader->bSetBufferForNumGroup;
- i++;
- newInfos[i].address = AMU_ABI_RAT_OP_IS_USED;
- newInfos[i].value = cShader->u32RatOpIsUsed;
- i++;
- newInfos[i].address = AMU_ABI_RAT_ATOMIC_OP_IS_USED;
- newInfos[i].value = cShader->u32RatAtomicOpIsUsed;
- i++;
- newInfos[i].address = AMU_ABI_WAVEFRONT_SIZE;
- newInfos[i].value = nullDev().hwInfo()->simdWidth_ * 4;
- i++;
- newInfos[i].address = AMU_ABI_NUM_GPR_AVAIL;
- newInfos[i].value = options.numGPRs_;
- i++;
- newInfos[i].address = AMU_ABI_NUM_GPR_USED;
- newInfos[i].value = cShader->sqPgmResourcesCs.bits.NUM_GPRS;
- i++;
- newInfos[i].address = AMU_ABI_LDS_SIZE_AVAIL;
- newInfos[i].value = options.ldsSize_;
- i++;
- newInfos[i].address = AMU_ABI_LDS_SIZE_USED;
- newInfos[i].value = cShader->sqLdsAllocCs.bits.SIZE;
- i++;
- newInfos[i].address = AMU_ABI_STACK_SIZE_AVAIL;
- newInfos[i].value = options.numStackEntries_;
- i++;
- newInfos[i].address = AMU_ABI_STACK_SIZE_USED;
- newInfos[i].value = cShader->sqPgmResourcesCs.bits.STACK_SIZE;
- i++;
-
- for (unsigned int j = 0;j scUavRtnBufInfoTbl[j].stride;
-
- bufferSize *= 4; // convert from DWORDS to bytes
-
- //
- // multiply by the maximum number of threads in flight at one time
- //
- // 256 waves * 64 threads/wave * 2 shader engines (for 870)
- //
- bufferSize *= nullDev().hwInfo()->simdWidth_ * 4; // threads/wave
- bufferSize *= 256 * 4; // maximum number of waves
-
- bufferSize *= numShaderEngines;
-
- newInfos[i].address = AMU_ABI_SET_BUFFER_FOR_UAV_RET_BUFFER0 + j;
- newInfos[i].value = bufferSize;
- i++;
- }
- newInfos[i].address = AMU_ABI_GLOBAL_RETURN_BUFFER;
- newInfos[i].value = true;
- i++;
- // Always use extended caching with global return buffer
- newInfos[i].address = AMU_ABI_EXTENDED_CACHING;
- newInfos[i].value = true;
- i++;
- newInfos[i].address = AMU_ABI_NUM_GLOBAL_UAV;
- newInfos[i].value = SC_R800_MAX_UAV;
- i++;
- newInfos[i].address = AMU_ABI_NUM_GLOBAL_RETURN_BUFFER;
- newInfos[i].value = R800_GLOBAL_RTN_BUF_LAST;
- i++;
- {
- unsigned int bufferSize = cShader->u32GlobalRtnBufSlot;
-
- bufferSize *= 4; // convert from DWORDS to bytes
-
- //
- // multiply by the maximum number of threads in flight at one time
- //
- // 256 waves * 64 threads/wave * 2 shader engines (for 870)
- //
- bufferSize *= nullDev().hwInfo()->simdWidth_ * 4; // threads/wave
- bufferSize *= 256 * 4; // maximum number of waves
-
- bufferSize *= numShaderEngines;
-
- newInfos[i].address = AMU_ABI_GLOBAL_RETURN_BUFFER_SIZE;
- newInfos[i].value = bufferSize;
- i++;
- }
- {
- unsigned int bufferSize = cShader->u32GlobalRtnBufSlotShort;
-
- bufferSize *= 4; // convert from DWORDS to bytes
-
- //
- // multiply by the maximum number of threads in flight at one time
- //
- // 256 waves * 64 threads/wave * 2 shader engines (for 870)
- //
- bufferSize *= nullDev().hwInfo()->simdWidth_ * 4; // threads/wave
- bufferSize *= 256 * 4; // maximum number of waves
-
- bufferSize *= numShaderEngines;
-
- newInfos[i].address = AMU_ABI_GLOBAL_RETURN_BUFFER_SIZE_SHORT;
- newInfos[i].value = bufferSize;
- i++;
- }
- {
- unsigned int bufferSize = cShader->u32GlobalRtnBufSlotByte;
-
- bufferSize *= 4; // convert from DWORDS to bytes
-
- //
- // multiply by the maximum number of threads in flight at one time
- //
- // 256 waves * 64 threads/wave * 2 shader engines (for 870)
- //
- bufferSize *= nullDev().hwInfo()->simdWidth_ * 4; // threads/wave
- bufferSize *= 256 * 4; // maximum number of waves
-
- bufferSize *= numShaderEngines;
-
- newInfos[i].address = AMU_ABI_GLOBAL_RETURN_BUFFER_SIZE_BYTE;
- newInfos[i].value = bufferSize;
- i++;
- }
- for (unsigned int j = 0; j < SC_R800_MAX_UAV; j++)
- {
- newInfos[i].address = AMU_ABI_OFFSET_TO_UAV0+j;
- newInfos[i].value = j;
- i++;
- }
- for (unsigned int j = 0; j < SC_R800_MAX_UAV; j++)
- {
- // Set up UAV->fetch constant mapping for uncached
- newInfos[i].address = AMU_ABI_UNCACHED_FETCH_CONST_UAV0+j;
- newInfos[i].value = UncachedFetchConst[j];
- i++;
- }
- for (unsigned int j = 0; j < SC_R800_MAX_UAV; j++)
- {
- newInfos[i].address = AMU_ABI_CACHED_FETCH_CONST_UAV0+j;
- newInfos[i].value = CachedFetchConst[j];
- i++;
- }
- for (unsigned int j = 0; j < R800_GLOBAL_RTN_BUF_LAST; j++)
- {
- newInfos[i].address = AMU_ABI_GLOBAL_RETURN_FETCH_CONST0+j;
- newInfos[i].value = GlobalReturnFetchConst[j];
- i++;
- }
- for (unsigned int j = 0; j < R800_GLOBAL_RTN_BUF_LAST; j++)
- {
- newInfos[i].address = AMU_ABI_GLOBAL_RETURN_BUFFER_TYPE0+j;
- newInfos[i].value = GlobalReturnBufferType[j];
- i++;
- }
- for (unsigned int j = 0; j < SC_R800_MAX_UAV; j++)
- {
- newInfos[i].address = AMU_ABI_CACHED_FETCH_CONST64_UAV0+j;
- newInfos[i].value = CachedFetchConst64[j];
- i++;
- }
- for (unsigned int j = 0; j < SC_R800_MAX_UAV; j++)
- {
- newInfos[i].address = AMU_ABI_CACHED_FETCH_CONST128_UAV0+j;
- newInfos[i].value = CachedFetchConst128[j];
- i++;
- }
-
- assert(i == infoCount);
- encoding.progInfosCount = infoCount;
-
- encoding.uavMask.mask[0] = cShader->u32RatOpIsUsed;
- encoding.textData = HWSHADER_Get(cShader, hShaderMemHandle);
- encoding.textSize = cShader->CodeLenInByte;
- instructionCnt_ = encoding.textSize / sizeof(uint32_t);
- encoding.scratchRegisterCount = cShader->MaxScratchRegsNeeded;
-
- uint bufferSize = 0;
- bufferSize = cShader->u32GlobalRtnBufSlot +
- cShader->u32GlobalRtnBufSlotShort + cShader->u32GlobalRtnBufSlotByte;
- bufferSize *= 4; // convert from DWORDS to bytes
-
- //
- // multiply by the maximum number of threads in flight at one time
- //
- // 256 waves * 64 threads/wave * 2 shader engines (for 870)
- //
- bufferSize *= nullDev().hwInfo()->simdWidth_ * 4; // threads/wave
- bufferSize *= 256 * 4; // maximum number of waves
-
- bufferSize *= numShaderEngines;
- encoding.UAVReturnBufferTotalSize = bufferSize;
-
- return true;
-}
-
-} // namespace gpu
-
diff --git a/rocclr/runtime/device/gpu/gpuscsi.cpp b/rocclr/runtime/device/gpu/gpuscsi.cpp
index a8e5524fa1..863b5e62b8 100644
--- a/rocclr/runtime/device/gpu/gpuscsi.cpp
+++ b/rocclr/runtime/device/gpu/gpuscsi.cpp
@@ -125,9 +125,6 @@ NullKernel::siCreateHwInfo(const void* shader, AMUabiAddEncoding& encoding)
assert((i + 4 * (16 - cShader->common.userElementCount)) == NumSiCsInfos);
encoding.progInfosCount = infoCount;
- CALUavMask uavMask;
- memcpy(uavMask.mask, cShader->common.uavResourceUsage, sizeof(CALUavMask));
- encoding.uavMask = uavMask;
encoding.textData = HWSHADER_Get(cShader, common.hShaderMemHandle);
encoding.textSize = cShader->common.codeLenInByte;
instructionCnt_ = encoding.textSize / sizeof(uint32_t);
diff --git a/rocclr/runtime/device/gpu/gpusettings.cpp b/rocclr/runtime/device/gpu/gpusettings.cpp
index 2adbd516c8..8718ad21e4 100644
--- a/rocclr/runtime/device/gpu/gpusettings.cpp
+++ b/rocclr/runtime/device/gpu/gpusettings.cpp
@@ -54,7 +54,6 @@ Settings::Settings()
heapSize_ = GPU_INITIAL_HEAP_SIZE * Mi;
heapSizeGrowth_ = GPU_HEAP_GROWTH_INCREMENT * Mi;
- useAliases_ = false;
imageSupport_ = false;
hwLDSSize_ = 0;
@@ -108,7 +107,6 @@ Settings::Settings()
imageDMA_ = GPU_IMAGE_DMA;
// Disable ASIC specific features by default
- siPlus_ = false;
ciPlus_ = false;
viPlus_ = false;
aiPlus_ = false;
@@ -116,9 +114,6 @@ Settings::Settings()
// Number of compute rings.
numComputeRings_ = 0;
- // Rectangular Linear DRMDMA
- rectLinearDMA_ = false;
-
minWorkloadTime_ = 1; // 0.1 ms
maxWorkloadTime_ = 5000; // 500 ms
@@ -176,68 +171,6 @@ Settings::create(
ModifyMaxWorkload modifyMaxWorkload = {0};
switch (target) {
- case CAL_TARGET_SUMO:
- case CAL_TARGET_SUPERSUMO:
- case CAL_TARGET_WRESTLER:
- // Treat these like Evergreen parts as far as capabilities go
- // Fall through ...
- case CAL_TARGET_DEVASTATOR:
- case CAL_TARGET_SCRAPPER:
- apuSystem_ = true;
- reportFMAF_ = false;
- // For the system that has APU and Win 8, the work load needs to be smaller
- // This is because KMD doesn't have workaround for TDR in Win 8
- // This is needed only for EG/NI because EG/NI is using graphics ring
- modifyMaxWorkload.time = 500; // 50ms
- modifyMaxWorkload.minorVersion = 2; // Win 8
-
- // Add the caps for Trinity here ...
- // Fall through ...
- case CAL_TARGET_CAYMAN:
- // Add the caps for Cayman here ...
- case CAL_TARGET_KAUAI:
- case CAL_TARGET_BARTS:
- case CAL_TARGET_TURKS:
- case CAL_TARGET_CAICOS:
- // Treat these like Evergreen parts as far as capabilities go
- // Fall through ...
- case CAL_TARGET_CYPRESS:
- case CAL_TARGET_JUNIPER:
- case CAL_TARGET_REDWOOD:
- case CAL_TARGET_CEDAR:
- // UAV arena is a pre-SI specific HW feature
- useAliases_ = true;
-
- if (CAL_TARGET_CEDAR == target) {
- // Workaround for SC spill bugs.
- maxWorkGroupSize_ = 128;
- }
- // Get the link library
- libSelector_ = amd::GPU_Library_Evergreen;
-
- // Max alloc size
- maxAllocSize_ = 512 * Mi;
-
- if ((target == CAL_TARGET_CAYMAN) ||
- (target == CAL_TARGET_DEVASTATOR) ||
- (target == CAL_TARGET_SCRAPPER)) {
- rectLinearDMA_ = true;
- }
-
- // Disable KHR_FP64 for Trinity in the mainline
- if ((target == CAL_TARGET_DEVASTATOR) ||
- (target == CAL_TARGET_SCRAPPER)) {
- doublePrecision_ &= !IS_MAINLINE || !flagIsDefault(CL_KHR_FP64);
- }
-
- if (target == CAL_TARGET_CYPRESS) {
- // Float FMA is slower than "multiply + add" because we combine
- // "multiply + add" into mad. MAD is 25% faster than FMA on Cypress,
- // assuming perfect VLIW packing.
- reportFMAF_ = false;
- }
- enableExtension(ClAmdImage2dFromBufferReadOnly);
- break;
case CAL_TARGET_GREENLAND:
//TODO: specific codes for AI
aiPlus_ = true;
@@ -288,7 +221,6 @@ Settings::create(
}
// Fall through ...
case CAL_TARGET_TAHITI:
- siPlus_ = true;
// Cache line size is 64 bytes
cacheLineSize_ = 64;
// L1 cache size is 16KB
@@ -352,11 +284,6 @@ Settings::create(
enableExtension(ClKhrInt64ExtendedAtomics);
}
enableExtension(ClKhrImage2dFromBuffer);
-
- rectLinearDMA_ = true;
-
- // Disable non-aliased(multiUAV) optimization
- assumeAliases_ = true;
break;
default:
assert(0 && "Unknown ASIC type!");
@@ -543,9 +470,6 @@ Settings::override()
numComputeRings_ = GPU_NUM_COMPUTE_RINGS;
}
- if (!flagIsDefault(GPU_ASSUME_ALIASES)) {
- assumeAliases_ = GPU_ASSUME_ALIASES;
- }
if (!flagIsDefault(GPU_RESOURCE_CACHE_SIZE)) {
resourceCacheSize_ = GPU_RESOURCE_CACHE_SIZE * Mi;
}
diff --git a/rocclr/runtime/device/gpu/gpusettings.hpp b/rocclr/runtime/device/gpu/gpusettings.hpp
index fef5a60117..6fe4e974bc 100644
--- a/rocclr/runtime/device/gpu/gpusettings.hpp
+++ b/rocclr/runtime/device/gpu/gpusettings.hpp
@@ -48,7 +48,6 @@ public:
uint stagedXferRead_: 1; //!< Uses a staged buffer read
uint stagedXferWrite_: 1; //!< Uses a staged buffer write
uint disablePersistent_: 1; //!< Disables using persistent memory for staging
- uint useAliases_: 1; //!< Enables global heap aliases in HW
uint imageSupport_: 1; //!< Report images support
uint doublePrecision_: 1; //!< Enables double precision support
uint reportFMAF_: 1; //!< Report FP_FAST_FMAF define in CL program
@@ -57,11 +56,9 @@ public:
uint force32BitOcl20_: 1; //!< Force 32bit apps to take CLANG/HSAIL path on GPU
uint imageDMA_: 1; //!< Enable direct image DMA transfers
uint syncObject_: 1; //!< Enable syncobject
- uint siPlus_: 1; //!< SI and post SI features
uint ciPlus_: 1; //!< CI and post CI features
uint viPlus_: 1; //!< VI and post VI features
uint aiPlus_: 1; //!< AI and post AI features
- uint rectLinearDMA_: 1; //!< Rectangular linear DRMDMA support
uint threadTraceEnable_: 1; //!< Thread trace enable
uint linearPersistentImage_: 1; //!< Allocates linear images in persistent
uint useSingleScratch_: 1; //!< Allocates single scratch per device
@@ -75,6 +72,7 @@ public:
uint hsailDirectSRD_: 1; //!< Controls direct SRD for HSAIL
uint useDeviceQueue_: 1; //!< Submit to separate device queue
uint singleFpDenorm_: 1; //!< Support Single FP Denorm
+ uint reserved_: 3;
};
uint value_;
};
diff --git a/rocclr/runtime/device/gpu/gpuvirtual.cpp b/rocclr/runtime/device/gpu/gpuvirtual.cpp
index 9eb08eaef8..e78f63db50 100644
--- a/rocclr/runtime/device/gpu/gpuvirtual.cpp
+++ b/rocclr/runtime/device/gpu/gpuvirtual.cpp
@@ -405,7 +405,6 @@ VirtualGPU::VirtualGPU(
, vmMems_(NULL)
, numVmMems_(0)
, dmaFlushMgmt_(device)
- , numGrpCb_(NULL)
, hwRing_(0)
, readjustTimeGPU_(0)
, currTs_(NULL)
@@ -624,7 +623,6 @@ VirtualGPU::~VirtualGPU()
for (i = 0; i < constBufs_.size(); ++i) {
delete constBufs_[i];
}
- delete numGrpCb_;
gslDestroy();
@@ -1789,9 +1787,8 @@ VirtualGPU::submitKernelInternalHSA(
// Check if the device allocated more registers than the old setup
if (hsaKernel.workGroupInfo()->scratchRegs_ > 0) {
const Device::ScratchBuffer* scratchObj = dev().scratch(hwRing());
- const std::vector& mems = scratchObj->memObjs_;
- scratch = mems[0]->gslResource();
- memList.push_back(mems[0]);
+ scratch = scratchObj->memObj_->gslResource();
+ memList.push_back(scratchObj->memObj_);
scratchOffset = scratchObj->offset_;
}
@@ -1950,7 +1947,7 @@ VirtualGPU::submitKernelInternalHSA(
// Fill the scratch buffer information
if (hsaKernel.prog().maxScratchRegs() > 0) {
- gpu::Memory* scratchBuf = dev().scratch(gpuDefQueue->hwRing())->memObjs_[0];
+ gpu::Memory* scratchBuf = dev().scratch(gpuDefQueue->hwRing())->memObj_;
param->scratchSize = scratchBuf->size();
param->scratch = scratchBuf->vmAddress();
param->numMaxWaves = 32 * dev().info().maxComputeUnits_;
@@ -2058,23 +2055,7 @@ VirtualGPU::submitKernelInternal(
}
// Find if arguments contain memory aliases or a dependency in the queue
- if (gpuKernelOpt.processMemObjects(*this, kernel, parameters, nativeMem)) {
- // Try to obtain a kernel object without optimization
- noAlias = false;
- devKernel = const_cast
- (kernel.getDeviceKernel(dev(), noAlias));
- if (devKernel == NULL) {
- // We don't have any, so rebuild kernel
- if (!kernel.program().buildNoOpt(dev(), gpuKernelOpt.name())) {
- LogWarning("Kernel recompilation without noAlias failed!");
- noAlias = true;
- }
-
- // Get the GPU kernel object for the final execution
- devKernel = const_cast
- (kernel.getDeviceKernel(dev(), noAlias));
- }
- }
+ gpuKernelOpt.processMemObjects(*this, kernel, parameters, nativeMem);
Kernel& gpuKernel = static_cast(*devKernel);
bool printfEnabled = (gpuKernel.flags() &
@@ -2247,19 +2228,12 @@ VirtualGPU::releaseMemory(gslMemObject gslResource, bool wait)
}
}
- //!@todo optimize unbind
- if (numGrpCb_ != NULL) {
- setConstantBuffer(SC_INFO_CONSTANTBUFFER, NULL, 0, 0);
- }
-
if ((dev().scratch(hwRing()) != NULL) &&
(dev().scratch(hwRing())->regNum_ > 0)) {
// Unbind scratch memory
- const std::vector& mems = dev().scratch(hwRing())->memObjs_;
- for (uint i = 0; i < mems.size(); ++i) {
- if ((mems[i] != NULL) && (mems[i]->gslResource() == gslResource)) {
- setScratchBuffer(NULL, i);
- }
+ const Device::ScratchBuffer* scratch = dev().scratch(hwRing());
+ if ((scratch->memObj_ != NULL) && (scratch->memObj_->gslResource() == gslResource)) {
+ setScratchBuffer(NULL, 0);
}
}
@@ -2812,16 +2786,9 @@ VirtualGPU::releaseMemObjects(bool scratch)
cal_.constBuffers_[i] = 0;
}
}
- //!@todo optimize unbind
- if (numGrpCb_ != NULL) {
- setConstantBuffer(SC_INFO_CONSTANTBUFFER, NULL, 0, 0);
- }
if (scratch) {
- uint numBufs = (dev().settings().siPlus_) ? 1 : dev().info().numberOfShaderEngines;
- for (uint i = 0; i < numBufs; ++i) {
- setScratchBuffer(NULL, i);
- }
+ setScratchBuffer(NULL, 0);
}
gpuEvents_.clear();
@@ -2936,11 +2903,8 @@ VirtualGPU::validateScratchBuffer(const Kernel* kernel)
{
// Check if a scratch buffer is required
if (dev().scratch(hwRing())->regNum_ > 0) {
- const std::vector& mems = dev().scratch(hwRing())->memObjs_;
- for (uint i = 0; i < mems.size(); ++i) {
- // Setup scratch buffer
- setScratchBuffer(mems[i]->gslResource(), i);
- }
+ // Setup scratch buffer
+ setScratchBuffer(dev().scratch(hwRing())->memObj_->gslResource(), 0);
}
}
@@ -2970,12 +2934,6 @@ VirtualGPU::setActiveKernelDesc(
gslKernels_[calImage] = desc;
}
- // Update UAV mask if it has a different set of bits
- if ((activeKernelDesc_ == NULL) ||
- (activeKernelDesc_->uavMask_.mask[0] != desc->uavMask_.mask[0])) {
- setUavMask(desc->uavMask_);
- }
-
// Set the descriptor as active
activeKernelDesc_ = desc;
@@ -3007,13 +2965,8 @@ VirtualGPU::allocConstantBuffers()
{
// Allocate/reallocate constant buffers
size_t minCbSize;
- if (dev().settings().siPlus_) {
- // GCN doesn't really have a limit
- minCbSize = 128 * Ki;
- }
- else {
- minCbSize = 64 * Ki;
- }
+ // GCN doesn't really have a limit
+ minCbSize = 128 * Ki;
uint i;
// Create/reallocate constant buffer resources
@@ -3031,16 +2984,6 @@ VirtualGPU::allocConstantBuffers()
}
}
- // 8xx workaround for num workgroups
- if (!dev().settings().siPlus_) {
- numGrpCb_ = new ConstBuffer(*this, ((minCbSize +
- ConstBuffer::VectorSize - 1) / ConstBuffer::VectorSize));
- if ((numGrpCb_ == NULL) || !numGrpCb_->create()) {
- LogError("Could not allocate num groups constant buffer!");
- return false;
- }
- }
-
return true;
}
@@ -3058,7 +3001,7 @@ VirtualGPU::allocKernelDesc(const Kernel* kernel, CALimage calImage)
desc->image_ = calImage;
}
- if (!moduleLoad(calImage, &desc->func_, &desc->intCb_, &desc->uavMask_)) {
+ if (!moduleLoad(calImage, &desc->func_, &desc->intCb_)) {
LogPrintfError("calModuleLoad failed for \"%s\" kernel!",
kernel->name().c_str());
delete desc;
@@ -3376,7 +3319,7 @@ VirtualGPU::buildKernelInfo(const HSAILKernel& hsaKernel,
// Initialize structure with default values
if (hsaKernel.prog().maxScratchRegs() > 0) {
- gpu::Memory* scratchBuf = dev().scratch(hwRing())->memObjs_[0];
+ gpu::Memory* scratchBuf = dev().scratch(hwRing())->memObj_;
kernelInfo.scratchBufAddr = scratchBuf->vmAddress();
kernelInfo.scratchBufferSizeInBytes = scratchBuf->size();
diff --git a/rocclr/runtime/device/gpu/gpuvirtual.hpp b/rocclr/runtime/device/gpu/gpuvirtual.hpp
index 0af47c19a9..e844830c9e 100644
--- a/rocclr/runtime/device/gpu/gpuvirtual.hpp
+++ b/rocclr/runtime/device/gpu/gpuvirtual.hpp
@@ -89,16 +89,12 @@ public:
typedef std::vector constbufs_t;
- //! \note Legacy pre SI UAV Arena support
- static const uint UavArena = MaxWriteImage; //!< 0-7 reserved for images
-
//! GSL descriptor for the GPU kernel, specific to the virtual device
struct GslKernelDesc : public amd::HeapObject
{
CALimage image_; //!< CAL image for the program
gslProgramObject func_; //!< GSL program object
gslMemObject intCb_; //!< Internal constant buffer
- CALUavMask uavMask_; //!< UAV mask, unclear if necessary
};
struct ResourceSlot
@@ -311,9 +307,6 @@ public:
constbufs_t constBufs_; //!< constant buffers
- //! Returns a resource associated with the constant buffer
- ConstBuffer* numGrpCb() const { return numGrpCb_; }
-
//! Start the command profiling
void profilingBegin(
amd::Command& command, //!< Command queue object
@@ -536,7 +529,6 @@ private:
typedef std::list CommandBatchList;
CommandBatchList cbList_; //!< List of command batches
- ConstBuffer* numGrpCb_; //!< Constant buffer for 8xx workaround
uint hwRing_; //!< HW ring used on this virtual device
uint64_t readjustTimeGPU_; //!< Readjust time between GPU and CPU timestamps
diff --git a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLContext.cpp b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLContext.cpp
index bcbf0c09bd..7cb99b4177 100644
--- a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLContext.cpp
+++ b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLContext.cpp
@@ -16,7 +16,6 @@
#include "shadertracebuffer/ShaderTraceBufferObject.h"
#include "scratchbuffer/ScratchBufferObject.h"
#include "memory/MemObject.h"
-#include "framebuffer/FrameBufferObject.h"
#include
@@ -24,7 +23,6 @@ CALGSLContext::CALGSLContext()
{
m_cs = 0;
m_rs = 0;
- m_fb = 0;
m_allowDMA = false;
COMPILE_TIME_ASSERT((int)MAX_OUTPUTS <= (int)GSL_MAX_OUTPUT);
@@ -96,18 +94,7 @@ CALGSLContext::open(
return false;
}
- m_fb = m_cs->createFrameBuffer();
- if (m_fb == 0)
- {
- m_cs->destroyRenderState(m_rs);
- m_rs = 0;
- native->deleteContext(m_cs);
- m_cs = 0;
- return false;
- }
-
m_cs->setRenderState(m_rs);
- m_rs->setCurrentFrameBufferObject(m_cs, m_fb);
m_cs->createSubAllocDesc();
//
@@ -117,16 +104,7 @@ CALGSLContext::open(
m_rs->setComputeShader(m_cs, true);
m_eventQueue[MainEngine].open(m_cs, GSL_SYNC_ATI, EQConfig);
- if (dev()->uavInCB())
- {
- // Evergreen uses physical mode for DRM engine, so flush 3D pipe wih DRM,
- // thus GSL can get VA ranges back from KMD asap
- m_eventQueue[SdmaEngine].open(m_cs, GSL_DRMDMA_SYNC_ATI, EQConfig);
- }
- else
- {
- m_eventQueue[SdmaEngine].open(m_cs, GSL_DRMDMA_SYNC_ATI, EQConfig, GSL_ENGINE_MASK(GSL_ENGINEID_DRMDMA0) | GSL_ENGINE_MASK(GSL_ENGINEID_DRMDMA1));
- }
+ m_eventQueue[SdmaEngine].open(m_cs, GSL_DRMDMA_SYNC_ATI, EQConfig, GSL_ENGINE_MASK(GSL_ENGINEID_DRMDMA0) | GSL_ENGINE_MASK(GSL_ENGINEID_DRMDMA1));
m_cs->setGPU((gslGPUMask)dev()->getVPUMask());
@@ -166,7 +144,6 @@ CALGSLContext::close(gsl::gsAdaptor* native)
m_cs->Flush();
assert(m_rs != 0);
- assert(m_fb != 0);
m_cs->setRenderState(m_rs);
@@ -210,32 +187,19 @@ CALGSLContext::close(gsl::gsAdaptor* native)
if (m_scratchBuffers != NULL)
{
- if (!dev()->uavInCB())
- {
- m_rs->setScratchBufferObject(GSL_FRAGMENT_PROGRAM, 0);
- m_scratchBuffers->setMemObject(m_cs, 0, 0);
- }
- else
- {
- m_rs->setScratchBufferObject(GSL_COMPUTE_PROGRAM, 0);
- for (int i = 0; i < MAX_SHADERENGINES; i++)
- {
- m_scratchBuffers->setMemObject(m_cs, 0, i);
- }
- }
+ //!@todo it should be GSL_COMPUTE_PROGRAM
+ m_rs->setScratchBufferObject(GSL_FRAGMENT_PROGRAM, 0);
+ m_scratchBuffers->setMemObject(m_cs, 0, 0);
m_cs->destroyScratchBuffer(m_scratchBuffers);
m_scratchBuffers = 0;
}
- m_rs->setCurrentFrameBufferObject(m_cs, 0);
m_cs->setRenderState(0);
- m_cs->destroyFrameBuffer(m_fb);
m_cs->destroyRenderState(m_rs);
m_cs->destroySubAllocDesc();
m_rs = 0;
- m_fb = 0;
for (uint32 i = 0; i < AllEngines; ++i)
{
@@ -293,65 +257,26 @@ CALGSLContext::setConstantBuffer(uint32 physUnit, gslMemObject mem, uint32 offse
bool
CALGSLContext::setUAVBuffer(uint32 physUnit, gslMemObject mem, gslUAVType uavType)
{
- if (!dev()->uavInCB()) // SI
- {
- assert(physUnit < MAX_UAVS);
+ assert(physUnit < MAX_UAVS);
- if (m_uavResources[physUnit] == 0)
- {
- m_uavResources[physUnit] = m_cs->createUAVObject();
- m_rs->setUavObject(m_cs, GSL_COMPUTE_PROGRAM, m_uavResources[physUnit], GSL_UAV0 + physUnit);
- }
- m_uavResources[physUnit]->setMemObject(m_cs, mem, uavType);
- m_uavResources[physUnit]->setRSOBindings(m_cs, GSL_COMPUTE_PROGRAM);
- }
- else
+ if (m_uavResources[physUnit] == 0)
{
- assert(physUnit < MAX_OUTPUTS);
- m_fb->setColorBufferMemory(m_cs, mem, physUnit, true);
+ m_uavResources[physUnit] = m_cs->createUAVObject();
+ m_rs->setUavObject(m_cs, GSL_COMPUTE_PROGRAM, m_uavResources[physUnit], GSL_UAV0 + physUnit);
}
+ m_uavResources[physUnit]->setMemObject(m_cs, mem, uavType);
+ m_uavResources[physUnit]->setRSOBindings(m_cs, GSL_COMPUTE_PROGRAM);
return true;
}
-void
-CALGSLContext::setUavMask(const CALUavMask& uavMask)
-{
- // Only do this if UAV in the Color Buffer block
- if (dev()->uavInCB())
- {
- int count = 0;
- for (int i = 0; i < MAX_OUTPUTS; i++)
- {
- m_drawBuffers.buffer[i] = GSL_COLOR_NONE;
- if (uavMask.mask[0] & (1 << i))
- {
- m_drawBuffers.buffer[count] = static_cast(GSL_COLOR_BUFFER0 + i);
- ++count;
- }
- }
- m_fb->setDrawBuffers(m_cs, m_drawBuffers);
- }
-}
-
void
CALGSLContext::setUAVChannelOrder(uint32 physUnit, gslMemObject mem)
{
- if (!dev()->uavInCB()) // SI
- {
- assert(physUnit < MAX_UAVS);
- intp channelOrder = mem->getAttribs().channelOrder;
- dev()->convertInputChannelOrder(&channelOrder);
- m_uavResources[physUnit]->setParameter(GSL_UAV_RESOURCE_SWIZZLE, &channelOrder);
- }
- else
- {
- assert(physUnit < MAX_OUTPUTS);
- int32 channelOrder[2];
- channelOrder[0] = mem->getAttribs().channelOrder;
- channelOrder[1] = physUnit;
- m_fb->setChannelOrder(m_cs, (const int32*) channelOrder);
- }
+ assert(physUnit < MAX_UAVS);
+ intp channelOrder = mem->getAttribs().channelOrder;
+ dev()->convertInputChannelOrder(&channelOrder);
+ m_uavResources[physUnit]->setParameter(GSL_UAV_RESOURCE_SWIZZLE, &channelOrder);
}
bool
@@ -394,8 +319,8 @@ CALGSLContext::setScratchBuffer(gslMemObject mem, int32 engineId)
// independent of program type and number of shader engineers.
// For consistency with GSL, We will store the buffer under the
// fragment program type for shader engine 0.
- gslProgramTargetEnum target =
- (!dev()->uavInCB()) ? GSL_FRAGMENT_PROGRAM : GSL_COMPUTE_PROGRAM;
+ //!@tod should be GSL_COMPUTE_PROGRAM
+ gslProgramTargetEnum target = GSL_FRAGMENT_PROGRAM;
gslScratchBufferObject scratchBuff = (mem != NULL) ? m_scratchBuffers : NULL;
m_rs->setScratchBufferObject(target, m_scratchBuffers);
@@ -550,7 +475,7 @@ CALGSLContext::setSamplerParameter(uint32 sampler, gslTexParameterPname param, v
bool
CALGSLContext::moduleLoad(CALimage image,
- gslProgramObject* func, gslMemObject* constants, CALUavMask* uavMask)
+ gslProgramObject* func, gslMemObject* constants)
{
AMUabiMultiBinary binary;
AMUabiEncoding encoding;
@@ -586,8 +511,6 @@ CALGSLContext::moduleLoad(CALimage image,
}
(*func)->programStringARB(m_cs, GSL_COMPUTE_PROGRAM, GSL_PROGRAM_FORMAT_ELF_BINARY, 0, image);
- amuABIEncodingGetUAVMask(uavMask, encoding);
-
// Setup the loop constants from the ELF binary int const area.
CALuint numConstants = 0;
CALuint maxPhysical = 0;
diff --git a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLContext.h b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLContext.h
index c2fb25a340..61b77c9435 100644
--- a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLContext.h
+++ b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLContext.h
@@ -36,7 +36,6 @@ public:
bool setOutput(uint32 physUnit, gslMemObject mem);
bool setConstantBuffer(uint32 physUnit, gslMemObject mem, CALuint offset, size_t size);
bool setUAVBuffer(uint32 physUnit, gslMemObject mem, gslUAVType uavType);
- void setUavMask(const CALUavMask& uavMask);
void setUAVChannelOrder(uint32 physUnit, gslMemObject mem);
bool isDone(GpuEvent* event);
void waitForEvent(GpuEvent* event);
@@ -63,7 +62,7 @@ public:
bool recompileShader(CALimage srcImage, CALimage* newImage, const CALuint type);
bool getMachineType(CALuint* pMachine, CALuint* pType, CALimage image);
- bool moduleLoad(CALimage image, gslProgramObject* func, gslMemObject* constants, CALUavMask* uavMask);
+ bool moduleLoad(CALimage image, gslProgramObject* func, gslMemObject* constants);
gsl::gsCtx* cs() const { return m_cs; }
gslRenderState rs() const { return m_rs; }
@@ -99,7 +98,6 @@ private:
gslTextureResourceObject m_textureResources[MAX_RESOURCES];
gslSamplerObject m_textureSamplers[MAX_SAMPLERS];
gslDrawBuffers m_drawBuffers;
- gslFramebufferObject m_fb;
gslScratchBufferObject m_scratchBuffers;
EventQueue m_eventQueue[AllEngines];
bool m_allowDMA;
diff --git a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp
index 06c11390c9..32a3ed2c80 100644
--- a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp
+++ b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.cpp
@@ -406,50 +406,6 @@ CALGSLDevice::SetupContext(int32 &asic_id)
switch (asic_id)
{
- case GSL_ATIASIC_ID_R870:
- m_target = CAL_TARGET_CYPRESS;
- m_elfmachine = ED_ATI_CAL_MACHINE_CYPRESS_ISA;
- break;
- case GSL_ATIASIC_ID_R830:
- m_target = CAL_TARGET_JUNIPER;
- m_elfmachine = ED_ATI_CAL_MACHINE_JUNIPER_ISA;
- break;
- case GSL_ATIASIC_ID_REDWOOD:
- m_target = CAL_TARGET_REDWOOD;
- m_elfmachine = ED_ATI_CAL_MACHINE_REDWOOD_ISA;
- break;
- case GSL_ATIASIC_ID_CEDAR:
- m_target = CAL_TARGET_CEDAR;
- m_elfmachine = ED_ATI_CAL_MACHINE_CEDAR_ISA;
- break;
- case GSL_ATIASIC_ID_CAYMAN:
- m_target = CAL_TARGET_CAYMAN;
- m_elfmachine = ED_ATI_CAL_MACHINE_CAYMAN_ISA;
- break;
- case GSL_ATIASIC_ID_BARTS:
- m_target = CAL_TARGET_BARTS;
- m_elfmachine = ED_ATI_CAL_MACHINE_BARTS_ISA;
- break;
- case GSL_ATIASIC_ID_TURKS:
- m_target = CAL_TARGET_TURKS;
- m_elfmachine = ED_ATI_CAL_MACHINE_TURKS_ISA;
- break;
- case GSL_ATIASIC_ID_CAICOS:
- m_target = CAL_TARGET_CAICOS;
- m_elfmachine = ED_ATI_CAL_MACHINE_CAICOS_ISA;
- break;
- case GSL_ATIASIC_ID_SUMO:
- m_target = CAL_TARGET_SUMO;
- m_elfmachine = ED_ATI_CAL_MACHINE_SUMO_ISA;
- break;
- case GSL_ATIASIC_ID_SUPERSUMO:
- m_target = CAL_TARGET_SUPERSUMO;
- m_elfmachine = ED_ATI_CAL_MACHINE_SUPERSUMO_ISA;
- break;
- case GSL_ATIASIC_ID_WRESTLER:
- m_target = CAL_TARGET_WRESTLER;
- m_elfmachine = ED_ATI_CAL_MACHINE_WRESTLER_ISA;
- break;
case GSL_ATIASIC_ID_TAHITI_P:
m_target = CAL_TARGET_TAHITI;
m_elfmachine = ED_ATI_CAL_MACHINE_TAHITI_ISA;
@@ -462,14 +418,6 @@ CALGSLDevice::SetupContext(int32 &asic_id)
m_target = CAL_TARGET_CAPEVERDE;
m_elfmachine = ED_ATI_CAL_MACHINE_CAPEVERDE_ISA;
break;
- case GSL_ATIASIC_ID_DEVASTATOR:
- m_target = CAL_TARGET_DEVASTATOR;
- m_elfmachine = ED_ATI_CAL_MACHINE_DEVASTATOR_ISA;
- break;
- case GSL_ATIASIC_ID_SCRAPPER:
- m_target = CAL_TARGET_SCRAPPER;
- m_elfmachine = ED_ATI_CAL_MACHINE_SCRAPPER_ISA;
- break;
case GSL_ATIASIC_ID_OLAND_M:
m_target = CAL_TARGET_OLAND;
m_elfmachine = ED_ATI_CAL_MACHINE_OLAND_ISA;
@@ -623,7 +571,6 @@ CALGSLDevice::PerformFullInitialization_int()
m_PerformLazyDeviceInit = false;
- m_uavInCB = m_cs->getIsUAVInCB();
m_textureResource = m_cs->createTextureResource();
m_textureSampler = m_cs->createSampler();
}
@@ -1537,17 +1484,10 @@ CALGSLDevice::calcScratchBufferSize(uint32 regNum) const
memset(scratchBufferSizes, 0, sizeof(scratchBufferSizes));
uint32 enabledShadersFlag = 0;
- if (!uavInCB())
- {
- enabledShadersFlag |= CM_FRAGMENT_SHADER_BIT;
- scratchSpacePerShaderStage.scratchSpace[CM_FRAGMENT_SHADER] = regNum;
- target = GSL_FRAGMENT_PROGRAM;
- }
- else
- {
- enabledShadersFlag |= CM_COMPUTE_SHADER_BIT;
- scratchSpacePerShaderStage.scratchSpace[CM_COMPUTE_SHADER] = regNum;
- }
+ //!@todo should be CM_COMPUTE_SHADER
+ enabledShadersFlag |= CM_FRAGMENT_SHADER_BIT;
+ scratchSpacePerShaderStage.scratchSpace[CM_FRAGMENT_SHADER] = regNum;
+ target = GSL_FRAGMENT_PROGRAM;
m_cs->CalcAllScratchBufferSizes(enabledShadersFlag, scratchSpacePerShaderStage,
scratchBufferSizes);
diff --git a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.h b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.h
index 5cc9cdcd50..adeecc2006 100644
--- a/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.h
+++ b/rocclr/runtime/device/gpu/gslbe/src/rt/GSLDevice.h
@@ -100,7 +100,6 @@ public:
bool isVmMode() const { return m_vmMode; };
uint32 getVPUMask() const { return m_vpuMask; }
- bool uavInCB() const { return m_uavInCB; }
bool canDMA() const { return m_canDMA; }
gslMemObject m_srcDRMDMAMem, m_dstDRMDMAMem; // memory object of flush buffer, used for DRMDMA flush
@@ -213,7 +212,6 @@ private:
uint m_usePerVPUAdapterModel : 1;
uint m_PerformLazyDeviceInit : 1;
uint m_vmMode : 1;
- uint m_uavInCB : 1;
uint m_isComputeRingIDForced : 1;
};
};
diff --git a/rocclr/runtime/platform/program.cpp b/rocclr/runtime/platform/program.cpp
index 7d2cd85e87..08cd81d341 100644
--- a/rocclr/runtime/platform/program.cpp
+++ b/rocclr/runtime/platform/program.cpp
@@ -467,7 +467,7 @@ Program::build(
devProgram = getDeviceProgram(**it);
}
- parsedOptions.oVariables->AssumeAlias = (*it)->settings().assumeAliases_;
+ parsedOptions.oVariables->AssumeAlias = true;
// We only build a Device-Program once
if (devProgram->buildStatus() != CL_BUILD_NONE) {
diff --git a/rocclr/runtime/utils/flags.hpp b/rocclr/runtime/utils/flags.hpp
index ab29641f09..fb803782d9 100644
--- a/rocclr/runtime/utils/flags.hpp
+++ b/rocclr/runtime/utils/flags.hpp
@@ -140,8 +140,6 @@ release(bool, DRMDMA_FOR_LNX_CF, false, \
"Enable DRMDMA for Linux CrossFire") \
release(bool, GPU_HSAIL_ENABLE, false, \
"Enable HSAIL on dGPU stack (requires CI+ HW)") \
-release(bool, GPU_ASSUME_ALIASES, false, \
- "Assume memory aliases in the compilation process") \
release(uint, GPU_PRINT_CHILD_KERNEL, 0, \
"Prints the specified number of the child kernels") \
release(bool, GPU_DIRECT_SRD, false, \