@@ -771,19 +771,20 @@ bool COpenCLKernel::CreateZEPayloadArguments(IGC::KernelArg *kernelArg, uint pay
771771 case KernelArg::ArgType::BINDLESS_IMAGE_CUBE_ARRAY:
772772 case KernelArg::ArgType::IMAGE_CUBE_DEPTH_ARRAY:
773773 case KernelArg::ArgType::BINDLESS_IMAGE_CUBE_DEPTH_ARRAY: {
774- // the image arg is either bindless or stateful. check from "kernelArg->needsAllocation()"
774+ // the image arg is either bindless or stateful.
775775 // For stateful image argument, the arg has 0 offset and 0 size
776- zebin::PreDefinedAttrGetter::ArgAddrMode arg_addrmode = zebin::PreDefinedAttrGetter::ArgAddrMode::stateful;
776+ zebin::PreDefinedAttrGetter::ArgAddrMode arg_addrmode = m_ModuleMetadata->UseBindlessImage
777+ ? zebin::PreDefinedAttrGetter::ArgAddrMode::bindless
778+ : zebin::PreDefinedAttrGetter::ArgAddrMode::stateful;
777779 uint arg_off = 0 ;
778780 uint arg_size = 0 ;
779781
780782 int arg_idx = kernelArg->getAssociatedArgNo ();
781783 if (kernelArg->needsAllocation ()) {
782- // set to bindless
783- arg_addrmode = zebin::PreDefinedAttrGetter::ArgAddrMode::bindless;
784+ // bindless
784785 arg_off = payloadPosition;
785786 arg_size = kernelArg->getSize ();
786- } else {
787+ } else if (arg_addrmode == zebin::PreDefinedAttrGetter::ArgAddrMode::stateful) {
787788 // add bti index for this arg if it's stateful
788789 SOpenCLKernelInfo::SResourceInfo resInfo = getResourceInfo (arg_idx);
789790 zebin::ZEInfoBuilder::addBindingTableIndex (m_kernelInfo.m_zeBTIArgs , getBTI (resInfo), arg_idx);
@@ -904,15 +905,16 @@ bool COpenCLKernel::CreateZEPayloadArguments(IGC::KernelArg *kernelArg, uint pay
904905 // sampler
905906 case KernelArg::ArgType::SAMPLER:
906907 case KernelArg::ArgType::BINDLESS_SAMPLER: {
907- // the sampler arg is either bindless or stateful. check from "kernelArg->needsAllocation()"
908+ // the sampler arg is either bindless or stateful.
908909 // For stateful image argument, the arg has 0 offset and 0 size
909910 // NOTE: we only have stateful sampler now
910- zebin::PreDefinedAttrGetter::ArgAddrMode arg_addrmode = zebin::PreDefinedAttrGetter::ArgAddrMode::stateful;
911+ zebin::PreDefinedAttrGetter::ArgAddrMode arg_addrmode = m_ModuleMetadata->UseBindlessImage
912+ ? zebin::PreDefinedAttrGetter::ArgAddrMode::bindless
913+ : zebin::PreDefinedAttrGetter::ArgAddrMode::stateful;
911914 uint arg_off = 0 ;
912915 uint arg_size = 0 ;
913916 if (kernelArg->needsAllocation ()) {
914- // set to bindless
915- arg_addrmode = zebin::PreDefinedAttrGetter::ArgAddrMode::bindless;
917+ // bindless
916918 arg_off = payloadPosition;
917919 arg_size = kernelArg->getSize ();
918920 }
0 commit comments