From e08570fd2aa2bbe5bb374bee6be6bb7b7c5a1748 Mon Sep 17 00:00:00 2001 From: Hans-Kristian Arntzen Date: Tue, 31 May 2022 17:41:29 +0200 Subject: [PATCH] Use inbounds access chain for SRV/UAV BDA as well. --- opcodes/dxil/dxil_buffer.cpp | 6 ++++-- .../resources/root-bda.root-descriptor.comp | 14 +++++++------- .../root-bda.root-descriptor.sm60.comp | 4 ++-- ...with-bda.root-descriptor.root-constant.comp | 4 ++-- ...sources.bindless.local-root-signature.rmiss | 18 +++++++++--------- ....sm60.ssbo.native-fp16.root-descriptor.frag | 8 ++++---- ...minprecision.sm60.ssbo.root-descriptor.frag | 6 +++--- 7 files changed, 31 insertions(+), 29 deletions(-) diff --git a/opcodes/dxil/dxil_buffer.cpp b/opcodes/dxil/dxil_buffer.cpp index 10feda7c..1f8d1f30 100644 --- a/opcodes/dxil/dxil_buffer.cpp +++ b/opcodes/dxil/dxil_buffer.cpp @@ -468,7 +468,8 @@ static bool emit_physical_buffer_load_instruction(Converter::Impl &impl, const l ptr_bitcast_op->add_id(u64_ptr_id); impl.add(ptr_bitcast_op); - auto *chain_op = impl.allocate(spv::OpAccessChain, builder.makePointer(spv::StorageClassPhysicalStorageBuffer, physical_type_id)); + auto *chain_op = impl.allocate(spv::OpInBoundsAccessChain, + builder.makePointer(spv::StorageClassPhysicalStorageBuffer, physical_type_id)); chain_op->add_id(ptr_bitcast_op->id); chain_op->add_id(builder.makeUintConstant(0)); if (array_id) @@ -875,7 +876,8 @@ static bool emit_physical_buffer_store_instruction(Converter::Impl &impl, const ptr_bitcast_op->add_id(u64_ptr_id); impl.add(ptr_bitcast_op); - auto *chain_op = impl.allocate(spv::OpAccessChain, builder.makePointer(spv::StorageClassPhysicalStorageBuffer, vec_type_id)); + auto *chain_op = impl.allocate(spv::OpInBoundsAccessChain, + builder.makePointer(spv::StorageClassPhysicalStorageBuffer, vec_type_id)); chain_op->add_id(ptr_bitcast_op->id); chain_op->add_id(builder.makeUintConstant(0)); if (array_id) diff --git a/reference/shaders/resources/root-bda.root-descriptor.comp b/reference/shaders/resources/root-bda.root-descriptor.comp index c527517a..cd4688d9 100644 --- a/reference/shaders/resources/root-bda.root-descriptor.comp +++ b/reference/shaders/resources/root-bda.root-descriptor.comp @@ -227,7 +227,7 @@ OpBranch %114 %27 = OpAccessChain %26 %25 %21 %28 = OpLoad %5 %27 %34 = OpBitcast %33 %19 -%36 = OpAccessChain %35 %34 %21 %28 +%36 = OpInBoundsAccessChain %35 %34 %21 %28 %37 = OpLoad %30 %36 Aligned 4 %38 = OpCompositeExtract %29 %37 0 %39 = OpCompositeExtract %29 %37 1 @@ -245,30 +245,30 @@ OpBranch %114 %55 = OpFAdd %29 %51 %40 %56 = OpFAdd %29 %52 %41 %60 = OpBitcast %59 %16 -%61 = OpAccessChain %35 %60 %21 %28 +%61 = OpInBoundsAccessChain %35 %60 %21 %28 %62 = OpCompositeConstruct %30 %53 %54 %55 %56 OpStore %61 %62 Aligned 4 %63 = OpShiftLeftLogical %5 %28 %18 %68 = OpBitcast %67 %13 -%70 = OpAccessChain %69 %68 %21 %28 +%70 = OpInBoundsAccessChain %69 %68 %21 %28 OpStore %70 %71 Aligned 2 %73 = OpShiftLeftLogical %5 %28 %15 %78 = OpBitcast %77 %13 -%80 = OpAccessChain %79 %78 %21 %28 +%80 = OpInBoundsAccessChain %79 %78 %21 %28 %82 = OpCompositeConstruct %74 %71 %81 OpStore %80 %82 Aligned 2 %83 = OpIMul %5 %28 %84 %89 = OpBitcast %88 %13 -%91 = OpAccessChain %90 %89 %21 %28 +%91 = OpInBoundsAccessChain %90 %89 %21 %28 %93 = OpCompositeConstruct %85 %71 %81 %92 OpStore %91 %93 Aligned 2 %94 = OpShiftLeftLogical %5 %28 %12 %99 = OpBitcast %98 %13 -%101 = OpAccessChain %100 %99 %21 %28 +%101 = OpInBoundsAccessChain %100 %99 %21 %28 %103 = OpCompositeConstruct %95 %71 %81 %92 %102 OpStore %101 %103 Aligned 2 %107 = OpBitcast %106 %13 -%109 = OpAccessChain %108 %107 %21 %28 +%109 = OpInBoundsAccessChain %108 %107 %21 %28 %113 = OpCompositeConstruct %6 %110 %111 OpStore %109 %113 Aligned 4 OpReturn diff --git a/reference/shaders/resources/root-bda.root-descriptor.sm60.comp b/reference/shaders/resources/root-bda.root-descriptor.sm60.comp index a2fbd636..a2d55fdc 100644 --- a/reference/shaders/resources/root-bda.root-descriptor.sm60.comp +++ b/reference/shaders/resources/root-bda.root-descriptor.sm60.comp @@ -118,7 +118,7 @@ OpBranch %60 %24 = OpAccessChain %23 %22 %18 %25 = OpLoad %5 %24 %31 = OpBitcast %30 %16 -%33 = OpAccessChain %32 %31 %18 %25 +%33 = OpInBoundsAccessChain %32 %31 %18 %25 %34 = OpLoad %27 %33 Aligned 4 %35 = OpCompositeExtract %26 %34 0 %36 = OpCompositeExtract %26 %34 1 @@ -136,7 +136,7 @@ OpBranch %60 %52 = OpFAdd %26 %48 %37 %53 = OpFAdd %26 %49 %38 %57 = OpBitcast %56 %13 -%58 = OpAccessChain %32 %57 %18 %25 +%58 = OpInBoundsAccessChain %32 %57 %18 %25 %59 = OpCompositeConstruct %27 %50 %51 %52 %53 OpStore %58 %59 Aligned 4 OpReturn diff --git a/reference/shaders/resources/root-constant-with-bda.root-descriptor.root-constant.comp b/reference/shaders/resources/root-constant-with-bda.root-descriptor.root-constant.comp index 68722cbc..dfcffc31 100644 --- a/reference/shaders/resources/root-constant-with-bda.root-descriptor.root-constant.comp +++ b/reference/shaders/resources/root-constant-with-bda.root-descriptor.root-constant.comp @@ -151,7 +151,7 @@ OpBranch %102 %21 = OpAccessChain %20 %19 %22 %23 = OpLoad %5 %21 %29 = OpBitcast %28 %16 -%31 = OpAccessChain %30 %29 %22 %23 +%31 = OpInBoundsAccessChain %30 %29 %22 %23 %32 = OpLoad %25 %31 Aligned 4 %33 = OpCompositeExtract %24 %32 0 %34 = OpCompositeExtract %24 %32 1 @@ -203,7 +203,7 @@ OpBranch %102 %94 = OpFAdd %24 %75 %91 %95 = OpFAdd %24 %76 %91 %99 = OpBitcast %98 %13 -%100 = OpAccessChain %30 %99 %22 %23 +%100 = OpInBoundsAccessChain %30 %99 %22 %23 %101 = OpCompositeConstruct %25 %92 %93 %94 %95 OpStore %100 %101 Aligned 4 OpReturn diff --git a/reference/shaders/resources/rt-resources.bindless.local-root-signature.rmiss b/reference/shaders/resources/rt-resources.bindless.local-root-signature.rmiss index 04cc0abc..658fa16f 100644 --- a/reference/shaders/resources/rt-resources.bindless.local-root-signature.rmiss +++ b/reference/shaders/resources/rt-resources.bindless.local-root-signature.rmiss @@ -557,7 +557,7 @@ OpBranch %383 %259 = OpAccessChain %40 %16 %162 %260 = OpLoad %13 %259 %264 = OpBitcast %263 %260 -%265 = OpAccessChain %195 %264 %45 %58 +%265 = OpInBoundsAccessChain %195 %264 %45 %58 %266 = OpLoad %26 %265 Aligned 4 %267 = OpCompositeExtract %17 %266 0 %268 = OpCompositeExtract %17 %266 1 @@ -571,7 +571,7 @@ OpBranch %383 %276 = OpAccessChain %40 %16 %179 %277 = OpLoad %13 %276 %281 = OpBitcast %280 %277 -%283 = OpAccessChain %282 %281 %45 %58 +%283 = OpInBoundsAccessChain %282 %281 %45 %58 %284 = OpLoad %5 %283 Aligned 4 %285 = OpBitcast %17 %284 %286 = OpFAdd %17 %271 %285 @@ -580,7 +580,7 @@ OpBranch %383 %289 = OpFAdd %17 %274 %285 %290 = OpShiftLeftLogical %5 %58 %165 %294 = OpBitcast %293 %277 -%296 = OpAccessChain %295 %294 %45 %58 +%296 = OpInBoundsAccessChain %295 %294 %45 %58 %297 = OpLoad %13 %296 Aligned 4 %298 = OpCompositeExtract %5 %297 0 %299 = OpCompositeExtract %5 %297 1 @@ -592,7 +592,7 @@ OpBranch %383 %305 = OpFAdd %17 %289 %301 %306 = OpIMul %5 %58 %54 %311 = OpBitcast %310 %277 -%313 = OpAccessChain %312 %311 %45 %58 +%313 = OpInBoundsAccessChain %312 %311 %45 %58 %314 = OpLoad %307 %313 Aligned 4 %315 = OpCompositeExtract %5 %314 0 %316 = OpCompositeExtract %5 %314 1 @@ -606,7 +606,7 @@ OpBranch %383 %324 = OpFAdd %17 %305 %320 %325 = OpShiftLeftLogical %5 %58 %179 %329 = OpBitcast %328 %277 -%331 = OpAccessChain %330 %329 %45 %58 +%331 = OpInBoundsAccessChain %330 %329 %45 %58 %332 = OpLoad %167 %331 Aligned 4 %333 = OpCompositeExtract %5 %332 0 %334 = OpCompositeExtract %5 %332 1 @@ -623,7 +623,7 @@ OpBranch %383 %345 = OpAccessChain %40 %16 %165 %346 = OpLoad %13 %345 %350 = OpBitcast %349 %346 -%352 = OpAccessChain %351 %350 %45 %58 +%352 = OpInBoundsAccessChain %351 %350 %45 %58 %353 = OpLoad %17 %352 Aligned 4 %354 = OpFAdd %17 %341 %353 %355 = OpFAdd %17 %342 %353 @@ -632,7 +632,7 @@ OpBranch %383 %358 = OpAccessChain %40 %16 %9 %359 = OpLoad %13 %358 %363 = OpBitcast %362 %359 -%364 = OpAccessChain %282 %363 %45 %58 +%364 = OpInBoundsAccessChain %282 %363 %45 %58 %365 = OpLoad %5 %364 Aligned 4 %366 = OpBitcast %17 %365 %367 = OpFAdd %17 %354 %366 @@ -645,12 +645,12 @@ OpBranch %383 %375 = OpCompositeInsert %26 %370 %374 3 OpStore %74 %375 %376 = OpBitcast %349 %346 -%377 = OpAccessChain %351 %376 %45 %58 +%377 = OpInBoundsAccessChain %351 %376 %45 %58 OpStore %377 %367 Aligned 4 %379 = OpAccessChain %40 %16 %9 %380 = OpLoad %13 %379 %381 = OpBitcast %349 %380 -%382 = OpAccessChain %351 %381 %45 %58 +%382 = OpInBoundsAccessChain %351 %381 %45 %58 OpStore %382 %368 Aligned 4 OpReturn OpFunctionEnd diff --git a/reference/shaders/resources/ssbo-minprecision.sm60.ssbo.native-fp16.root-descriptor.frag b/reference/shaders/resources/ssbo-minprecision.sm60.ssbo.native-fp16.root-descriptor.frag index 531354a9..df3165a2 100644 --- a/reference/shaders/resources/ssbo-minprecision.sm60.ssbo.native-fp16.root-descriptor.frag +++ b/reference/shaders/resources/ssbo-minprecision.sm60.ssbo.native-fp16.root-descriptor.frag @@ -167,18 +167,18 @@ OpBranch %77 %31 = OpSConvert %30 %29 %32 = OpSConvert %5 %31 %37 = OpBitcast %36 %28 -%39 = OpAccessChain %38 %37 %40 %32 +%39 = OpInBoundsAccessChain %38 %37 %40 %32 %41 = OpLoad %33 %39 Aligned 4 %43 = OpFConvert %42 %41 %44 = OpIAdd %30 %31 %45 %46 = OpSConvert %5 %44 %47 = OpBitcast %36 %28 -%48 = OpAccessChain %38 %47 %40 %46 +%48 = OpInBoundsAccessChain %38 %47 %40 %46 %49 = OpLoad %33 %48 Aligned 4 %50 = OpFConvert %42 %49 %51 = OpFAdd %42 %50 %43 %55 = OpBitcast %54 %25 -%56 = OpAccessChain %38 %55 %40 %32 +%56 = OpInBoundsAccessChain %38 %55 %40 %32 %58 = OpFConvert %33 %51 OpStore %56 %58 Aligned 4 %60 = OpAccessChain %59 %13 %40 %32 @@ -189,7 +189,7 @@ OpStore %56 %58 Aligned 4 %65 = OpUConvert %30 %64 %66 = OpIAdd %30 %65 %62 %70 = OpBitcast %69 %22 -%72 = OpAccessChain %71 %70 %40 %32 +%72 = OpInBoundsAccessChain %71 %70 %40 %32 %74 = OpUConvert %5 %66 OpStore %72 %74 Aligned 4 %76 = OpBitcast %14 %75 diff --git a/reference/shaders/resources/ssbo-minprecision.sm60.ssbo.root-descriptor.frag b/reference/shaders/resources/ssbo-minprecision.sm60.ssbo.root-descriptor.frag index 1862c46f..cb9fe9b9 100644 --- a/reference/shaders/resources/ssbo-minprecision.sm60.ssbo.root-descriptor.frag +++ b/reference/shaders/resources/ssbo-minprecision.sm60.ssbo.root-descriptor.frag @@ -115,15 +115,15 @@ OpBranch %46 %22 = OpLoad %10 %12 %23 = OpBitcast %5 %22 %28 = OpBitcast %27 %21 -%30 = OpAccessChain %29 %28 %31 %23 +%30 = OpInBoundsAccessChain %29 %28 %31 %23 %32 = OpLoad %24 %30 Aligned 4 %33 = OpIAdd %5 %23 %20 %34 = OpBitcast %27 %21 -%35 = OpAccessChain %29 %34 %31 %33 +%35 = OpInBoundsAccessChain %29 %34 %31 %33 %36 = OpLoad %24 %35 Aligned 4 %37 = OpFAdd %24 %36 %32 %41 = OpBitcast %40 %18 -%42 = OpAccessChain %29 %41 %31 %23 +%42 = OpInBoundsAccessChain %29 %41 %31 %23 OpStore %42 %37 Aligned 4 %45 = OpBitcast %10 %44 OpStore %14 %45