Skip to content

Commit

Permalink
Add function parameter access test
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-story committed Jun 26, 2024
1 parent 30e8b7c commit a22e23a
Show file tree
Hide file tree
Showing 4 changed files with 373 additions and 0 deletions.
51 changes: 51 additions & 0 deletions tests/issues/102/function_parameter_access.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
glslangValidator -V -S frag -g0 --ku -o function_parameter_access.spv function_parameter_access.glsl
*/

#version 450

layout(binding = 0) uniform sampler Sampler;
layout(binding = 1) uniform texture2D Texture;
layout(binding = 2) uniform sampler2D Sampler2D;

layout(binding = 3) uniform sampler NeverAccessedSampler;
layout(binding = 4) uniform texture2D NeverAccessedTexture;
layout(binding = 5) uniform sampler2D NeverAccessedSampler2D;

layout(location = 0) out vec4 color;

vec4 access_sampler_and_texture(texture2D t, sampler s, vec2 coord)
{
vec4 ret = texture(sampler2D(t, s), coord);
return vec4(5.0) * ret;
}

vec4 access_combined_sampler(sampler2D s)
{
vec2 coord = vec2(0.5, 0.5);
vec4 ret = texture(s, coord);
return vec4(1.0, 2.0, 3.0, 1.0) * ret;
}

vec4 call_access_functions(texture2D t, sampler s)
{
return access_combined_sampler(Sampler2D) + access_sampler_and_texture(t, s, vec2(0.25, 0.75));
}

vec4 never_called(texture2D t, sampler s, float u, float v)
{
vec4 ret = texture(sampler2D(t, s), vec2(u, v));
return vec4(-3.0) * ret;
}

vec4 never_called_2(vec2 coord)
{
vec4 ret = texture(sampler2D(NeverAccessedTexture, NeverAccessedSampler), coord);
ret *= texture(NeverAccessedSampler2D, coord);
return ret;
}

void main()
{
color = vec4(-1.0) * call_access_functions(Texture, Sampler);
}
Binary file added tests/issues/102/function_parameter_access.spv
Binary file not shown.
321 changes: 321 additions & 0 deletions tests/issues/102/function_parameter_access.spv.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,321 @@
%YAML 1.0
---
all_type_descriptions:
- &td0
id: 9
op: 26
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x00020000 # EXTERNAL_SAMPLER
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
- &td1
id: 7
op: 25
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x00010008 # EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
- &td2
id: 20
op: 27
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x00050008 # EXTERNAL_SAMPLED_IMAGE EXTERNAL_IMAGE FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 1, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
- &td3
id: 13
op: 23
type_name:
struct_member_name:
storage_class: -1 # NOT APPLICABLE
type_flags: 0x00000108 # VECTOR FLOAT
decoration_flags: 0x00000000 # NONE
traits:
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 4 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
all_block_variables:
- &bv0
name:
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
type_description:
- &bv1
name:
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
type_description:
- &bv2
name:
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
type_description:
- &bv3
name:
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
type_description:
- &bv4
name:
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
type_description:
- &bv5
name:
offset: 0
absolute_offset: 0
size: 0
padded_size: 0
decorations: 0x00000000 # NONE
numeric:
scalar: { width: 0, signedness: 0 }
vector: { component_count: 0 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
type_description:
all_descriptor_bindings:
- &db0
spirv_id: 117
name:
binding: 0
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 0 # VK_DESCRIPTOR_TYPE_SAMPLER
resource_type: 1 # SAMPLER
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
block: *bv0 #
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td0
word_offset: { binding: 76, set: 72 }
- &db1
spirv_id: 116
name:
binding: 1
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 2 # VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
resource_type: 4 # SRV
image: { dim: 1, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
block: *bv1 #
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td1
word_offset: { binding: 68, set: 64 }
- &db2
spirv_id: 71
name:
binding: 2
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 1 # VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
resource_type: 5 # ???
image: { dim: 1, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
block: *bv2 #
array: { dims_count: 0, dims: [] }
accessed: 1
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td2
word_offset: { binding: 32, set: 28 }
- &db3
spirv_id: 98
name:
binding: 3
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 0 # VK_DESCRIPTOR_TYPE_SAMPLER
resource_type: 1 # SAMPLER
image: { dim: 0, depth: 0, arrayed: 0, ms: 0, sampled: 0, image_format: 0 } # dim=1D image_format=Unknown
block: *bv3 #
array: { dims_count: 0, dims: [] }
accessed: 0
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td0
word_offset: { binding: 48, set: 44 }
- &db4
spirv_id: 96
name:
binding: 4
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 2 # VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
resource_type: 4 # SRV
image: { dim: 1, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
block: *bv4 #
array: { dims_count: 0, dims: [] }
accessed: 0
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td1
word_offset: { binding: 40, set: 36 }
- &db5
spirv_id: 103
name:
binding: 5
input_attachment_index: 0
set: 0
decoration_flags: 0x00000000 # NONE
descriptor_type: 1 # VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
resource_type: 5 # ???
image: { dim: 1, depth: 0, arrayed: 0, ms: 0, sampled: 1, image_format: 0 } # dim=2D image_format=Unknown
block: *bv5 #
array: { dims_count: 0, dims: [] }
accessed: 0
uav_counter_id: 4294967295
uav_counter_binding:
type_description: *td2
word_offset: { binding: 56, set: 52 }
all_interface_variables:
- &iv0
spirv_id: 113
name:
location: 0
storage_class: 3 # Output
semantic:
decoration_flags: 0x00000000 # NONE
built_in: -1 # ??? (-1)
numeric:
scalar: { width: 32, signedness: 0 }
vector: { component_count: 4 }
matrix: { column_count: 0, row_count: 0, stride: 0 }
array: { dims_count: 0, dims: [], stride: 0 }
member_count: 0
members:
format: 109 # VK_FORMAT_R32G32B32A32_SFLOAT
type_description: *td3
word_offset: { location: 60 }
module:
generator: 8 # Khronos Glslang Reference Front End
entry_point_name: "main"
entry_point_id: 4
source_language: 0 # Unknown
source_language_version: 0
spirv_execution_model: 4 # Fragment
shader_stage: 0x00000010 # PS
descriptor_binding_count: 6
descriptor_bindings:
- *db0 #
- *db1 #
- *db2 #
- *db3 #
- *db4 #
- *db5 #
descriptor_set_count: 1
descriptor_sets:
- set: 0
binding_count: 6
bindings:
- *db0 #
- *db1 #
- *db2 #
- *db3 #
- *db4 #
- *db5 #
input_variable_count: 0,
input_variables:
output_variable_count: 1,
output_variables:
- *iv0 #
push_constant_count: 0,
push_constants:
specialization_constant_count: 0,
specialization_constants:
...
1 change: 1 addition & 0 deletions tests/test-spirv-reflect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -821,6 +821,7 @@ const std::vector<const char*> all_spirv_paths = {
"../tests/issues/77/hlsl/array_from_ubo.spv",
"../tests/issues/77/hlsl/array_from_ubo_with_O0.spv",
"../tests/issues/77/hlsl/rocketz.spv",
"../tests/issues/102/function_parameter_access.spv",
"../tests/issues/178/vertex_input_struct.spv",
"../tests/issues/178/vertex_input_struct2.spv",
"../tests/multi_entrypoint/multi_entrypoint.spv",
Expand Down

0 comments on commit a22e23a

Please sign in to comment.