mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 09:14:47 +08:00
fix: store image arg size in kernel descriptor
- use arg size when patching bindless offset Related-To: HSD-18042502539 Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
e3fecb932a
commit
b7580a3998
@@ -827,7 +827,7 @@ ze_result_t KernelImp::setArgImage(uint32_t argIndex, size_t argSize, const void
|
||||
auto ssInHeap = image->getBindlessSlot();
|
||||
auto patchLocation = ptrOffset(getCrossThreadData(), arg.bindless);
|
||||
auto bindlessSlotOffset = ssInHeap->surfaceStateOffset;
|
||||
uint32_t patchSize = this->heaplessEnabled ? 8u : 4u;
|
||||
uint32_t patchSize = NEO::isUndefined(arg.size) ? 0 : arg.size;
|
||||
uint64_t patchValue = this->heaplessEnabled
|
||||
? bindlessSlotOffset
|
||||
: gfxCoreHelper.getBindlessSurfaceExtendedMessageDescriptorValue(static_cast<uint32_t>(bindlessSlotOffset));
|
||||
|
||||
@@ -1320,6 +1320,7 @@ DecodeError populateKernelPayloadArgument(NEO::KernelDescriptor &dst, const Kern
|
||||
dst.kernelAttributes.numArgsStateful++;
|
||||
} else if (dst.payloadMappings.explicitArgs[src.argIndex].is<NEO::ArgDescriptor::argTImage>()) {
|
||||
dst.payloadMappings.explicitArgs[src.argIndex].as<ArgDescImage>(false).bindless = src.offset;
|
||||
dst.payloadMappings.explicitArgs[src.argIndex].as<ArgDescImage>(false).size = src.size;
|
||||
dst.kernelAttributes.numArgsStateful++;
|
||||
} else {
|
||||
dst.payloadMappings.explicitArgs[src.argIndex].as<ArgDescSampler>(false).bindless = src.offset;
|
||||
|
||||
@@ -105,6 +105,7 @@ struct ArgDescImage final {
|
||||
CrossThreadDataOffset flatPitch = undefined<CrossThreadDataOffset>;
|
||||
} metadataPayload;
|
||||
NEOImageType imageType;
|
||||
uint8_t size = undefined<uint8_t>;
|
||||
};
|
||||
|
||||
struct ArgDescSampler final {
|
||||
|
||||
@@ -177,7 +177,7 @@ kernels:
|
||||
sampler_index: 0
|
||||
- arg_type: arg_bypointer
|
||||
offset: 0
|
||||
size: 0
|
||||
size: 4
|
||||
arg_index: 3
|
||||
addrmode: stateful
|
||||
addrspace: image
|
||||
|
||||
@@ -4843,6 +4843,7 @@ TEST_F(decodeZeInfoKernelEntryTest, GivenPointerArgWhenMemoryAddressingModeIsKno
|
||||
break;
|
||||
case AddressingMode::memoryAddressingModeBindless:
|
||||
EXPECT_EQ(24U, argAsImage.bindless);
|
||||
EXPECT_EQ(8U, argAsImage.size);
|
||||
EXPECT_EQ(32U, argAsSampler.bindless);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user