tint: Fix HLSL texture queries and re-add textureNumLayers()

... overloads for texture cube arrays

FXC is telling porkies, when it says "The array element count
of GetDimensions on TextureCubeArray objects is unavailable
on ps_5_1".

The actual issue, as identified by Teodor Tanasoaia at Mozilla,
is that the argument needs to be unsigned.

In fact, *all* the texture queries should have used an unsigned
scalar or vector for the output value. This has been broken
forever!

This reverts commit bd9f6e6684.

Change-Id: I3e217bec17c6fd203cff618b143ebef3d8a61927
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/122980
Auto-Submit: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
This commit is contained in:
Ben Clayton
2023-03-08 02:48:34 +00:00
committed by Dawn LUCI CQ
parent 4f98dd4706
commit 068eb3ebda
834 changed files with 4944 additions and 1740 deletions

View File

@@ -0,0 +1,121 @@
; Test: ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm
; SPIR-V
; Version: 1.0
; Generator: Khronos SPIR-V Tools Assembler; 0
; Bound: 100
; Schema: 0
OpCapability Shader
OpCapability Sampled1D
OpCapability Image1D
OpCapability StorageImageExtendedFormats
OpCapability ImageQuery
OpMemoryModel Logical Simple
OpEntryPoint Fragment %1 "main"
OpExecutionMode %1 OriginUpperLeft
OpName %f1 "f1"
OpName %vf12 "vf12"
OpName %vf21 "vf21"
OpName %vf123 "vf123"
OpName %vf1234 "vf1234"
OpName %u1 "u1"
OpName %vu12 "vu12"
OpName %vu123 "vu123"
OpName %vu1234 "vu1234"
OpName %i1 "i1"
OpName %vi12 "vi12"
OpName %vi123 "vi123"
OpName %vi1234 "vi1234"
OpName %coords1 "coords1"
OpName %coords12 "coords12"
OpName %coords123 "coords123"
OpName %coords1234 "coords1234"
OpName %offsets2d "offsets2d"
OpName %u_offsets2d "u_offsets2d"
OpDecorate %10 DescriptorSet 0
OpDecorate %10 Binding 0
OpDecorate %20 DescriptorSet 2
OpDecorate %20 Binding 1
OpDecorate %30 DescriptorSet 0
OpDecorate %30 Binding 1
%void = OpTypeVoid
%24 = OpTypeFunction %void
%float = OpTypeFloat 32
%uint = OpTypeInt 32 0
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%int_3 = OpConstant %int 3
%int_4 = OpConstant %int 4
%uint_0 = OpConstant %uint 0
%uint_1 = OpConstant %uint 1
%uint_2 = OpConstant %uint 2
%uint_3 = OpConstant %uint 3
%uint_4 = OpConstant %uint 4
%uint_100 = OpConstant %uint 100
%v2int = OpTypeVector %int 2
%v3int = OpTypeVector %int 3
%v4int = OpTypeVector %int 4
%v2uint = OpTypeVector %uint 2
%v3uint = OpTypeVector %uint 3
%v4uint = OpTypeVector %uint 4
%v2float = OpTypeVector %float 2
%v3float = OpTypeVector %float 3
%v4float = OpTypeVector %float 4
%49 = OpConstantNull %float
%float_0 = OpConstant %float 0
%float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%float_4 = OpConstant %float 4
%float_7 = OpConstant %float 7
%56 = OpConstantNull %v2float
%57 = OpConstantNull %v3float
%58 = OpConstantNull %v4float
%59 = OpConstantComposite %v2int %int_1 %int_2
%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3
%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4
%62 = OpConstantComposite %v2uint %uint_1 %uint_2
%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3
%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4
%65 = OpConstantComposite %v2float %float_1 %float_2
%66 = OpConstantComposite %v2float %float_2 %float_1
%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
%float_0_200000003 = OpConstant %float 0.200000003
%70 = OpTypeSampler
%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70
%72 = OpTypeImage %float Cube 0 1 0 1 Unknown
%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72
%74 = OpTypeSampledImage %72
%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant
%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant
%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant
%offsets2d = OpConstantComposite %v2int %int_3 %int_4
%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4
%1 = OpFunction %void None %24
%75 = OpLabel
%f1 = OpCopyObject %float %float_1
%vf12 = OpCopyObject %v2float %65
%vf21 = OpCopyObject %v2float %66
%vf123 = OpCopyObject %v3float %67
%vf1234 = OpCopyObject %v4float %68
%i1 = OpCopyObject %int %int_1
%vi12 = OpCopyObject %v2int %59
%vi123 = OpCopyObject %v3int %60
%vi1234 = OpCopyObject %v4int %61
%u1 = OpCopyObject %uint %uint_1
%vu12 = OpCopyObject %v2uint %62
%vu123 = OpCopyObject %v3uint %63
%vu1234 = OpCopyObject %v4uint %64
%coords1 = OpCopyObject %float %float_1
%coords12 = OpCopyObject %v2float %vf12
%coords123 = OpCopyObject %v3float %vf123
%coords1234 = OpCopyObject %v4float %vf1234
%76 = OpLoad %70 %10
%77 = OpLoad %72 %20
%78 = OpSampledImage %74 %77 %76
%99 = OpImageQuerySizeLod %v3int %77 %i1
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,43 @@
SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp samplerCubeArray x_20_1;
void main_1() {
float f1 = 1.0f;
vec2 vf12 = vec2(1.0f, 2.0f);
vec2 vf21 = vec2(2.0f, 1.0f);
vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
int i1 = 1;
ivec2 vi12 = ivec2(1, 2);
ivec3 vi123 = ivec3(1, 2, 3);
ivec4 vi1234 = ivec4(1, 2, 3, 4);
uint u1 = 1u;
uvec2 vu12 = uvec2(1u, 2u);
uvec3 vu123 = uvec3(1u, 2u, 3u);
uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
float coords1 = 1.0f;
vec2 coords12 = vf12;
vec3 coords123 = vf123;
vec4 coords1234 = vf1234;
ivec3 x_99 = ivec3(uvec3(uvec2(textureSize(x_20_1, i1).xy).xy, uint(textureSize(x_20_1, 0).z)));
return;
}
void tint_symbol() {
main_1();
}
void main() {
tint_symbol();
return;
}
Error parsing GLSL shader:
ERROR: 0:4: 'samplerCubeArray' : Reserved word.
ERROR: 0:4: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.

