Skip to content

Commit

Permalink
Fix bindless workaround for index.
Browse files Browse the repository at this point in the history
Need to NonUniformEXT the final index, not the base offset itself.
  • Loading branch information
HansKristian-Work committed Jul 30, 2020
1 parent 86e78fa commit 54fb089
Show file tree
Hide file tree
Showing 15 changed files with 33 additions and 30 deletions.
11 changes: 7 additions & 4 deletions opcodes/dxil/dxil_resources.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -609,21 +609,24 @@ static bool build_load_resource_handle(Converter::Impl &impl, spv::Id base_image
impl.allocate(spv::OpAccessChain, builder.makePointer(spv::StorageClassUniformConstant, type_id));
op->add_id(image_id);

spv::Id offset_id;

if (reference.bindless)
{
spv::Id offset_id = build_bindless_heap_offset(
offset_id = build_bindless_heap_offset(
impl, reference, reference.base_resource_is_array ? instruction_offset_value : nullptr);

if (offset_id == 0)
return false;
op->add_id(offset_id);
}
else
op->add_id(impl.get_id_for_value(instruction_offset_value));
offset_id = impl.get_id_for_value(instruction_offset_value);

op->add_id(offset_id);

// Some compilers require the index to be marked as NonUniformEXT, even if it not required by Vulkan spec.
if (is_non_uniform && instruction_offset_value)
builder.addDecoration(impl.get_id_for_value(instruction_offset_value), spv::DecorationNonUniformEXT);
builder.addDecoration(offset_id, spv::DecorationNonUniformEXT);

impl.add(op);
image_id = op->id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ OpDecorate %17 Flat
OpDecorate %17 Location 0
OpDecorate %17 Component 1
OpDecorate %19 Location 0
OpDecorate %27 NonUniform
OpDecorate %35 NonUniform
OpDecorate %36 NonUniform
OpDecorate %40 NonUniform
%1 = OpTypeVoid
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,24 +198,24 @@ OpDecorate %37 DescriptorSet 2
OpDecorate %37 Binding 0
OpDecorate %40 Location 0
OpDecorate %48 NonUniform
OpDecorate %60 NonUniform
OpDecorate %66 NonUniform
OpDecorate %67 NonUniform
OpDecorate %59 NonUniform
OpDecorate %81 NonUniform
OpDecorate %82 NonUniform
OpDecorate %59 NonUniform
OpDecorate %100 NonUniform
OpDecorate %101 NonUniform
OpDecorate %59 NonUniform
OpDecorate %120 NonUniform
OpDecorate %121 NonUniform
OpDecorate %133 NonUniform
OpDecorate %143 NonUniform
OpDecorate %150 NonUniform
OpDecorate %210 NonUniform
OpDecorate %214 NonUniform
OpDecorate %215 NonUniform
OpDecorate %223 NonUniform
OpDecorate %225 NonUniform
OpDecorate %209 NonUniform
OpDecorate %245 NonUniform
OpDecorate %246 NonUniform
OpDecorate %241 NonUniform
OpDecorate %253 NonUniform
OpDecorate %254 NonUniform
OpDecorate %255 NonUniform
%1 = OpTypeVoid
Expand Down
6 changes: 3 additions & 3 deletions reference/shaders/resources/rt-resources.bindless.rmiss
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,11 @@ OpMemberDecorate %6 7 Offset 28
OpDecorate %13 DescriptorSet 0
OpDecorate %13 Binding 0
OpDecorate %17 Location 0
OpDecorate %22 NonUniform
OpDecorate %29 NonUniform
OpDecorate %30 NonUniform
OpDecorate %21 NonUniform
OpDecorate %45 NonUniform
OpDecorate %46 NonUniform
OpDecorate %21 NonUniform
OpDecorate %60 NonUniform
OpDecorate %61 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ OpDecorate %20 Location 0
OpDecorate %22 Flat
OpDecorate %22 Location 1
OpDecorate %25 Location 0
OpDecorate %109 NonUniform
OpDecorate %114 NonUniform
OpDecorate %115 NonUniform
OpDecorate %116 NonUniform
%1 = OpTypeVoid
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ OpDecorate %16 BuiltIn FragCoord
OpDecorate %18 Flat
OpDecorate %18 Location 1
OpDecorate %21 Location 0
OpDecorate %92 NonUniform
OpDecorate %97 NonUniform
OpDecorate %98 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ OpDecorate %16 BuiltIn FragCoord
OpDecorate %18 Flat
OpDecorate %18 Location 1
OpDecorate %21 Location 0
OpDecorate %79 NonUniform
OpDecorate %84 NonUniform
OpDecorate %85 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ OpDecorate %16 BuiltIn FragCoord
OpDecorate %18 Flat
OpDecorate %18 Location 1
OpDecorate %20 Location 0
OpDecorate %79 NonUniform
OpDecorate %84 NonUniform
OpDecorate %85 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ OpDecorate %16 BuiltIn FragCoord
OpDecorate %18 Flat
OpDecorate %18 Location 1
OpDecorate %20 Location 0
OpDecorate %79 NonUniform
OpDecorate %84 NonUniform
OpDecorate %85 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ OpDecorate %25 BuiltIn FragCoord
OpDecorate %27 Flat
OpDecorate %27 Location 1
OpDecorate %29 Location 0
OpDecorate %85 NonUniform
OpDecorate %91 NonUniform
OpDecorate %92 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,13 @@ OpDecorate %12 NonWritable
OpDecorate %15 DescriptorSet 7
OpDecorate %15 Binding 0
OpDecorate %18 BuiltIn GlobalInvocationId
OpDecorate %23 NonUniform
OpDecorate %31 NonUniform
OpDecorate %32 NonUniform
OpDecorate %23 NonUniform
OpDecorate %36 NonUniform
OpDecorate %38 NonUniform
OpDecorate %42 NonUniform
OpDecorate %46 NonUniform
OpDecorate %47 NonUniform
OpDecorate %42 NonUniform
OpDecorate %51 NonUniform
OpDecorate %52 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,9 @@ OpDecorate %18 DescriptorSet 7
OpDecorate %18 Binding 0
OpDecorate %18 AliasedPointer
OpDecorate %21 BuiltIn GlobalInvocationId
OpDecorate %26 NonUniform
OpDecorate %34 NonUniform
OpDecorate %35 NonUniform
OpDecorate %47 NonUniform
OpDecorate %51 NonUniform
OpDecorate %52 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ OpDecorate %16 BuiltIn FragCoord
OpDecorate %18 Flat
OpDecorate %18 Location 1
OpDecorate %21 Location 0
OpDecorate %92 NonUniform
OpDecorate %97 NonUniform
OpDecorate %98 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ OpDecorate %16 BuiltIn FragCoord
OpDecorate %18 Flat
OpDecorate %18 Location 1
OpDecorate %21 Location 0
OpDecorate %79 NonUniform
OpDecorate %84 NonUniform
OpDecorate %85 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ OpDecorate %25 BuiltIn FragCoord
OpDecorate %27 Flat
OpDecorate %27 Location 1
OpDecorate %29 Location 0
OpDecorate %84 NonUniform
OpDecorate %90 NonUniform
OpDecorate %91 NonUniform
%1 = OpTypeVoid
%2 = OpTypeFunction %1
Expand Down

0 comments on commit 54fb089

Please sign in to comment.