2
0

SWDEV-545273 - Respect HIP_LAUNCH_PARAM_BUFFER_SIZE (#770)

Este cometimento está contido em:
Betigeri, Sourabh
2025-08-03 17:32:52 -07:00
cometido por GitHub
ascendente 1492328894
cometimento 2a02d2c2f3
5 ficheiros modificados com 35 adições e 19 eliminações
+8 -9
Ver ficheiro
@@ -104,21 +104,20 @@ address KernelParameters::alloc(device::VirtualDevice& vDev) {
}
// =================================================================================================
bool KernelParameters::captureAndSet(void** kernelParams, address kernArgs, address mem) {
bool KernelParameters::captureAndSet(void** kernelParams, address kernArgs, size_t kernArgsSize,
address mem) {
amd::Memory** memories = reinterpret_cast<amd::Memory**>(mem + memoryObjOffset());
for (size_t idx = 0; idx < signature_.numParameters(); ++idx) {
KernelParameterDescriptor& desc = signature_.params()[idx];
void* value = nullptr;
if (kernelParams != nullptr) {
value = kernelParams[idx];
} else {
value = kernArgs + desc.offset_;
}
void* value = kernelParams ? kernelParams[idx] : kernArgs + desc.offset_;
void* param = mem + desc.offset_;
uint32_t uint32_value = 0;
uint64_t uint64_value = 0;
// if using the 'extra' path and this parameter lies beyond supplied size, write zero
if (kernelParams == nullptr && ((desc.offset_ + desc.size_) > kernArgsSize)) {
value = &uint64_value;
}
Memory* memArg = nullptr;
amd::Memory** memories = reinterpret_cast<amd::Memory**>(mem + memoryObjOffset());
if (desc.type_ == T_POINTER && (desc.addressQualifier_ != CL_KERNEL_ARG_ADDRESS_LOCAL)) {
LP64_SWITCH(uint32_value, uint64_value) = *(LP64_SWITCH(uint32_t*, uint64_t*))value;
memArg = amd::MemObjMap::FindMemObj(*reinterpret_cast<const void* const*>(value));