View File

@@ -0,0 +1,121 @@
; Test: ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm
; SPIR-V
; Version: 1.0
; Generator: Khronos SPIR-V Tools Assembler; 0
; Bound: 100
; Schema: 0
OpCapability Shader
OpCapability Sampled1D
OpCapability Image1D
OpCapability StorageImageExtendedFormats
OpCapability ImageQuery
OpMemoryModel Logical Simple
OpEntryPoint Fragment %1 "main"
OpExecutionMode %1 OriginUpperLeft
OpName %f1 "f1"
OpName %vf12 "vf12"
OpName %vf21 "vf21"
OpName %vf123 "vf123"
OpName %vf1234 "vf1234"
OpName %u1 "u1"
OpName %vu12 "vu12"
OpName %vu123 "vu123"
OpName %vu1234 "vu1234"
OpName %i1 "i1"
OpName %vi12 "vi12"
OpName %vi123 "vi123"
OpName %vi1234 "vi1234"
OpName %coords1 "coords1"
OpName %coords12 "coords12"
OpName %coords123 "coords123"
OpName %coords1234 "coords1234"
OpName %offsets2d "offsets2d"
OpName %u_offsets2d "u_offsets2d"
OpDecorate %10 DescriptorSet 0
OpDecorate %10 Binding 0
OpDecorate %20 DescriptorSet 2
OpDecorate %20 Binding 1
OpDecorate %30 DescriptorSet 0
OpDecorate %30 Binding 1
%void = OpTypeVoid
%24 = OpTypeFunction %void
%float = OpTypeFloat 32
%uint = OpTypeInt 32 0
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%int_2 = OpConstant %int 2
%int_3 = OpConstant %int 3
%int_4 = OpConstant %int 4
%uint_0 = OpConstant %uint 0
%uint_1 = OpConstant %uint 1
%uint_2 = OpConstant %uint 2
%uint_3 = OpConstant %uint 3
%uint_4 = OpConstant %uint 4
%uint_100 = OpConstant %uint 100
%v2int = OpTypeVector %int 2
%v3int = OpTypeVector %int 3
%v4int = OpTypeVector %int 4
%v2uint = OpTypeVector %uint 2
%v3uint = OpTypeVector %uint 3
%v4uint = OpTypeVector %uint 4
%v2float = OpTypeVector %float 2
%v3float = OpTypeVector %float 3
%v4float = OpTypeVector %float 4
%49 = OpConstantNull %float
%float_0 = OpConstant %float 0
%float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%float_4 = OpConstant %float 4
%float_7 = OpConstant %float 7
%56 = OpConstantNull %v2float
%57 = OpConstantNull %v3float
%58 = OpConstantNull %v4float
%59 = OpConstantComposite %v2int %int_1 %int_2
%60 = OpConstantComposite %v3int %int_1 %int_2 %int_3
%61 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4
%62 = OpConstantComposite %v2uint %uint_1 %uint_2
%63 = OpConstantComposite %v3uint %uint_1 %uint_2 %uint_3
%64 = OpConstantComposite %v4uint %uint_1 %uint_2 %uint_3 %uint_4
%65 = OpConstantComposite %v2float %float_1 %float_2
%66 = OpConstantComposite %v2float %float_2 %float_1
%67 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%68 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
%float_0_200000003 = OpConstant %float 0.200000003
%70 = OpTypeSampler
%_ptr_UniformConstant_70 = OpTypePointer UniformConstant %70
%72 = OpTypeImage %float Cube 1 1 0 1 Unknown
%_ptr_UniformConstant_72 = OpTypePointer UniformConstant %72
%74 = OpTypeSampledImage %72
%10 = OpVariable %_ptr_UniformConstant_70 UniformConstant
%20 = OpVariable %_ptr_UniformConstant_72 UniformConstant
%30 = OpVariable %_ptr_UniformConstant_70 UniformConstant
%offsets2d = OpConstantComposite %v2int %int_3 %int_4
%u_offsets2d = OpConstantComposite %v2uint %uint_3 %uint_4
%1 = OpFunction %void None %24
%75 = OpLabel
%f1 = OpCopyObject %float %float_1
%vf12 = OpCopyObject %v2float %65
%vf21 = OpCopyObject %v2float %66
%vf123 = OpCopyObject %v3float %67
%vf1234 = OpCopyObject %v4float %68
%i1 = OpCopyObject %int %int_1
%vi12 = OpCopyObject %v2int %59
%vi123 = OpCopyObject %v3int %60
%vi1234 = OpCopyObject %v4int %61
%u1 = OpCopyObject %uint %uint_1
%vu12 = OpCopyObject %v2uint %62
%vu123 = OpCopyObject %v3uint %63
%vu1234 = OpCopyObject %v4uint %64
%coords1 = OpCopyObject %float %float_1
%coords12 = OpCopyObject %v2float %vf12
%coords123 = OpCopyObject %v3float %vf123
%coords1234 = OpCopyObject %v4float %vf1234
%76 = OpLoad %70 %10
%77 = OpLoad %72 %20
%78 = OpSampledImage %74 %77 %76
%99 = OpImageQuerySizeLod %v3int %77 %i1
OpReturn
OpFunctionEnd

View File

@@ -0,0 +1,43 @@
SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp samplerCubeArray x_20_1;
void main_1() {
float f1 = 1.0f;
vec2 vf12 = vec2(1.0f, 2.0f);
vec2 vf21 = vec2(2.0f, 1.0f);
vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
int i1 = 1;
ivec2 vi12 = ivec2(1, 2);
ivec3 vi123 = ivec3(1, 2, 3);
ivec4 vi1234 = ivec4(1, 2, 3, 4);
uint u1 = 1u;
uvec2 vu12 = uvec2(1u, 2u);
uvec3 vu123 = uvec3(1u, 2u, 3u);
uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
float coords1 = 1.0f;
vec2 coords12 = vf12;
vec3 coords123 = vf123;
vec4 coords1234 = vf1234;
ivec3 x_99 = ivec3(uvec3(uvec2(textureSize(x_20_1, i1).xy).xy, uint(textureSize(x_20_1, 0).z)));
return;
}
void tint_symbol() {
main_1();
}
void main() {
tint_symbol();
return;
}
Error parsing GLSL shader:
ERROR: 0:4: 'samplerCubeArray' : Reserved word.
ERROR: 0:4: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.