mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-05-14 19:31:25 +00:00
When building a vector via tint::writer::AppendVector, and the vector argument is already a vector constructor, expand that vector constructor into its components only when those components are all scalars. This avoids a type breakage which can occur with cases like this: vector argument is: vec2<i32>(vec2<u32>(0u,1u)) scalar argument is: 2 Before this fix, the result was: vec2<i32>(0u, 1u, 2); But should be this instead: vec3<i32>(vec2<u32>(0u,1u),2) This was noticed in SPIR-V writer output when forming a coordinate vector from a an unsigned WGSL coordinate vector with a signed array vector. Fixed: tint:1048 Change-Id: Id46665739cc23da0ca58b9baabf7b4531b86350b Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/60040 Auto-Submit: David Neto <dneto@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: David Neto <dneto@google.com> Reviewed-by: Ben Clayton <bclayton@google.com>
47 lines
1.4 KiB
Plaintext
47 lines
1.4 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Google Tint Compiler; 0
|
|
; Bound: 22
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %main "main"
|
|
OpExecutionMode %main OriginUpperLeft
|
|
OpName %var_1 "var_1"
|
|
OpName %main_1 "main_1"
|
|
OpName %main "main"
|
|
%uint = OpTypeInt 32 0
|
|
%_ptr_Private_uint = OpTypePointer Private %uint
|
|
%4 = OpConstantNull %uint
|
|
%var_1 = OpVariable %_ptr_Private_uint Private %4
|
|
%void = OpTypeVoid
|
|
%5 = OpTypeFunction %void
|
|
%bool = OpTypeBool
|
|
%false = OpConstantFalse %bool
|
|
%true = OpConstantTrue %bool
|
|
%main_1 = OpFunction %void None %5
|
|
%8 = OpLabel
|
|
OpBranch %9
|
|
%9 = OpLabel
|
|
OpLoopMerge %10 %11 None
|
|
OpBranch %12
|
|
%12 = OpLabel
|
|
OpSelectionMerge %15 None
|
|
OpBranchConditional %false %16 %17
|
|
%16 = OpLabel
|
|
OpBranch %15
|
|
%17 = OpLabel
|
|
OpBranch %10
|
|
%15 = OpLabel
|
|
OpBranch %11
|
|
%11 = OpLabel
|
|
OpBranchConditional %true %9 %10
|
|
%10 = OpLabel
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%main = OpFunction %void None %5
|
|
%20 = OpLabel
|
|
%21 = OpFunctionCall %void %main_1
|
|
OpReturn
|
|
OpFunctionEnd
|