Implement External Texture Crop Functionality
Adds to the External Texture shader transform to allow cropping. Tests
included.
Bug: chromium:1316671
Change-Id: Id0ec9acac22a0968ba6847d6ead9cf5084eaca88
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/113281
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/dawn.json b/dawn.json
index 2b83e89..9216b85 100644
--- a/dawn.json
+++ b/dawn.json
@@ -1377,6 +1377,16 @@
{"value": 3, "name": "rotate 270 degrees"}
]
},
+ "external texture visible rect" :{
+ "category": "structure",
+ "tags": ["dawn"],
+ "members": [
+ {"name": "x", "type": "float", "default": "0.0"},
+ {"name": "y", "type": "float", "default": "0.0"},
+ {"name": "width", "type": "float", "default": "1.0"},
+ {"name": "height", "type": "float", "default": "1.0"}
+ ]
+ },
"external texture descriptor": {
"category": "structure",
"extensible": "in",
@@ -1397,7 +1407,8 @@
{"name": "gamut conversion matrix", "type": "float", "annotation": "const*",
"length": 9},
{"name": "flip y", "type": "bool", "default": "false"},
- {"name": "rotation", "type": "external texture rotation", "default": "rotate 0 degrees"}
+ {"name": "rotation", "type": "external texture rotation", "default": "rotate 0 degrees"},
+ {"name": "visible rect", "type": "external texture visible rect"}
]
},
"feature name": {
diff --git a/src/dawn/native/ExternalTexture.cpp b/src/dawn/native/ExternalTexture.cpp
index 33febcd..9a0a919 100644
--- a/src/dawn/native/ExternalTexture.cpp
+++ b/src/dawn/native/ExternalTexture.cpp
@@ -209,25 +209,64 @@
const float* dstFn = descriptor->dstTransferFunctionParameters;
std::copy(dstFn, dstFn + 7, params.gammaEncodingParams.begin());
+ // These scale factors perform part of the cropping operation. These default to 1, so we can use
+ // them directly for performing rotation in the matrix later.
+ float xScale = descriptor->visibleRect.width;
+ float yScale = descriptor->visibleRect.height;
+
+ // In the shader, we must convert UV coordinates from the {0, 1} space to the {-0.5, 0.5} space
+ // to do rotation. Ideally, we want to combine the rotate, flip-Y operations in a single matrix
+ // operation - but this is complicated because scaling most easily occurs in the {0, 1} space.
+ // We can work around this and perform scaling in the {-0.5, 0.5} space by multiplying the
+ // needed conversion constant "+ 0.5" by the scale factor. We then can do this all within a
+ // single matrix operation by calculating and adding this value to the offset specified in the
+ // matrix. For reference, this is the entire operation needed is:
+ //
+ // newCoords = vec3<f32>((coord - 0.5f), 1.0f) * coordTransformationMatrix) + (scaleFactor *
+ // 0.5)
+ //
+ // Because we combine the ending (scaleFactor * 0.5) into the crop offset within the matrix, the
+ // shader is actually:
+ //
+ // newCoords = vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix;
+ //
+ // TODO(dawn:1614): Incorporate the "- 0.5f" into the matrix.
+ float xOffset = descriptor->visibleRect.x + 0.5f * xScale;
+ float yOffset = descriptor->visibleRect.y + 0.5f * yScale;
+
+ // Flip-Y can be done by simply negating the scaling factor in the y-plane. The position of the
+ // y-plane scaling factor in the matrix can be different depending on the rotation.
float flipY = 1;
if (descriptor->flipY) {
flipY = -1;
}
- // We can perform the flip-Y operation by multiplying the y-component portion of the matrix by
- // -1.
+ // This block creates a 2x3 matrix which when multiplied by UV coordinates in a shader performs
+ // rotation, flip-Y and cropping operations.
switch (descriptor->rotation) {
case wgpu::ExternalTextureRotation::Rotate0Degrees:
- params.coordTransformMatrix = {1.0, 0.0, 0.0, 1.0f * flipY};
+ params.coordTransformMatrix = {xScale, 0.0, //
+ xOffset, 0.0, //
+ 0.0, flipY * yScale, //
+ yOffset, 0.0};
break;
case wgpu::ExternalTextureRotation::Rotate90Degrees:
- params.coordTransformMatrix = {0.0, 1.0f * flipY, -1.0, 0.0};
+ params.coordTransformMatrix = {0.0, flipY * yScale, //
+ xOffset, 0.0, //
+ -xScale, 0.0, //
+ yOffset, 0.0};
break;
case wgpu::ExternalTextureRotation::Rotate180Degrees:
- params.coordTransformMatrix = {-1.0, 0.0, 0.0, -1.0f * flipY};
+ params.coordTransformMatrix = {-xScale, 0.0, //
+ xOffset, 0.0, //
+ 0.0, flipY * -yScale, //
+ yOffset, 0.0};
break;
case wgpu::ExternalTextureRotation::Rotate270Degrees:
- params.coordTransformMatrix = {0.0, -1.0f * flipY, 1.0, 0.0};
+ params.coordTransformMatrix = {0.0, flipY * -yScale, //
+ xOffset, 0.0, //
+ xScale, 0.0, //
+ yOffset, 0.0};
break;
}
diff --git a/src/dawn/native/ExternalTexture.h b/src/dawn/native/ExternalTexture.h
index e387076..9570451 100644
--- a/src/dawn/native/ExternalTexture.h
+++ b/src/dawn/native/ExternalTexture.h
@@ -35,7 +35,7 @@
std::array<float, 8> gammaDecodingParams = {};
std::array<float, 8> gammaEncodingParams = {};
std::array<float, 12> gamutConversionMatrix = {};
- std::array<float, 4> coordTransformMatrix = {};
+ std::array<float, 8> coordTransformMatrix = {};
};
MaybeError ValidateExternalTextureDescriptor(const DeviceBase* device,
diff --git a/src/dawn/tests/end2end/ExternalTextureTests.cpp b/src/dawn/tests/end2end/ExternalTextureTests.cpp
index fe43933..b3a833c 100644
--- a/src/dawn/tests/end2end/ExternalTextureTests.cpp
+++ b/src/dawn/tests/end2end/ExternalTextureTests.cpp
@@ -625,6 +625,341 @@
}
}
+// This test draws a 2x2 multi-colored square surrounded by a 1px black border. We test the external
+// texture crop functionality by cropping to specific ranges inside the texture.
+TEST_P(ExternalTextureTests, CropSinglePlane) {
+ // TODO(crbug.com/tint/1774): Tint has an issue compiling shaders that use external textures on
+ // OpenGL/OpenGLES.
+ DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
+
+ const wgpu::ShaderModule sourceTextureFsModule = utils::CreateShaderModule(device, R"(
+ @fragment fn main(@builtin(position) FragCoord : vec4<f32>)
+ -> @location(0) vec4<f32> {
+ if(FragCoord.x >= 1.0 && FragCoord.x < 3.0 && FragCoord.y >= 1.0 && FragCoord.y < 3.0) {
+ if(FragCoord.y < 2.0 && FragCoord.x < 2.0) {
+ return vec4<f32>(0.0, 1.0, 0.0, 1.0);
+ }
+
+ if(FragCoord.y < 2.0 && FragCoord.x >= 2.0) {
+ return vec4<f32>(1.0, 1.0, 1.0, 1.0);
+ }
+
+ if(FragCoord.y >= 2.0 && FragCoord.x < 2.0) {
+ return vec4<f32>(1.0, 0.0, 0.0, 1.0);
+ }
+
+ if(FragCoord.y >= 2.0 && FragCoord.x >= 2.0) {
+ return vec4<f32>(0.0, 0.0, 1.0, 1.0);
+ }
+ }
+
+ return vec4<f32>(0.0, 0.0, 0.0, 1.0);
+ })");
+
+ wgpu::Texture sourceTexture =
+ Create2DTexture(device, kWidth, kHeight, kFormat,
+ wgpu::TextureUsage::TextureBinding | wgpu::TextureUsage::RenderAttachment);
+
+ RenderToSourceTexture(sourceTextureFsModule, sourceTexture);
+
+ wgpu::Texture renderTexture =
+ Create2DTexture(device, kWidth, kHeight, kFormat,
+ wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::RenderAttachment);
+
+ struct CropExpectation {
+ wgpu::ExternalTextureVisibleRect visibleRect;
+ wgpu::ExternalTextureRotation rotation;
+ utils::RGBA8 upperLeftColor;
+ utils::RGBA8 upperRightColor;
+ utils::RGBA8 lowerLeftColor;
+ utils::RGBA8 lowerRightColor;
+ };
+
+ std::array<CropExpectation, 9> expectations = {{
+ {{0.0, 0.0, 1.0, 1.0},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kBlack,
+ utils::RGBA8::kBlack,
+ utils::RGBA8::kBlack,
+ utils::RGBA8::kBlack},
+ {{0.25, 0.25, 0.25, 0.25},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kGreen},
+ {{0.5, 0.25, 0.25, 0.25},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kWhite},
+ {{0.25, 0.5, 0.25, 0.25},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kRed},
+ {{0.5, 0.5, 0.25, 0.25},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kBlue},
+ {{0.25, 0.25, 0.5, 0.5},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kBlue},
+ {{0.25, 0.25, 0.5, 0.5},
+ wgpu::ExternalTextureRotation::Rotate90Degrees,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kWhite},
+ {{0.25, 0.25, 0.5, 0.5},
+ wgpu::ExternalTextureRotation::Rotate180Degrees,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kGreen},
+ {{0.25, 0.25, 0.5, 0.5},
+ wgpu::ExternalTextureRotation::Rotate270Degrees,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kRed},
+ }};
+
+ for (const CropExpectation& exp : expectations) {
+ // Pipeline Creation
+ utils::ComboRenderPipelineDescriptor descriptor;
+ descriptor.vertex.module = vsModule;
+ descriptor.cFragment.module = fsSampleExternalTextureModule;
+ descriptor.cTargets[0].format = kFormat;
+ wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
+
+ // Create an ExternalTextureDescriptor from the texture view
+ wgpu::ExternalTextureDescriptor externalDesc = CreateDefaultExternalTextureDescriptor();
+ externalDesc.plane0 = sourceTexture.CreateView();
+ externalDesc.visibleRect = exp.visibleRect;
+ externalDesc.rotation = exp.rotation;
+
+ // Import the external texture
+ wgpu::ExternalTexture externalTexture = device.CreateExternalTexture(&externalDesc);
+
+ // Create a sampler and bind group
+ wgpu::Sampler sampler = device.CreateSampler();
+
+ wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
+ {{0, sampler}, {1, externalTexture}});
+
+ // Run the shader, which should sample from the external texture and draw a triangle into
+ // the upper left corner of the render texture.
+ wgpu::TextureView renderView = renderTexture.CreateView();
+ utils::ComboRenderPassDescriptor renderPass({renderView}, nullptr);
+ wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+ wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&renderPass);
+ {
+ pass.SetPipeline(pipeline);
+ pass.SetBindGroup(0, bindGroup);
+ pass.Draw(6);
+ pass.End();
+ }
+
+ wgpu::CommandBuffer commands = encoder.Finish();
+ queue.Submit(1, &commands);
+
+ EXPECT_PIXEL_RGBA8_EQ(exp.upperLeftColor, renderTexture, 0, 0);
+ EXPECT_PIXEL_RGBA8_EQ(exp.upperRightColor, renderTexture, 3, 0);
+ EXPECT_PIXEL_RGBA8_EQ(exp.lowerLeftColor, renderTexture, 0, 3);
+ EXPECT_PIXEL_RGBA8_EQ(exp.lowerRightColor, renderTexture, 3, 3);
+ }
+}
+
+// This test draws a 2x2 multi-colored square surrounded by a 1px black border. We test the external
+// texture crop functionality by cropping to specific ranges inside the texture.
+TEST_P(ExternalTextureTests, CropMultiplanar) {
+ // TODO(crbug.com/tint/1774): Tint has an issue compiling shaders that use external textures on
+ // OpenGL/OpenGLES.
+ DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
+
+ const wgpu::ShaderModule sourceTexturePlane0FsModule = utils::CreateShaderModule(device, R"(
+ @fragment fn main(@builtin(position) FragCoord : vec4<f32>)
+ -> @location(0) vec4<f32> {
+ if(FragCoord.x >= 1.0 && FragCoord.x < 3.0 && FragCoord.y >= 1.0 && FragCoord.y < 3.0) {
+ if(FragCoord.y < 2.0 && FragCoord.x < 2.0) {
+ return vec4<f32>(0.7152, 0.0, 0.0, 0.0);
+ }
+
+ if(FragCoord.y < 2.0 && FragCoord.x >= 2.0) {
+ return vec4<f32>(1.0, 0.0, 0.0, 0.0);
+ }
+
+ if(FragCoord.y >= 2.0 && FragCoord.x < 2.0) {
+ return vec4<f32>(0.2126, 0.0, 0.0, 0.0);
+ }
+
+ if(FragCoord.y >= 2.0 && FragCoord.x >= 2.0) {
+ return vec4<f32>(0.0722, 0.0, 1.0, 1.0);
+ }
+ }
+
+ return vec4<f32>(0.0, 0.0, 0.0, 0.0);
+ })");
+
+ const wgpu::ShaderModule sourceTexturePlane1FsModule = utils::CreateShaderModule(device, R"(
+ @fragment fn main(@builtin(position) FragCoord : vec4<f32>)
+ -> @location(0) vec4<f32> {
+ if(FragCoord.x >= 1.0 && FragCoord.x < 3.0 && FragCoord.y >= 1.0 && FragCoord.y < 3.0) {
+ if(FragCoord.y < 2.0 && FragCoord.x < 2.0) {
+ return vec4<f32>(0.1402, 0.0175, 0.0, 0.0);
+ }
+
+ if(FragCoord.y < 2.0 && FragCoord.x >= 2.0) {
+ return vec4<f32>(0.5, 0.5, 0.0, 0.0);
+ }
+
+ if(FragCoord.y >= 2.0 && FragCoord.x < 2.0) {
+ return vec4<f32>(0.4172, 1.0, 0.0, 0.0);
+ }
+
+ if(FragCoord.y >= 2.0 && FragCoord.x >= 2.0) {
+ return vec4<f32>(1.0, 0.4937, 0.0, 0.0);
+ }
+ }
+
+ return vec4<f32>(0.5, 0.5, 0.0, 0.0);
+ })");
+
+ wgpu::Texture sourceTexturePlane0 =
+ Create2DTexture(device, kWidth, kHeight, wgpu::TextureFormat::R8Unorm,
+ wgpu::TextureUsage::TextureBinding | wgpu::TextureUsage::RenderAttachment);
+ wgpu::Texture sourceTexturePlane1 =
+ Create2DTexture(device, kWidth, kHeight, wgpu::TextureFormat::RG8Unorm,
+ wgpu::TextureUsage::TextureBinding | wgpu::TextureUsage::RenderAttachment);
+
+ RenderToSourceTexture(sourceTexturePlane0FsModule, sourceTexturePlane0);
+ RenderToSourceTexture(sourceTexturePlane1FsModule, sourceTexturePlane1);
+
+ wgpu::Texture renderTexture =
+ Create2DTexture(device, kWidth, kHeight, kFormat,
+ wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::RenderAttachment);
+
+ struct CropExpectation {
+ wgpu::ExternalTextureVisibleRect visibleRect;
+ wgpu::ExternalTextureRotation rotation;
+ utils::RGBA8 upperLeftColor;
+ utils::RGBA8 upperRightColor;
+ utils::RGBA8 lowerLeftColor;
+ utils::RGBA8 lowerRightColor;
+ };
+
+ std::array<CropExpectation, 9> expectations = {{
+ {{0.0, 0.0, 1.0, 1.0},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kBlack,
+ utils::RGBA8::kBlack,
+ utils::RGBA8::kBlack,
+ utils::RGBA8::kBlack},
+ {{0.25, 0.25, 0.25, 0.25},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kGreen},
+ {{0.5, 0.25, 0.25, 0.25},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kWhite},
+ {{0.25, 0.5, 0.25, 0.25},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kRed},
+ {{0.5, 0.5, 0.25, 0.25},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kBlue},
+ {{0.25, 0.25, 0.5, 0.5},
+ wgpu::ExternalTextureRotation::Rotate0Degrees,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kBlue},
+ {{0.25, 0.25, 0.5, 0.5},
+ wgpu::ExternalTextureRotation::Rotate90Degrees,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kWhite},
+ {{0.25, 0.25, 0.5, 0.5},
+ wgpu::ExternalTextureRotation::Rotate180Degrees,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kRed,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kGreen},
+ {{0.25, 0.25, 0.5, 0.5},
+ wgpu::ExternalTextureRotation::Rotate270Degrees,
+ utils::RGBA8::kWhite,
+ utils::RGBA8::kBlue,
+ utils::RGBA8::kGreen,
+ utils::RGBA8::kRed},
+ }};
+
+ for (const CropExpectation& exp : expectations) {
+ // Pipeline Creation
+ utils::ComboRenderPipelineDescriptor descriptor;
+ descriptor.vertex.module = vsModule;
+ descriptor.cFragment.module = fsSampleExternalTextureModule;
+ descriptor.cTargets[0].format = kFormat;
+ wgpu::RenderPipeline pipeline = device.CreateRenderPipeline(&descriptor);
+
+ // Create an ExternalTextureDescriptor from the texture view
+ wgpu::ExternalTextureDescriptor externalDesc = CreateDefaultExternalTextureDescriptor();
+ externalDesc.plane0 = sourceTexturePlane0.CreateView();
+ externalDesc.plane1 = sourceTexturePlane1.CreateView();
+ externalDesc.rotation = exp.rotation;
+ externalDesc.visibleRect = exp.visibleRect;
+
+ // Import the external texture
+ wgpu::ExternalTexture externalTexture = device.CreateExternalTexture(&externalDesc);
+
+ // Create a sampler and bind group
+ wgpu::Sampler sampler = device.CreateSampler();
+
+ wgpu::BindGroup bindGroup = utils::MakeBindGroup(device, pipeline.GetBindGroupLayout(0),
+ {{0, sampler}, {1, externalTexture}});
+
+ // Run the shader, which should sample from the external texture and draw a triangle into
+ // the upper left corner of the render texture.
+ wgpu::TextureView renderView = renderTexture.CreateView();
+ utils::ComboRenderPassDescriptor renderPass({renderView}, nullptr);
+ wgpu::CommandEncoder encoder = device.CreateCommandEncoder();
+ wgpu::RenderPassEncoder pass = encoder.BeginRenderPass(&renderPass);
+ {
+ pass.SetPipeline(pipeline);
+ pass.SetBindGroup(0, bindGroup);
+ pass.Draw(6);
+ pass.End();
+ }
+
+ wgpu::CommandBuffer commands = encoder.Finish();
+ queue.Submit(1, &commands);
+
+ EXPECT_PIXEL_RGBA8_EQ(exp.upperLeftColor, renderTexture, 0, 0);
+ EXPECT_PIXEL_RGBA8_EQ(exp.upperRightColor, renderTexture, 3, 0);
+ EXPECT_PIXEL_RGBA8_EQ(exp.lowerLeftColor, renderTexture, 0, 3);
+ EXPECT_PIXEL_RGBA8_EQ(exp.lowerRightColor, renderTexture, 3, 3);
+ }
+}
+
DAWN_INSTANTIATE_TEST(ExternalTextureTests,
D3D12Backend(),
MetalBackend(),
diff --git a/src/tint/transform/multiplanar_external_texture.cc b/src/tint/transform/multiplanar_external_texture.cc
index faced83..e7d8327 100644
--- a/src/tint/transform/multiplanar_external_texture.cc
+++ b/src/tint/transform/multiplanar_external_texture.cc
@@ -262,7 +262,7 @@
b.Member("gammaDecodeParams", b.ty.type_name("GammaTransferParams")),
b.Member("gammaEncodeParams", b.ty.type_name("GammaTransferParams")),
b.Member("gamutConversionMatrix", b.ty.mat3x3<f32>()),
- b.Member("rotationMatrix", b.ty.mat2x2<f32>())};
+ b.Member("coordTransformationMatrix", b.ty.mat2x3<f32>())};
params_struct_sym = b.Symbols().New("ExternalTextureParams");
@@ -315,10 +315,12 @@
const ast::CallExpression* plane_1_call = nullptr;
switch (call_type) {
case sem::BuiltinType::kTextureSampleBaseClampToEdge:
- stmts.Push(b.Decl(b.Let("modifiedCoords",
- b.Add(b.Mul(b.Sub("coord", f32(0.5)),
- b.MemberAccessor("params", "rotationMatrix")),
- f32(0.5)))));
+ // TODO(dawn:1614): Change this statement to incorporate the "- 0.5" into the
+ // matrix.
+ stmts.Push(
+ b.Decl(b.Let("modifiedCoords",
+ b.Mul(b.vec3<f32>(b.Sub("coord", f32(0.5)), f32(1.0f)),
+ b.MemberAccessor("params", "coordTransformationMatrix")))));
stmts.Push(b.Decl(b.Let(
"plane0_dims",
diff --git a/src/tint/transform/multiplanar_external_texture_test.cc b/src/tint/transform/multiplanar_external_texture_test.cc
index b220447..15fa48e 100644
--- a/src/tint/transform/multiplanar_external_texture_test.cc
+++ b/src/tint/transform/multiplanar_external_texture_test.cc
@@ -138,7 +138,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
@@ -194,7 +194,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
@@ -249,7 +249,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -268,7 +268,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -333,7 +333,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -348,7 +348,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -418,7 +418,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
@@ -511,7 +511,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
@@ -603,7 +603,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -622,7 +622,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -702,7 +702,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -717,7 +717,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -807,7 +807,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(4) var ext_tex_plane_1 : texture_2d<f32>;
@@ -844,7 +844,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -918,7 +918,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -933,7 +933,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -1011,7 +1011,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1031,7 +1031,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -1104,7 +1104,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1119,7 +1119,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -1199,7 +1199,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(3) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1218,7 +1218,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -1303,7 +1303,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(3) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1327,7 +1327,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -1408,7 +1408,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1423,7 +1423,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -1509,7 +1509,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1524,7 +1524,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -1598,7 +1598,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
fn f(ext_tex : texture_2d<f32>, ext_tex_plane_1 : texture_2d<f32>, ext_tex_params : ExternalTextureParams) -> vec2<u32> {
@@ -1650,7 +1650,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1667,7 +1667,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
@@ -1746,7 +1746,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
@@ -1766,7 +1766,7 @@
}
fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp : sampler, coord : vec2<f32>, params : ExternalTextureParams) -> vec4<f32> {
- let modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ let modifiedCoords = (vec3<f32>((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
let plane0_dims = vec2<f32>(textureDimensions(plane0, 0));
let plane0_half_texel = (vec2<f32>(0.5) / plane0_dims);
let plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1 - plane0_half_texel));
diff --git a/test/tint/bug/tint/1739.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/1739.wgsl.expected.dxc.hlsl
index ca9e4d4..4e5d194 100644
--- a/test/tint/bug/tint/1739.wgsl.expected.dxc.hlsl
+++ b/test/tint/bug/tint/1739.wgsl.expected.dxc.hlsl
@@ -19,12 +19,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t2, space0);
cbuffer cbuffer_ext_tex_params : register(b3, space0) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> t : register(t0, space0);
RWTexture2D<float4> outImage : register(u1, space0);
@@ -51,14 +51,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_6(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_6(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_8(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_8(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -67,30 +67,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_14 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_14;
+ const GammaTransferParams tint_symbol_13 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_13;
}
-float3x3 tint_symbol_10(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_10(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_12(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_12(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_4(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_4(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_15 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_6(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 64u)), tint_symbol_8(buffer, (offset + 96u)), tint_symbol_10(buffer, (offset + 128u)), tint_symbol_12(buffer, (offset + 176u))};
- return tint_symbol_15;
+ const ExternalTextureParams tint_symbol_14 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_6(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 64u)), tint_symbol_8(buffer, (offset + 96u)), tint_symbol_10(buffer, (offset + 128u)), tint_symbol_12(buffer, (offset + 176u))};
+ return tint_symbol_14;
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/tint/1739.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/1739.wgsl.expected.fxc.hlsl
index ca9e4d4..4e5d194 100644
--- a/test/tint/bug/tint/1739.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/1739.wgsl.expected.fxc.hlsl
@@ -19,12 +19,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t2, space0);
cbuffer cbuffer_ext_tex_params : register(b3, space0) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> t : register(t0, space0);
RWTexture2D<float4> outImage : register(u1, space0);
@@ -51,14 +51,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_6(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_6(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_8(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_8(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -67,30 +67,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_14 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_14;
+ const GammaTransferParams tint_symbol_13 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_13;
}
-float3x3 tint_symbol_10(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_10(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_12(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_12(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_4(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_4(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_15 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_6(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 64u)), tint_symbol_8(buffer, (offset + 96u)), tint_symbol_10(buffer, (offset + 128u)), tint_symbol_12(buffer, (offset + 176u))};
- return tint_symbol_15;
+ const ExternalTextureParams tint_symbol_14 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_6(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 64u)), tint_symbol_8(buffer, (offset + 96u)), tint_symbol_10(buffer, (offset + 128u)), tint_symbol_12(buffer, (offset + 176u))};
+ return tint_symbol_14;
}
[numthreads(1, 1, 1)]
diff --git a/test/tint/bug/tint/1739.wgsl.expected.glsl b/test/tint/bug/tint/1739.wgsl.expected.glsl
index f161025..6f48f14 100644
--- a/test/tint/bug/tint/1739.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1739.wgsl.expected.glsl
@@ -20,24 +20,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- uint pad;
- uint pad_1;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 3, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
layout(rgba8) uniform highp writeonly image2D outImage;
@@ -65,14 +52,10 @@
uniform highp sampler2D t_2;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.pad, val.pad_1, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void tint_symbol() {
- vec4 red = textureLoadExternal(t_2, ext_tex_plane_1_1, clamp(ivec2(10), ivec2(0), ivec2((uvec2(uvec2(textureSize(t_2, 0))) - uvec2(1u)))), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 red = textureLoadExternal(t_2, ext_tex_plane_1_1, clamp(ivec2(10), ivec2(0), ivec2((uvec2(uvec2(textureSize(t_2, 0))) - uvec2(1u)))), ext_tex_params.inner);
imageStore(outImage, clamp(ivec2(0), ivec2(0), ivec2((uvec2(uvec2(imageSize(outImage))) - uvec2(1u)))), red);
- vec4 green = textureLoadExternal(t_2, ext_tex_plane_1_1, clamp(ivec2(70, 118), ivec2(0), ivec2((uvec2(uvec2(textureSize(t_2, 0))) - uvec2(1u)))), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 green = textureLoadExternal(t_2, ext_tex_plane_1_1, clamp(ivec2(70, 118), ivec2(0), ivec2((uvec2(uvec2(textureSize(t_2, 0))) - uvec2(1u)))), ext_tex_params.inner);
imageStore(outImage, clamp(ivec2(1, 0), ivec2(0), ivec2((uvec2(uvec2(imageSize(outImage))) - uvec2(1u)))), green);
return;
}
diff --git a/test/tint/bug/tint/1739.wgsl.expected.msl b/test/tint/bug/tint/1739.wgsl.expected.msl
index 195876b..267f97a 100644
--- a/test/tint/bug/tint/1739.wgsl.expected.msl
+++ b/test/tint/bug/tint/1739.wgsl.expected.msl
@@ -37,7 +37,7 @@
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
/* 0x0080 */ float3x3 gamutConversionMatrix;
- /* 0x00b0 */ float2x2 rotationMatrix;
+ /* 0x00b0 */ float2x3 coordTransformationMatrix;
};
float3 gammaCorrection(float3 v, GammaTransferParams params) {
diff --git a/test/tint/bug/tint/1739.wgsl.expected.spvasm b/test/tint/bug/tint/1739.wgsl.expected.spvasm
index 9bd661e..92f0b5b 100644
--- a/test/tint/bug/tint/1739.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/1739.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 195
+; Bound: 178
; Schema: 0
OpCapability Shader
OpCapability ImageQuery
@@ -10,13 +10,13 @@
OpEntryPoint GLCompute %main "main"
OpExecutionMode %main LocalSize 1 1 1
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -26,10 +26,9 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %t "t"
OpName %outImage "outImage"
@@ -40,35 +39,25 @@
OpName %gammaCorrection "gammaCorrection"
OpName %v "v"
OpName %params "params"
- OpName %ExternalTextureParams "ExternalTextureParams"
- OpMemberName %ExternalTextureParams 0 "numPlanes"
- OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
- OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams 6 "rotationMatrix"
OpName %textureLoadExternal "textureLoadExternal"
OpName %plane0 "plane0"
OpName %plane1 "plane1"
OpName %coord "coord"
OpName %params_0 "params"
OpName %color "color"
- OpName %conv_ExternalTextureParams "conv_ExternalTextureParams"
- OpName %val "val"
OpName %main "main"
OpName %red "red"
OpName %green "green"
OpDecorate %ext_tex_plane_1 DescriptorSet 0
OpDecorate %ext_tex_plane_1 Binding 2
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -77,12 +66,13 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
+ OpMemberDecorate %ExternalTextureParams 4 Offset 96
+ OpMemberDecorate %ExternalTextureParams 5 Offset 128
+ OpMemberDecorate %ExternalTextureParams 5 ColMajor
+ OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 6 Offset 176
+ OpMemberDecorate %ExternalTextureParams 6 ColMajor
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
OpDecorate %ext_tex_params NonWritable
OpDecorate %ext_tex_params DescriptorSet 0
OpDecorate %ext_tex_params Binding 3
@@ -91,19 +81,6 @@
OpDecorate %outImage NonReadable
OpDecorate %outImage DescriptorSet 0
OpDecorate %outImage Binding 1
- OpMemberDecorate %ExternalTextureParams 0 Offset 0
- OpMemberDecorate %ExternalTextureParams 1 Offset 4
- OpMemberDecorate %ExternalTextureParams 2 Offset 16
- OpMemberDecorate %ExternalTextureParams 2 ColMajor
- OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 3 Offset 64
- OpMemberDecorate %ExternalTextureParams 4 Offset 96
- OpMemberDecorate %ExternalTextureParams 5 Offset 128
- OpMemberDecorate %ExternalTextureParams 5 ColMajor
- OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 6 Offset 176
- OpMemberDecorate %ExternalTextureParams 6 ColMajor
- OpMemberDecorate %ExternalTextureParams 6 MatrixStride 8
%float = OpTypeFloat 32
%3 = OpTypeImage %float 2D 0 0 0 1 Unknown
%_ptr_UniformConstant_3 = OpTypePointer UniformConstant %3
@@ -114,11 +91,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%t = OpVariable %_ptr_UniformConstant_3 UniformConstant
%19 = OpTypeImage %float 2D 0 0 0 2 Rgba8
%_ptr_UniformConstant_19 = OpTypePointer UniformConstant %19
@@ -131,31 +108,29 @@
%v3bool = OpTypeVector %bool 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
%50 = OpConstantNull %v3float
-%mat2v2float = OpTypeMatrix %v2float 2
-%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v2float
%70 = OpTypeFunction %v4float %3 %3 %v2int %ExternalTextureParams
%uint_1 = OpConstant %uint 1
- %87 = OpConstantNull %int
+ %85 = OpConstantNull %int
+ %v2float = OpTypeVector %float 2
%float_1 = OpConstant %float 1
- %100 = OpConstantNull %uint
- %118 = OpTypeFunction %ExternalTextureParams %ExternalTextureParams_std140
+ %99 = OpConstantNull %uint
%void = OpTypeVoid
- %132 = OpTypeFunction %void
+ %117 = OpTypeFunction %void
%int_10 = OpConstant %int 10
- %138 = OpConstantComposite %v2int %int_10 %int_10
- %139 = OpConstantNull %v2int
+ %123 = OpConstantComposite %v2int %int_10 %int_10
+ %124 = OpConstantNull %v2int
%v2uint = OpTypeVector %uint 2
%int_0 = OpConstant %int 0
- %146 = OpConstantComposite %v2uint %uint_1 %uint_1
+ %131 = OpConstantComposite %v2uint %uint_1 %uint_1
%uint_0 = OpConstant %uint 0
-%_ptr_Uniform_ExternalTextureParams_std140 = OpTypePointer Uniform %ExternalTextureParams_std140
+%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %158 = OpConstantNull %v4float
+ %142 = OpConstantNull %v4float
%int_70 = OpConstant %int 70
%int_118 = OpConstant %int 118
- %171 = OpConstantComposite %v2int %int_70 %int_118
+ %155 = OpConstantComposite %v2int %int_70 %int_118
%int_1 = OpConstant %int 1
- %186 = OpConstantComposite %v2int %int_1 %87
+ %169 = OpConstantComposite %v2int %int_1 %85
%tint_clamp = OpFunction %v2int None %20
%e = OpFunctionParameter %v2int
%low = OpFunctionParameter %v2int
@@ -206,114 +181,97 @@
%plane1 = OpFunctionParameter %3
%coord = OpFunctionParameter %v2int
%params_0 = OpFunctionParameter %ExternalTextureParams
- %78 = OpLabel
+ %76 = OpLabel
%color = OpVariable %_ptr_Function_v3float Function %50
- %80 = OpCompositeExtract %uint %params_0 0
- %82 = OpIEqual %bool %80 %uint_1
- OpSelectionMerge %83 None
- OpBranchConditional %82 %84 %85
- %84 = OpLabel
- %86 = OpImageFetch %v4float %plane0 %coord Lod %87
- %88 = OpVectorShuffle %v3float %86 %86 0 1 2
- OpStore %color %88
- OpBranch %83
- %85 = OpLabel
- %89 = OpImageFetch %v4float %plane0 %coord Lod %87
- %90 = OpCompositeExtract %float %89 0
- %91 = OpImageFetch %v4float %plane1 %coord Lod %87
- %92 = OpVectorShuffle %v2float %91 %91 0 1
- %93 = OpCompositeExtract %float %92 0
- %94 = OpCompositeExtract %float %92 1
- %96 = OpCompositeConstruct %v4float %90 %93 %94 %float_1
- %97 = OpCompositeExtract %mat3v4float %params_0 2
- %98 = OpVectorTimesMatrix %v3float %96 %97
- OpStore %color %98
- OpBranch %83
+ %78 = OpCompositeExtract %uint %params_0 0
+ %80 = OpIEqual %bool %78 %uint_1
+ OpSelectionMerge %81 None
+ OpBranchConditional %80 %82 %83
+ %82 = OpLabel
+ %84 = OpImageFetch %v4float %plane0 %coord Lod %85
+ %86 = OpVectorShuffle %v3float %84 %84 0 1 2
+ OpStore %color %86
+ OpBranch %81
%83 = OpLabel
- %99 = OpCompositeExtract %uint %params_0 1
- %101 = OpIEqual %bool %99 %100
- OpSelectionMerge %102 None
- OpBranchConditional %101 %103 %102
- %103 = OpLabel
- %105 = OpLoad %v3float %color
- %106 = OpCompositeExtract %GammaTransferParams %params_0 3
- %104 = OpFunctionCall %v3float %gammaCorrection %105 %106
- OpStore %color %104
- %107 = OpCompositeExtract %mat3v3float %params_0 5
- %108 = OpLoad %v3float %color
- %109 = OpMatrixTimesVector %v3float %107 %108
- OpStore %color %109
- %111 = OpLoad %v3float %color
- %112 = OpCompositeExtract %GammaTransferParams %params_0 4
- %110 = OpFunctionCall %v3float %gammaCorrection %111 %112
- OpStore %color %110
- OpBranch %102
+ %87 = OpImageFetch %v4float %plane0 %coord Lod %85
+ %88 = OpCompositeExtract %float %87 0
+ %89 = OpImageFetch %v4float %plane1 %coord Lod %85
+ %91 = OpVectorShuffle %v2float %89 %89 0 1
+ %92 = OpCompositeExtract %float %91 0
+ %93 = OpCompositeExtract %float %91 1
+ %95 = OpCompositeConstruct %v4float %88 %92 %93 %float_1
+ %96 = OpCompositeExtract %mat3v4float %params_0 2
+ %97 = OpVectorTimesMatrix %v3float %95 %96
+ OpStore %color %97
+ OpBranch %81
+ %81 = OpLabel
+ %98 = OpCompositeExtract %uint %params_0 1
+ %100 = OpIEqual %bool %98 %99
+ OpSelectionMerge %101 None
+ OpBranchConditional %100 %102 %101
%102 = OpLabel
- %113 = OpLoad %v3float %color
- %114 = OpCompositeExtract %float %113 0
- %115 = OpCompositeExtract %float %113 1
- %116 = OpCompositeExtract %float %113 2
- %117 = OpCompositeConstruct %v4float %114 %115 %116 %float_1
- OpReturnValue %117
+ %104 = OpLoad %v3float %color
+ %105 = OpCompositeExtract %GammaTransferParams %params_0 3
+ %103 = OpFunctionCall %v3float %gammaCorrection %104 %105
+ OpStore %color %103
+ %106 = OpCompositeExtract %mat3v3float %params_0 5
+ %107 = OpLoad %v3float %color
+ %108 = OpMatrixTimesVector %v3float %106 %107
+ OpStore %color %108
+ %110 = OpLoad %v3float %color
+ %111 = OpCompositeExtract %GammaTransferParams %params_0 4
+ %109 = OpFunctionCall %v3float %gammaCorrection %110 %111
+ OpStore %color %109
+ OpBranch %101
+ %101 = OpLabel
+ %112 = OpLoad %v3float %color
+ %113 = OpCompositeExtract %float %112 0
+ %114 = OpCompositeExtract %float %112 1
+ %115 = OpCompositeExtract %float %112 2
+ %116 = OpCompositeConstruct %v4float %113 %114 %115 %float_1
+ OpReturnValue %116
OpFunctionEnd
-%conv_ExternalTextureParams = OpFunction %ExternalTextureParams None %118
- %val = OpFunctionParameter %ExternalTextureParams_std140
- %121 = OpLabel
- %122 = OpCompositeExtract %uint %val 0
- %123 = OpCompositeExtract %uint %val 1
- %124 = OpCompositeExtract %mat3v4float %val 2
- %125 = OpCompositeExtract %GammaTransferParams %val 3
- %126 = OpCompositeExtract %GammaTransferParams %val 4
- %127 = OpCompositeExtract %mat3v3float %val 5
- %128 = OpCompositeExtract %v2float %val 6
- %129 = OpCompositeExtract %v2float %val 7
- %130 = OpCompositeConstruct %mat2v2float %128 %129
- %131 = OpCompositeConstruct %ExternalTextureParams %122 %123 %124 %125 %126 %127 %130
- OpReturnValue %131
- OpFunctionEnd
- %main = OpFunction %void None %132
- %135 = OpLabel
- %red = OpVariable %_ptr_Function_v4float Function %158
- %green = OpVariable %_ptr_Function_v4float Function %158
- %144 = OpLoad %3 %t
- %143 = OpImageQuerySizeLod %v2uint %144 %int_0
- %147 = OpISub %v2uint %143 %146
- %140 = OpBitcast %v2int %147
- %136 = OpFunctionCall %v2int %tint_clamp %138 %139 %140
- %149 = OpLoad %3 %t
- %150 = OpLoad %3 %ext_tex_plane_1
- %154 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %155 = OpLoad %ExternalTextureParams_std140 %154
- %151 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %155
- %148 = OpFunctionCall %v4float %textureLoadExternal %149 %150 %136 %151
- OpStore %red %148
- %163 = OpLoad %19 %outImage
- %162 = OpImageQuerySize %v2uint %163
- %164 = OpISub %v2uint %162 %146
- %160 = OpBitcast %v2int %164
- %159 = OpFunctionCall %v2int %tint_clamp %139 %139 %160
- %166 = OpLoad %19 %outImage
- %167 = OpLoad %v4float %red
- OpImageWrite %166 %159 %167
- %175 = OpLoad %3 %t
- %174 = OpImageQuerySizeLod %v2uint %175 %int_0
- %176 = OpISub %v2uint %174 %146
- %172 = OpBitcast %v2int %176
- %168 = OpFunctionCall %v2int %tint_clamp %171 %139 %172
- %178 = OpLoad %3 %t
- %179 = OpLoad %3 %ext_tex_plane_1
- %181 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %182 = OpLoad %ExternalTextureParams_std140 %181
- %180 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %182
- %177 = OpFunctionCall %v4float %textureLoadExternal %178 %179 %168 %180
- OpStore %green %177
- %190 = OpLoad %19 %outImage
- %189 = OpImageQuerySize %v2uint %190
- %191 = OpISub %v2uint %189 %146
- %187 = OpBitcast %v2int %191
- %184 = OpFunctionCall %v2int %tint_clamp %186 %139 %187
- %193 = OpLoad %19 %outImage
- %194 = OpLoad %v4float %green
- OpImageWrite %193 %184 %194
+ %main = OpFunction %void None %117
+ %120 = OpLabel
+ %red = OpVariable %_ptr_Function_v4float Function %142
+ %green = OpVariable %_ptr_Function_v4float Function %142
+ %129 = OpLoad %3 %t
+ %128 = OpImageQuerySizeLod %v2uint %129 %int_0
+ %132 = OpISub %v2uint %128 %131
+ %125 = OpBitcast %v2int %132
+ %121 = OpFunctionCall %v2int %tint_clamp %123 %124 %125
+ %134 = OpLoad %3 %t
+ %135 = OpLoad %3 %ext_tex_plane_1
+ %138 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %139 = OpLoad %ExternalTextureParams %138
+ %133 = OpFunctionCall %v4float %textureLoadExternal %134 %135 %121 %139
+ OpStore %red %133
+ %147 = OpLoad %19 %outImage
+ %146 = OpImageQuerySize %v2uint %147
+ %148 = OpISub %v2uint %146 %131
+ %144 = OpBitcast %v2int %148
+ %143 = OpFunctionCall %v2int %tint_clamp %124 %124 %144
+ %150 = OpLoad %19 %outImage
+ %151 = OpLoad %v4float %red
+ OpImageWrite %150 %143 %151
+ %159 = OpLoad %3 %t
+ %158 = OpImageQuerySizeLod %v2uint %159 %int_0
+ %160 = OpISub %v2uint %158 %131
+ %156 = OpBitcast %v2int %160
+ %152 = OpFunctionCall %v2int %tint_clamp %155 %124 %156
+ %162 = OpLoad %3 %t
+ %163 = OpLoad %3 %ext_tex_plane_1
+ %164 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %165 = OpLoad %ExternalTextureParams %164
+ %161 = OpFunctionCall %v4float %textureLoadExternal %162 %163 %152 %165
+ OpStore %green %161
+ %173 = OpLoad %19 %outImage
+ %172 = OpImageQuerySize %v2uint %173
+ %174 = OpISub %v2uint %172 %131
+ %170 = OpBitcast %v2int %174
+ %167 = OpFunctionCall %v2int %tint_clamp %169 %124 %170
+ %176 = OpLoad %19 %outImage
+ %177 = OpLoad %v4float %green
+ OpImageWrite %176 %167 %177
OpReturn
OpFunctionEnd
diff --git a/test/tint/bug/tint/1739.wgsl.expected.wgsl b/test/tint/bug/tint/1739.wgsl.expected.wgsl
index f3d1c98..b3e9613 100644
--- a/test/tint/bug/tint/1739.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1739.wgsl.expected.wgsl
@@ -16,7 +16,7 @@
gammaDecodeParams : GammaTransferParams,
gammaEncodeParams : GammaTransferParams,
gamutConversionMatrix : mat3x3<f32>,
- rotationMatrix : mat2x2<f32>,
+ coordTransformationMatrix : mat2x3<f32>,
}
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.dxc.hlsl
index 1f8d50c..70c59b9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.fxc.hlsl
index 1f8d50c..70c59b9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.glsl
index 06f4c76..166425e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
uniform highp sampler2D arg_0_1;
@@ -75,22 +64,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
uniform highp sampler2D arg_0_1;
@@ -126,22 +104,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
uniform highp sampler2D arg_0_1;
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.msl
index a997980..b15ada1 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.msl
@@ -19,7 +19,7 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
void textureDimensions_cdc6c9(texture2d<float, access::sample> tint_symbol_1) {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.spvasm
index 12d1c58..5cb8e1c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/textureDimensions/cdc6c9.wgsl.expected.spvasm
@@ -14,13 +14,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -30,10 +30,9 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %textureDimensions_cdc6c9 "textureDimensions_cdc6c9"
@@ -46,14 +45,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 1
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -62,12 +61,13 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
+ OpMemberDecorate %ExternalTextureParams 4 Offset 96
+ OpMemberDecorate %ExternalTextureParams 5 Offset 128
+ OpMemberDecorate %ExternalTextureParams 5 ColMajor
+ OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 6 Offset 176
+ OpMemberDecorate %ExternalTextureParams 6 ColMajor
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
OpDecorate %ext_tex_params NonWritable
OpDecorate %ext_tex_params DescriptorSet 1
OpDecorate %ext_tex_params Binding 2
@@ -89,11 +89,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%void = OpTypeVoid
%23 = OpTypeFunction %void
diff --git a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.dxc.hlsl
index 7c4f973..f85afb7 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.dxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -46,14 +46,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -62,30 +62,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureLoad_1bfdfb() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.fxc.hlsl
index 7c4f973..f85afb7 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.fxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -46,14 +46,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -62,30 +62,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureLoad_1bfdfb() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.glsl
index e9ad0a8..f86097c 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -60,12 +49,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_1bfdfb() {
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, uvec2(1u), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, uvec2(1u), ext_tex_params.inner);
}
vec4 vertex_main() {
@@ -102,22 +87,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -144,12 +118,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_1bfdfb() {
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, uvec2(1u), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, uvec2(1u), ext_tex_params.inner);
}
void fragment_main() {
@@ -180,22 +150,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -222,12 +181,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_1bfdfb() {
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, uvec2(1u), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, uvec2(1u), ext_tex_params.inner);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.msl
index f4a8d7a..193efc6 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.msl
@@ -33,7 +33,7 @@
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
/* 0x0080 */ float3x3 gamutConversionMatrix;
- /* 0x00b0 */ float2x2 rotationMatrix;
+ /* 0x00b0 */ float2x3 coordTransformationMatrix;
};
float3 gammaCorrection(float3 v, GammaTransferParams params) {
diff --git a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.spvasm
index a8b4a3d..8e3400a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 155
+; Bound: 139
; Schema: 0
OpCapability Shader
%29 = OpExtInstImport "GLSL.std.450"
@@ -14,13 +14,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -30,31 +30,20 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %gammaCorrection "gammaCorrection"
OpName %v "v"
OpName %params "params"
- OpName %ExternalTextureParams "ExternalTextureParams"
- OpMemberName %ExternalTextureParams 0 "numPlanes"
- OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
- OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams 6 "rotationMatrix"
OpName %textureLoadExternal "textureLoadExternal"
OpName %plane0 "plane0"
OpName %plane1 "plane1"
OpName %coord "coord"
OpName %params_0 "params"
OpName %color "color"
- OpName %conv_ExternalTextureParams "conv_ExternalTextureParams"
- OpName %val "val"
OpName %textureLoad_1bfdfb "textureLoad_1bfdfb"
OpName %res "res"
OpName %vertex_main_inner "vertex_main_inner"
@@ -65,14 +54,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 1
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -81,30 +70,18 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
- OpDecorate %ext_tex_params NonWritable
- OpDecorate %ext_tex_params DescriptorSet 1
- OpDecorate %ext_tex_params Binding 2
- OpDecorate %arg_0 DescriptorSet 1
- OpDecorate %arg_0 Binding 0
- OpMemberDecorate %ExternalTextureParams 0 Offset 0
- OpMemberDecorate %ExternalTextureParams 1 Offset 4
- OpMemberDecorate %ExternalTextureParams 2 Offset 16
- OpMemberDecorate %ExternalTextureParams 2 ColMajor
- OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %ExternalTextureParams 4 Offset 96
OpMemberDecorate %ExternalTextureParams 5 Offset 128
OpMemberDecorate %ExternalTextureParams 5 ColMajor
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
OpMemberDecorate %ExternalTextureParams 6 Offset 176
OpMemberDecorate %ExternalTextureParams 6 ColMajor
- OpMemberDecorate %ExternalTextureParams 6 MatrixStride 8
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
+ OpDecorate %ext_tex_params NonWritable
+ OpDecorate %ext_tex_params DescriptorSet 1
+ OpDecorate %ext_tex_params Binding 2
+ OpDecorate %arg_0 DescriptorSet 1
+ OpDecorate %arg_0 Binding 0
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@@ -121,11 +98,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%23 = OpTypeFunction %v3float %v3float %GammaTransferParams
%bool = OpTypeBool
@@ -133,22 +110,20 @@
%_ptr_Function_v3float = OpTypePointer Function %v3float
%43 = OpConstantNull %v3float
%v2uint = OpTypeVector %uint 2
-%mat2v2float = OpTypeMatrix %v2float 2
-%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v2float
%63 = OpTypeFunction %v4float %11 %11 %v2uint %ExternalTextureParams
%uint_1 = OpConstant %uint 1
%int = OpTypeInt 32 1
- %82 = OpConstantNull %int
+ %80 = OpConstantNull %int
+ %v2float = OpTypeVector %float 2
%float_1 = OpConstant %float 1
- %95 = OpConstantNull %uint
- %113 = OpTypeFunction %ExternalTextureParams %ExternalTextureParams_std140
+ %94 = OpConstantNull %uint
%void = OpTypeVoid
- %127 = OpTypeFunction %void
- %134 = OpConstantComposite %v2uint %uint_1 %uint_1
+ %112 = OpTypeFunction %void
+ %119 = OpConstantComposite %v2uint %uint_1 %uint_1
%uint_0 = OpConstant %uint 0
-%_ptr_Uniform_ExternalTextureParams_std140 = OpTypePointer Uniform %ExternalTextureParams_std140
+%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %142 = OpTypeFunction %v4float
+ %126 = OpTypeFunction %v4float
%gammaCorrection = OpFunction %v3float None %23
%v = OpFunctionParameter %v3float
%params = OpFunctionParameter %GammaTransferParams
@@ -190,102 +165,86 @@
%plane1 = OpFunctionParameter %11
%coord = OpFunctionParameter %v2uint
%params_0 = OpFunctionParameter %ExternalTextureParams
- %72 = OpLabel
+ %70 = OpLabel
%color = OpVariable %_ptr_Function_v3float Function %43
- %74 = OpCompositeExtract %uint %params_0 0
- %76 = OpIEqual %bool %74 %uint_1
- OpSelectionMerge %77 None
- OpBranchConditional %76 %78 %79
- %78 = OpLabel
- %80 = OpImageFetch %v4float %plane0 %coord Lod %82
- %83 = OpVectorShuffle %v3float %80 %80 0 1 2
- OpStore %color %83
- OpBranch %77
- %79 = OpLabel
- %84 = OpImageFetch %v4float %plane0 %coord Lod %82
- %85 = OpCompositeExtract %float %84 0
- %86 = OpImageFetch %v4float %plane1 %coord Lod %82
- %87 = OpVectorShuffle %v2float %86 %86 0 1
- %88 = OpCompositeExtract %float %87 0
- %89 = OpCompositeExtract %float %87 1
- %91 = OpCompositeConstruct %v4float %85 %88 %89 %float_1
- %92 = OpCompositeExtract %mat3v4float %params_0 2
- %93 = OpVectorTimesMatrix %v3float %91 %92
- OpStore %color %93
- OpBranch %77
+ %72 = OpCompositeExtract %uint %params_0 0
+ %74 = OpIEqual %bool %72 %uint_1
+ OpSelectionMerge %75 None
+ OpBranchConditional %74 %76 %77
+ %76 = OpLabel
+ %78 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %81 = OpVectorShuffle %v3float %78 %78 0 1 2
+ OpStore %color %81
+ OpBranch %75
%77 = OpLabel
- %94 = OpCompositeExtract %uint %params_0 1
- %96 = OpIEqual %bool %94 %95
- OpSelectionMerge %97 None
- OpBranchConditional %96 %98 %97
- %98 = OpLabel
- %100 = OpLoad %v3float %color
- %101 = OpCompositeExtract %GammaTransferParams %params_0 3
- %99 = OpFunctionCall %v3float %gammaCorrection %100 %101
- OpStore %color %99
- %102 = OpCompositeExtract %mat3v3float %params_0 5
- %103 = OpLoad %v3float %color
- %104 = OpMatrixTimesVector %v3float %102 %103
- OpStore %color %104
- %106 = OpLoad %v3float %color
- %107 = OpCompositeExtract %GammaTransferParams %params_0 4
- %105 = OpFunctionCall %v3float %gammaCorrection %106 %107
- OpStore %color %105
- OpBranch %97
+ %82 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %83 = OpCompositeExtract %float %82 0
+ %84 = OpImageFetch %v4float %plane1 %coord Lod %80
+ %86 = OpVectorShuffle %v2float %84 %84 0 1
+ %87 = OpCompositeExtract %float %86 0
+ %88 = OpCompositeExtract %float %86 1
+ %90 = OpCompositeConstruct %v4float %83 %87 %88 %float_1
+ %91 = OpCompositeExtract %mat3v4float %params_0 2
+ %92 = OpVectorTimesMatrix %v3float %90 %91
+ OpStore %color %92
+ OpBranch %75
+ %75 = OpLabel
+ %93 = OpCompositeExtract %uint %params_0 1
+ %95 = OpIEqual %bool %93 %94
+ OpSelectionMerge %96 None
+ OpBranchConditional %95 %97 %96
%97 = OpLabel
- %108 = OpLoad %v3float %color
- %109 = OpCompositeExtract %float %108 0
- %110 = OpCompositeExtract %float %108 1
- %111 = OpCompositeExtract %float %108 2
- %112 = OpCompositeConstruct %v4float %109 %110 %111 %float_1
- OpReturnValue %112
+ %99 = OpLoad %v3float %color
+ %100 = OpCompositeExtract %GammaTransferParams %params_0 3
+ %98 = OpFunctionCall %v3float %gammaCorrection %99 %100
+ OpStore %color %98
+ %101 = OpCompositeExtract %mat3v3float %params_0 5
+ %102 = OpLoad %v3float %color
+ %103 = OpMatrixTimesVector %v3float %101 %102
+ OpStore %color %103
+ %105 = OpLoad %v3float %color
+ %106 = OpCompositeExtract %GammaTransferParams %params_0 4
+ %104 = OpFunctionCall %v3float %gammaCorrection %105 %106
+ OpStore %color %104
+ OpBranch %96
+ %96 = OpLabel
+ %107 = OpLoad %v3float %color
+ %108 = OpCompositeExtract %float %107 0
+ %109 = OpCompositeExtract %float %107 1
+ %110 = OpCompositeExtract %float %107 2
+ %111 = OpCompositeConstruct %v4float %108 %109 %110 %float_1
+ OpReturnValue %111
OpFunctionEnd
-%conv_ExternalTextureParams = OpFunction %ExternalTextureParams None %113
- %val = OpFunctionParameter %ExternalTextureParams_std140
- %116 = OpLabel
- %117 = OpCompositeExtract %uint %val 0
- %118 = OpCompositeExtract %uint %val 1
- %119 = OpCompositeExtract %mat3v4float %val 2
- %120 = OpCompositeExtract %GammaTransferParams %val 3
- %121 = OpCompositeExtract %GammaTransferParams %val 4
- %122 = OpCompositeExtract %mat3v3float %val 5
- %123 = OpCompositeExtract %v2float %val 6
- %124 = OpCompositeExtract %v2float %val 7
- %125 = OpCompositeConstruct %mat2v2float %123 %124
- %126 = OpCompositeConstruct %ExternalTextureParams %117 %118 %119 %120 %121 %122 %125
- OpReturnValue %126
- OpFunctionEnd
-%textureLoad_1bfdfb = OpFunction %void None %127
- %130 = OpLabel
+%textureLoad_1bfdfb = OpFunction %void None %112
+ %115 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %5
- %132 = OpLoad %11 %arg_0
- %133 = OpLoad %11 %ext_tex_plane_1
- %138 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %139 = OpLoad %ExternalTextureParams_std140 %138
- %135 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %139
- %131 = OpFunctionCall %v4float %textureLoadExternal %132 %133 %134 %135
- OpStore %res %131
+ %117 = OpLoad %11 %arg_0
+ %118 = OpLoad %11 %ext_tex_plane_1
+ %122 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %123 = OpLoad %ExternalTextureParams %122
+ %116 = OpFunctionCall %v4float %textureLoadExternal %117 %118 %119 %123
+ OpStore %res %116
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %142
- %144 = OpLabel
- %145 = OpFunctionCall %void %textureLoad_1bfdfb
+%vertex_main_inner = OpFunction %v4float None %126
+ %128 = OpLabel
+ %129 = OpFunctionCall %void %textureLoad_1bfdfb
OpReturnValue %5
OpFunctionEnd
-%vertex_main = OpFunction %void None %127
- %147 = OpLabel
- %148 = OpFunctionCall %v4float %vertex_main_inner
- OpStore %value %148
+%vertex_main = OpFunction %void None %112
+ %131 = OpLabel
+ %132 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %132
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %127
- %150 = OpLabel
- %151 = OpFunctionCall %void %textureLoad_1bfdfb
+%fragment_main = OpFunction %void None %112
+ %134 = OpLabel
+ %135 = OpFunctionCall %void %textureLoad_1bfdfb
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %127
- %153 = OpLabel
- %154 = OpFunctionCall %void %textureLoad_1bfdfb
+%compute_main = OpFunction %void None %112
+ %137 = OpLabel
+ %138 = OpFunctionCall %void %textureLoad_1bfdfb
OpReturn
OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.dxc.hlsl
index 224f88e..c48e41a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.dxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -46,14 +46,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -62,30 +62,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureLoad_8acf41() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.fxc.hlsl
index 224f88e..c48e41a 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.fxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -46,14 +46,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -62,30 +62,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureLoad_8acf41() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
index 8295034..c01f779 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -60,12 +49,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_8acf41() {
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(1), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(1), ext_tex_params.inner);
}
vec4 vertex_main() {
@@ -102,22 +87,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -144,12 +118,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_8acf41() {
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(1), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(1), ext_tex_params.inner);
}
void fragment_main() {
@@ -180,22 +150,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -222,12 +181,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_8acf41() {
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(1), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, ivec2(1), ext_tex_params.inner);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.msl
index bcf4e6b..67fdf13 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.msl
@@ -33,7 +33,7 @@
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
/* 0x0080 */ float3x3 gamutConversionMatrix;
- /* 0x00b0 */ float2x2 rotationMatrix;
+ /* 0x00b0 */ float2x3 coordTransformationMatrix;
};
float3 gammaCorrection(float3 v, GammaTransferParams params) {
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.spvasm
index 5b6a94a..1c3c4e2 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 156
+; Bound: 140
; Schema: 0
OpCapability Shader
%29 = OpExtInstImport "GLSL.std.450"
@@ -14,13 +14,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -30,31 +30,20 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %gammaCorrection "gammaCorrection"
OpName %v "v"
OpName %params "params"
- OpName %ExternalTextureParams "ExternalTextureParams"
- OpMemberName %ExternalTextureParams 0 "numPlanes"
- OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
- OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams 6 "rotationMatrix"
OpName %textureLoadExternal "textureLoadExternal"
OpName %plane0 "plane0"
OpName %plane1 "plane1"
OpName %coord "coord"
OpName %params_0 "params"
OpName %color "color"
- OpName %conv_ExternalTextureParams "conv_ExternalTextureParams"
- OpName %val "val"
OpName %textureLoad_8acf41 "textureLoad_8acf41"
OpName %res "res"
OpName %vertex_main_inner "vertex_main_inner"
@@ -65,14 +54,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 1
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -81,30 +70,18 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
- OpDecorate %ext_tex_params NonWritable
- OpDecorate %ext_tex_params DescriptorSet 1
- OpDecorate %ext_tex_params Binding 2
- OpDecorate %arg_0 DescriptorSet 1
- OpDecorate %arg_0 Binding 0
- OpMemberDecorate %ExternalTextureParams 0 Offset 0
- OpMemberDecorate %ExternalTextureParams 1 Offset 4
- OpMemberDecorate %ExternalTextureParams 2 Offset 16
- OpMemberDecorate %ExternalTextureParams 2 ColMajor
- OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %ExternalTextureParams 4 Offset 96
OpMemberDecorate %ExternalTextureParams 5 Offset 128
OpMemberDecorate %ExternalTextureParams 5 ColMajor
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
OpMemberDecorate %ExternalTextureParams 6 Offset 176
OpMemberDecorate %ExternalTextureParams 6 ColMajor
- OpMemberDecorate %ExternalTextureParams 6 MatrixStride 8
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
+ OpDecorate %ext_tex_params NonWritable
+ OpDecorate %ext_tex_params DescriptorSet 1
+ OpDecorate %ext_tex_params Binding 2
+ OpDecorate %arg_0 DescriptorSet 1
+ OpDecorate %arg_0 Binding 0
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@@ -121,11 +98,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%23 = OpTypeFunction %v3float %v3float %GammaTransferParams
%bool = OpTypeBool
@@ -134,22 +111,20 @@
%43 = OpConstantNull %v3float
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
-%mat2v2float = OpTypeMatrix %v2float 2
-%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v2float
%63 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams
%uint_1 = OpConstant %uint 1
- %82 = OpConstantNull %int
+ %80 = OpConstantNull %int
+ %v2float = OpTypeVector %float 2
%float_1 = OpConstant %float 1
- %95 = OpConstantNull %uint
- %113 = OpTypeFunction %ExternalTextureParams %ExternalTextureParams_std140
+ %94 = OpConstantNull %uint
%void = OpTypeVoid
- %127 = OpTypeFunction %void
+ %112 = OpTypeFunction %void
%int_1 = OpConstant %int 1
- %135 = OpConstantComposite %v2int %int_1 %int_1
+ %120 = OpConstantComposite %v2int %int_1 %int_1
%uint_0 = OpConstant %uint 0
-%_ptr_Uniform_ExternalTextureParams_std140 = OpTypePointer Uniform %ExternalTextureParams_std140
+%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %143 = OpTypeFunction %v4float
+ %127 = OpTypeFunction %v4float
%gammaCorrection = OpFunction %v3float None %23
%v = OpFunctionParameter %v3float
%params = OpFunctionParameter %GammaTransferParams
@@ -191,102 +166,86 @@
%plane1 = OpFunctionParameter %11
%coord = OpFunctionParameter %v2int
%params_0 = OpFunctionParameter %ExternalTextureParams
- %73 = OpLabel
+ %71 = OpLabel
%color = OpVariable %_ptr_Function_v3float Function %43
- %75 = OpCompositeExtract %uint %params_0 0
- %77 = OpIEqual %bool %75 %uint_1
- OpSelectionMerge %78 None
- OpBranchConditional %77 %79 %80
- %79 = OpLabel
- %81 = OpImageFetch %v4float %plane0 %coord Lod %82
- %83 = OpVectorShuffle %v3float %81 %81 0 1 2
- OpStore %color %83
- OpBranch %78
- %80 = OpLabel
- %84 = OpImageFetch %v4float %plane0 %coord Lod %82
- %85 = OpCompositeExtract %float %84 0
- %86 = OpImageFetch %v4float %plane1 %coord Lod %82
- %87 = OpVectorShuffle %v2float %86 %86 0 1
- %88 = OpCompositeExtract %float %87 0
- %89 = OpCompositeExtract %float %87 1
- %91 = OpCompositeConstruct %v4float %85 %88 %89 %float_1
- %92 = OpCompositeExtract %mat3v4float %params_0 2
- %93 = OpVectorTimesMatrix %v3float %91 %92
- OpStore %color %93
- OpBranch %78
+ %73 = OpCompositeExtract %uint %params_0 0
+ %75 = OpIEqual %bool %73 %uint_1
+ OpSelectionMerge %76 None
+ OpBranchConditional %75 %77 %78
+ %77 = OpLabel
+ %79 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %81 = OpVectorShuffle %v3float %79 %79 0 1 2
+ OpStore %color %81
+ OpBranch %76
%78 = OpLabel
- %94 = OpCompositeExtract %uint %params_0 1
- %96 = OpIEqual %bool %94 %95
- OpSelectionMerge %97 None
- OpBranchConditional %96 %98 %97
- %98 = OpLabel
- %100 = OpLoad %v3float %color
- %101 = OpCompositeExtract %GammaTransferParams %params_0 3
- %99 = OpFunctionCall %v3float %gammaCorrection %100 %101
- OpStore %color %99
- %102 = OpCompositeExtract %mat3v3float %params_0 5
- %103 = OpLoad %v3float %color
- %104 = OpMatrixTimesVector %v3float %102 %103
- OpStore %color %104
- %106 = OpLoad %v3float %color
- %107 = OpCompositeExtract %GammaTransferParams %params_0 4
- %105 = OpFunctionCall %v3float %gammaCorrection %106 %107
- OpStore %color %105
- OpBranch %97
+ %82 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %83 = OpCompositeExtract %float %82 0
+ %84 = OpImageFetch %v4float %plane1 %coord Lod %80
+ %86 = OpVectorShuffle %v2float %84 %84 0 1
+ %87 = OpCompositeExtract %float %86 0
+ %88 = OpCompositeExtract %float %86 1
+ %90 = OpCompositeConstruct %v4float %83 %87 %88 %float_1
+ %91 = OpCompositeExtract %mat3v4float %params_0 2
+ %92 = OpVectorTimesMatrix %v3float %90 %91
+ OpStore %color %92
+ OpBranch %76
+ %76 = OpLabel
+ %93 = OpCompositeExtract %uint %params_0 1
+ %95 = OpIEqual %bool %93 %94
+ OpSelectionMerge %96 None
+ OpBranchConditional %95 %97 %96
%97 = OpLabel
- %108 = OpLoad %v3float %color
- %109 = OpCompositeExtract %float %108 0
- %110 = OpCompositeExtract %float %108 1
- %111 = OpCompositeExtract %float %108 2
- %112 = OpCompositeConstruct %v4float %109 %110 %111 %float_1
- OpReturnValue %112
+ %99 = OpLoad %v3float %color
+ %100 = OpCompositeExtract %GammaTransferParams %params_0 3
+ %98 = OpFunctionCall %v3float %gammaCorrection %99 %100
+ OpStore %color %98
+ %101 = OpCompositeExtract %mat3v3float %params_0 5
+ %102 = OpLoad %v3float %color
+ %103 = OpMatrixTimesVector %v3float %101 %102
+ OpStore %color %103
+ %105 = OpLoad %v3float %color
+ %106 = OpCompositeExtract %GammaTransferParams %params_0 4
+ %104 = OpFunctionCall %v3float %gammaCorrection %105 %106
+ OpStore %color %104
+ OpBranch %96
+ %96 = OpLabel
+ %107 = OpLoad %v3float %color
+ %108 = OpCompositeExtract %float %107 0
+ %109 = OpCompositeExtract %float %107 1
+ %110 = OpCompositeExtract %float %107 2
+ %111 = OpCompositeConstruct %v4float %108 %109 %110 %float_1
+ OpReturnValue %111
OpFunctionEnd
-%conv_ExternalTextureParams = OpFunction %ExternalTextureParams None %113
- %val = OpFunctionParameter %ExternalTextureParams_std140
- %116 = OpLabel
- %117 = OpCompositeExtract %uint %val 0
- %118 = OpCompositeExtract %uint %val 1
- %119 = OpCompositeExtract %mat3v4float %val 2
- %120 = OpCompositeExtract %GammaTransferParams %val 3
- %121 = OpCompositeExtract %GammaTransferParams %val 4
- %122 = OpCompositeExtract %mat3v3float %val 5
- %123 = OpCompositeExtract %v2float %val 6
- %124 = OpCompositeExtract %v2float %val 7
- %125 = OpCompositeConstruct %mat2v2float %123 %124
- %126 = OpCompositeConstruct %ExternalTextureParams %117 %118 %119 %120 %121 %122 %125
- OpReturnValue %126
- OpFunctionEnd
-%textureLoad_8acf41 = OpFunction %void None %127
- %130 = OpLabel
+%textureLoad_8acf41 = OpFunction %void None %112
+ %115 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %5
- %132 = OpLoad %11 %arg_0
- %133 = OpLoad %11 %ext_tex_plane_1
- %139 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %140 = OpLoad %ExternalTextureParams_std140 %139
- %136 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %140
- %131 = OpFunctionCall %v4float %textureLoadExternal %132 %133 %135 %136
- OpStore %res %131
+ %117 = OpLoad %11 %arg_0
+ %118 = OpLoad %11 %ext_tex_plane_1
+ %123 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %124 = OpLoad %ExternalTextureParams %123
+ %116 = OpFunctionCall %v4float %textureLoadExternal %117 %118 %120 %124
+ OpStore %res %116
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %143
- %145 = OpLabel
- %146 = OpFunctionCall %void %textureLoad_8acf41
+%vertex_main_inner = OpFunction %v4float None %127
+ %129 = OpLabel
+ %130 = OpFunctionCall %void %textureLoad_8acf41
OpReturnValue %5
OpFunctionEnd
-%vertex_main = OpFunction %void None %127
- %148 = OpLabel
- %149 = OpFunctionCall %v4float %vertex_main_inner
- OpStore %value %149
+%vertex_main = OpFunction %void None %112
+ %132 = OpLabel
+ %133 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %133
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %127
- %151 = OpLabel
- %152 = OpFunctionCall %void %textureLoad_8acf41
+%fragment_main = OpFunction %void None %112
+ %135 = OpLabel
+ %136 = OpFunctionCall %void %textureLoad_8acf41
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %127
- %154 = OpLabel
- %155 = OpFunctionCall %void %textureLoad_8acf41
+%compute_main = OpFunction %void None %112
+ %138 = OpLabel
+ %139 = OpFunctionCall %void %textureLoad_8acf41
OpReturn
OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl
index fb6084b..1cf5c8d 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t2, space1);
cbuffer cbuffer_ext_tex_params : register(b3, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
SamplerState arg_1 : register(s1, space1);
@@ -33,7 +33,7 @@
}
float4 textureSampleExternal(Texture2D<float4> plane0, Texture2D<float4> plane1, SamplerState smp, float2 coord, ExternalTextureParams params) {
- const float2 modifiedCoords = (mul(params.rotationMatrix, (coord - 0.5f)) + 0.5f);
+ const float2 modifiedCoords = mul(params.coordTransformationMatrix, float3((coord - 0.5f), 1.0f));
int3 tint_tmp;
plane0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
const float2 plane0_dims = float2(tint_tmp.xy);
@@ -58,14 +58,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -74,30 +74,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureSampleBaseClampToEdge_7c04e6() {
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl
index fb6084b..1cf5c8d 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t2, space1);
cbuffer cbuffer_ext_tex_params : register(b3, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
SamplerState arg_1 : register(s1, space1);
@@ -33,7 +33,7 @@
}
float4 textureSampleExternal(Texture2D<float4> plane0, Texture2D<float4> plane1, SamplerState smp, float2 coord, ExternalTextureParams params) {
- const float2 modifiedCoords = (mul(params.rotationMatrix, (coord - 0.5f)) + 0.5f);
+ const float2 modifiedCoords = mul(params.coordTransformationMatrix, float3((coord - 0.5f), 1.0f));
int3 tint_tmp;
plane0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
const float2 plane0_dims = float2(tint_tmp.xy);
@@ -58,14 +58,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -74,30 +74,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureSampleBaseClampToEdge_7c04e6() {
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
index 5a0d27b..e76d774 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 3, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -45,7 +34,7 @@
vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) {
- vec2 modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ vec2 modifiedCoords = (vec3((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
vec2 plane0_dims = vec2(uvec2(textureSize(plane0_1, 0)));
vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims);
vec2 plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1.0f - plane0_half_texel));
@@ -70,12 +59,8 @@
uniform highp sampler2D ext_tex_plane_1_1;
uniform highp sampler2D arg_0_arg_1;
uniform highp sampler2D ext_tex_plane_1_arg_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureSampleBaseClampToEdge_7c04e6() {
- vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(1.0f), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(1.0f), ext_tex_params.inner);
}
vec4 vertex_main() {
@@ -112,22 +97,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 3, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -139,7 +113,7 @@
vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) {
- vec2 modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ vec2 modifiedCoords = (vec3((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
vec2 plane0_dims = vec2(uvec2(textureSize(plane0_1, 0)));
vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims);
vec2 plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1.0f - plane0_half_texel));
@@ -164,12 +138,8 @@
uniform highp sampler2D ext_tex_plane_1_1;
uniform highp sampler2D arg_0_arg_1;
uniform highp sampler2D ext_tex_plane_1_arg_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureSampleBaseClampToEdge_7c04e6() {
- vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(1.0f), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(1.0f), ext_tex_params.inner);
}
void fragment_main() {
@@ -200,22 +170,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 3, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -227,7 +186,7 @@
vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) {
- vec2 modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ vec2 modifiedCoords = (vec3((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
vec2 plane0_dims = vec2(uvec2(textureSize(plane0_1, 0)));
vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims);
vec2 plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1.0f - plane0_half_texel));
@@ -252,12 +211,8 @@
uniform highp sampler2D ext_tex_plane_1_1;
uniform highp sampler2D arg_0_arg_1;
uniform highp sampler2D ext_tex_plane_1_arg_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureSampleBaseClampToEdge_7c04e6() {
- vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(1.0f), conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, vec2(1.0f), ext_tex_params.inner);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl
index 76ac2f5..381d6ab 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl
@@ -33,7 +33,7 @@
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
/* 0x0080 */ float3x3 gamutConversionMatrix;
- /* 0x00b0 */ float2x2 rotationMatrix;
+ /* 0x00b0 */ float2x3 coordTransformationMatrix;
};
float3 gammaCorrection(float3 v, GammaTransferParams params) {
@@ -44,7 +44,7 @@
}
float4 textureSampleExternal(texture2d<float, access::sample> plane0, texture2d<float, access::sample> plane1, sampler smp, float2 coord, ExternalTextureParams params) {
- float2 const modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ float2 const modifiedCoords = (float3((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
float2 const plane0_dims = float2(uint2(plane0.get_width(0), plane0.get_height(0)));
float2 const plane0_half_texel = (float2(0.5f) / plane0_dims);
float2 const plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1.0f - plane0_half_texel));
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm
index a51be75..3138560 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 190
+; Bound: 174
; Schema: 0
OpCapability Shader
OpCapability ImageQuery
@@ -15,13 +15,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -31,24 +31,15 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %arg_1 "arg_1"
OpName %gammaCorrection "gammaCorrection"
OpName %v "v"
OpName %params "params"
- OpName %ExternalTextureParams "ExternalTextureParams"
- OpMemberName %ExternalTextureParams 0 "numPlanes"
- OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
- OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams 6 "rotationMatrix"
OpName %textureSampleExternal "textureSampleExternal"
OpName %plane0 "plane0"
OpName %plane1 "plane1"
@@ -56,8 +47,6 @@
OpName %coord "coord"
OpName %params_0 "params"
OpName %color "color"
- OpName %conv_ExternalTextureParams "conv_ExternalTextureParams"
- OpName %val "val"
OpName %textureSampleBaseClampToEdge_7c04e6 "textureSampleBaseClampToEdge_7c04e6"
OpName %res "res"
OpName %vertex_main_inner "vertex_main_inner"
@@ -68,14 +57,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 2
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -84,12 +73,13 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
+ OpMemberDecorate %ExternalTextureParams 4 Offset 96
+ OpMemberDecorate %ExternalTextureParams 5 Offset 128
+ OpMemberDecorate %ExternalTextureParams 5 ColMajor
+ OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 6 Offset 176
+ OpMemberDecorate %ExternalTextureParams 6 ColMajor
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
OpDecorate %ext_tex_params NonWritable
OpDecorate %ext_tex_params DescriptorSet 1
OpDecorate %ext_tex_params Binding 3
@@ -97,19 +87,6 @@
OpDecorate %arg_0 Binding 0
OpDecorate %arg_1 DescriptorSet 1
OpDecorate %arg_1 Binding 1
- OpMemberDecorate %ExternalTextureParams 0 Offset 0
- OpMemberDecorate %ExternalTextureParams 1 Offset 4
- OpMemberDecorate %ExternalTextureParams 2 Offset 16
- OpMemberDecorate %ExternalTextureParams 2 ColMajor
- OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 3 Offset 64
- OpMemberDecorate %ExternalTextureParams 4 Offset 96
- OpMemberDecorate %ExternalTextureParams 5 Offset 128
- OpMemberDecorate %ExternalTextureParams 5 ColMajor
- OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 6 Offset 176
- OpMemberDecorate %ExternalTextureParams 6 ColMajor
- OpMemberDecorate %ExternalTextureParams 6 MatrixStride 8
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@@ -126,11 +103,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%25 = OpTypeSampler
%_ptr_UniformConstant_25 = OpTypePointer UniformConstant %25
@@ -140,28 +117,26 @@
%v3bool = OpTypeVector %bool 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
%46 = OpConstantNull %v3float
-%mat2v2float = OpTypeMatrix %v2float 2
-%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v2float
+ %v2float = OpTypeVector %float 2
%66 = OpTypeFunction %v4float %11 %11 %25 %v2float %ExternalTextureParams
%float_0_5 = OpConstant %float 0.5
%_ptr_Function_v2float = OpTypePointer Function %v2float
- %80 = OpConstantNull %v2float
+ %79 = OpConstantNull %v2float
+ %float_1 = OpConstant %float 1
%v2uint = OpTypeVector %uint 2
%int = OpTypeInt 32 1
%91 = OpConstantNull %int
%92 = OpConstantComposite %v2float %float_0_5 %float_0_5
- %float_1 = OpConstant %float 1
%uint_1 = OpConstant %uint 1
- %114 = OpTypeSampledImage %11
- %129 = OpConstantNull %uint
- %147 = OpTypeFunction %ExternalTextureParams %ExternalTextureParams_std140
+ %113 = OpTypeSampledImage %11
+ %128 = OpConstantNull %uint
%void = OpTypeVoid
- %161 = OpTypeFunction %void
- %169 = OpConstantComposite %v2float %float_1 %float_1
+ %146 = OpTypeFunction %void
+ %154 = OpConstantComposite %v2float %float_1 %float_1
%uint_0 = OpConstant %uint 0
-%_ptr_Uniform_ExternalTextureParams_std140 = OpTypePointer Uniform %ExternalTextureParams_std140
+%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %177 = OpTypeFunction %v4float
+ %161 = OpTypeFunction %v4float
%gammaCorrection = OpFunction %v3float None %26
%v = OpFunctionParameter %v3float
%params = OpFunctionParameter %GammaTransferParams
@@ -204,128 +179,112 @@
%smp = OpFunctionParameter %25
%coord = OpFunctionParameter %v2float
%params_0 = OpFunctionParameter %ExternalTextureParams
- %75 = OpLabel
- %78 = OpVariable %_ptr_Function_v2float Function %80
- %85 = OpVariable %_ptr_Function_v2float Function %80
- %97 = OpVariable %_ptr_Function_v2float Function %80
- %104 = OpVariable %_ptr_Function_v2float Function %80
+ %74 = OpLabel
+ %77 = OpVariable %_ptr_Function_v2float Function %79
+ %96 = OpVariable %_ptr_Function_v2float Function %79
+ %103 = OpVariable %_ptr_Function_v2float Function %79
%color = OpVariable %_ptr_Function_v3float Function %46
- %81 = OpCompositeConstruct %v2float %float_0_5 %float_0_5
- %77 = OpFSub %v2float %coord %81
- %82 = OpCompositeExtract %mat2v2float %params_0 6
- %83 = OpVectorTimesMatrix %v2float %77 %82
- %86 = OpCompositeConstruct %v2float %float_0_5 %float_0_5
- %84 = OpFAdd %v2float %83 %86
+ %80 = OpCompositeConstruct %v2float %float_0_5 %float_0_5
+ %76 = OpFSub %v2float %coord %80
+ %81 = OpCompositeExtract %float %76 0
+ %82 = OpCompositeExtract %float %76 1
+ %84 = OpCompositeConstruct %v3float %81 %82 %float_1
+ %85 = OpCompositeExtract %mat2v3float %params_0 6
+ %86 = OpVectorTimesMatrix %v2float %84 %85
%88 = OpImageQuerySizeLod %v2uint %plane0 %91
%87 = OpConvertUToF %v2float %88
%93 = OpFDiv %v2float %92 %87
- %98 = OpCompositeConstruct %v2float %float_1 %float_1
- %96 = OpFSub %v2float %98 %93
- %94 = OpExtInst %v2float %32 NClamp %84 %93 %96
- %100 = OpImageQuerySizeLod %v2uint %plane1 %91
- %99 = OpConvertUToF %v2float %100
- %101 = OpFDiv %v2float %92 %99
- %105 = OpCompositeConstruct %v2float %float_1 %float_1
- %103 = OpFSub %v2float %105 %101
- %102 = OpExtInst %v2float %32 NClamp %84 %101 %103
- %107 = OpCompositeExtract %uint %params_0 0
- %109 = OpIEqual %bool %107 %uint_1
- OpSelectionMerge %110 None
- OpBranchConditional %109 %111 %112
- %111 = OpLabel
- %115 = OpSampledImage %114 %plane0 %smp
- %113 = OpImageSampleExplicitLod %v4float %115 %94 Lod %8
- %116 = OpVectorShuffle %v3float %113 %113 0 1 2
- OpStore %color %116
- OpBranch %110
- %112 = OpLabel
- %118 = OpSampledImage %114 %plane0 %smp
- %117 = OpImageSampleExplicitLod %v4float %118 %94 Lod %8
- %119 = OpCompositeExtract %float %117 0
- %121 = OpSampledImage %114 %plane1 %smp
- %120 = OpImageSampleExplicitLod %v4float %121 %102 Lod %8
- %122 = OpVectorShuffle %v2float %120 %120 0 1
- %123 = OpCompositeExtract %float %122 0
- %124 = OpCompositeExtract %float %122 1
- %125 = OpCompositeConstruct %v4float %119 %123 %124 %float_1
- %126 = OpCompositeExtract %mat3v4float %params_0 2
- %127 = OpVectorTimesMatrix %v3float %125 %126
- OpStore %color %127
- OpBranch %110
+ %97 = OpCompositeConstruct %v2float %float_1 %float_1
+ %95 = OpFSub %v2float %97 %93
+ %94 = OpExtInst %v2float %32 NClamp %86 %93 %95
+ %99 = OpImageQuerySizeLod %v2uint %plane1 %91
+ %98 = OpConvertUToF %v2float %99
+ %100 = OpFDiv %v2float %92 %98
+ %104 = OpCompositeConstruct %v2float %float_1 %float_1
+ %102 = OpFSub %v2float %104 %100
+ %101 = OpExtInst %v2float %32 NClamp %86 %100 %102
+ %106 = OpCompositeExtract %uint %params_0 0
+ %108 = OpIEqual %bool %106 %uint_1
+ OpSelectionMerge %109 None
+ OpBranchConditional %108 %110 %111
%110 = OpLabel
- %128 = OpCompositeExtract %uint %params_0 1
- %130 = OpIEqual %bool %128 %129
- OpSelectionMerge %131 None
- OpBranchConditional %130 %132 %131
- %132 = OpLabel
- %134 = OpLoad %v3float %color
- %135 = OpCompositeExtract %GammaTransferParams %params_0 3
- %133 = OpFunctionCall %v3float %gammaCorrection %134 %135
- OpStore %color %133
- %136 = OpCompositeExtract %mat3v3float %params_0 5
- %137 = OpLoad %v3float %color
- %138 = OpMatrixTimesVector %v3float %136 %137
- OpStore %color %138
- %140 = OpLoad %v3float %color
- %141 = OpCompositeExtract %GammaTransferParams %params_0 4
- %139 = OpFunctionCall %v3float %gammaCorrection %140 %141
- OpStore %color %139
- OpBranch %131
+ %114 = OpSampledImage %113 %plane0 %smp
+ %112 = OpImageSampleExplicitLod %v4float %114 %94 Lod %8
+ %115 = OpVectorShuffle %v3float %112 %112 0 1 2
+ OpStore %color %115
+ OpBranch %109
+ %111 = OpLabel
+ %117 = OpSampledImage %113 %plane0 %smp
+ %116 = OpImageSampleExplicitLod %v4float %117 %94 Lod %8
+ %118 = OpCompositeExtract %float %116 0
+ %120 = OpSampledImage %113 %plane1 %smp
+ %119 = OpImageSampleExplicitLod %v4float %120 %101 Lod %8
+ %121 = OpVectorShuffle %v2float %119 %119 0 1
+ %122 = OpCompositeExtract %float %121 0
+ %123 = OpCompositeExtract %float %121 1
+ %124 = OpCompositeConstruct %v4float %118 %122 %123 %float_1
+ %125 = OpCompositeExtract %mat3v4float %params_0 2
+ %126 = OpVectorTimesMatrix %v3float %124 %125
+ OpStore %color %126
+ OpBranch %109
+ %109 = OpLabel
+ %127 = OpCompositeExtract %uint %params_0 1
+ %129 = OpIEqual %bool %127 %128
+ OpSelectionMerge %130 None
+ OpBranchConditional %129 %131 %130
%131 = OpLabel
- %142 = OpLoad %v3float %color
- %143 = OpCompositeExtract %float %142 0
- %144 = OpCompositeExtract %float %142 1
- %145 = OpCompositeExtract %float %142 2
- %146 = OpCompositeConstruct %v4float %143 %144 %145 %float_1
- OpReturnValue %146
+ %133 = OpLoad %v3float %color
+ %134 = OpCompositeExtract %GammaTransferParams %params_0 3
+ %132 = OpFunctionCall %v3float %gammaCorrection %133 %134
+ OpStore %color %132
+ %135 = OpCompositeExtract %mat3v3float %params_0 5
+ %136 = OpLoad %v3float %color
+ %137 = OpMatrixTimesVector %v3float %135 %136
+ OpStore %color %137
+ %139 = OpLoad %v3float %color
+ %140 = OpCompositeExtract %GammaTransferParams %params_0 4
+ %138 = OpFunctionCall %v3float %gammaCorrection %139 %140
+ OpStore %color %138
+ OpBranch %130
+ %130 = OpLabel
+ %141 = OpLoad %v3float %color
+ %142 = OpCompositeExtract %float %141 0
+ %143 = OpCompositeExtract %float %141 1
+ %144 = OpCompositeExtract %float %141 2
+ %145 = OpCompositeConstruct %v4float %142 %143 %144 %float_1
+ OpReturnValue %145
OpFunctionEnd
-%conv_ExternalTextureParams = OpFunction %ExternalTextureParams None %147
- %val = OpFunctionParameter %ExternalTextureParams_std140
- %150 = OpLabel
- %151 = OpCompositeExtract %uint %val 0
- %152 = OpCompositeExtract %uint %val 1
- %153 = OpCompositeExtract %mat3v4float %val 2
- %154 = OpCompositeExtract %GammaTransferParams %val 3
- %155 = OpCompositeExtract %GammaTransferParams %val 4
- %156 = OpCompositeExtract %mat3v3float %val 5
- %157 = OpCompositeExtract %v2float %val 6
- %158 = OpCompositeExtract %v2float %val 7
- %159 = OpCompositeConstruct %mat2v2float %157 %158
- %160 = OpCompositeConstruct %ExternalTextureParams %151 %152 %153 %154 %155 %156 %159
- OpReturnValue %160
- OpFunctionEnd
-%textureSampleBaseClampToEdge_7c04e6 = OpFunction %void None %161
- %164 = OpLabel
+%textureSampleBaseClampToEdge_7c04e6 = OpFunction %void None %146
+ %149 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %5
- %166 = OpLoad %11 %arg_0
- %167 = OpLoad %11 %ext_tex_plane_1
- %168 = OpLoad %25 %arg_1
- %173 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %174 = OpLoad %ExternalTextureParams_std140 %173
- %170 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %174
- %165 = OpFunctionCall %v4float %textureSampleExternal %166 %167 %168 %169 %170
- OpStore %res %165
+ %151 = OpLoad %11 %arg_0
+ %152 = OpLoad %11 %ext_tex_plane_1
+ %153 = OpLoad %25 %arg_1
+ %157 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %158 = OpLoad %ExternalTextureParams %157
+ %150 = OpFunctionCall %v4float %textureSampleExternal %151 %152 %153 %154 %158
+ OpStore %res %150
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %177
- %179 = OpLabel
- %180 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
+%vertex_main_inner = OpFunction %v4float None %161
+ %163 = OpLabel
+ %164 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
OpReturnValue %5
OpFunctionEnd
-%vertex_main = OpFunction %void None %161
- %182 = OpLabel
- %183 = OpFunctionCall %v4float %vertex_main_inner
- OpStore %value %183
+%vertex_main = OpFunction %void None %146
+ %166 = OpLabel
+ %167 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %167
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %161
- %185 = OpLabel
- %186 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
+%fragment_main = OpFunction %void None %146
+ %169 = OpLabel
+ %170 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %161
- %188 = OpLabel
- %189 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
+%compute_main = OpFunction %void None %146
+ %172 = OpLabel
+ %173 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
OpReturn
OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..08d2265
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.dxc.hlsl
@@ -0,0 +1,30 @@
+void mix_275cac() {
+ float4 res = (1.0f).xxxx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_275cac();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_275cac();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_275cac();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..08d2265
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.fxc.hlsl
@@ -0,0 +1,30 @@
+void mix_275cac() {
+ float4 res = (1.0f).xxxx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_275cac();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_275cac();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_275cac();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.glsl b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.glsl
new file mode 100644
index 0000000..69bdddf
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.glsl
@@ -0,0 +1,49 @@
+#version 310 es
+
+void mix_275cac() {
+ vec4 res = vec4(1.0f);
+}
+
+vec4 vertex_main() {
+ mix_275cac();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision mediump float;
+
+void mix_275cac() {
+ vec4 res = vec4(1.0f);
+}
+
+void fragment_main() {
+ mix_275cac();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+void mix_275cac() {
+ vec4 res = vec4(1.0f);
+}
+
+void compute_main() {
+ mix_275cac();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.msl b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.msl
new file mode 100644
index 0000000..f1307fc
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void mix_275cac() {
+ float4 res = float4(1.0f);
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner() {
+ mix_275cac();
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ float4 const inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main() {
+ mix_275cac();
+ return;
+}
+
+kernel void compute_main() {
+ mix_275cac();
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.spvasm b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.spvasm
new file mode 100644
index 0000000..24b4988
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 30
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %mix_275cac "mix_275cac"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %float_1 = OpConstant %float 1
+ %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+ %17 = OpTypeFunction %v4float
+ %mix_275cac = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function_v4float Function %5
+ OpStore %res %14
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %17
+ %19 = OpLabel
+ %20 = OpFunctionCall %void %mix_275cac
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %22 = OpLabel
+ %23 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %23
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %mix_275cac
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %28 = OpLabel
+ %29 = OpFunctionCall %void %mix_275cac
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.wgsl
new file mode 100644
index 0000000..6fe7f65
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn mix_275cac() {
+ const arg_0 = vec4(1.0);
+ const arg_1 = vec4(1.0);
+ const arg_2 = 1.0;
+ var res = mix(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ mix_275cac();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ mix_275cac();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ mix_275cac();
+}
diff --git a/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0ba22ae
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.dxc.hlsl
@@ -0,0 +1,30 @@
+void mix_30de36() {
+ float res = 1.0f;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_30de36();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_30de36();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_30de36();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0ba22ae
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.fxc.hlsl
@@ -0,0 +1,30 @@
+void mix_30de36() {
+ float res = 1.0f;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_30de36();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_30de36();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_30de36();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.glsl b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.glsl
new file mode 100644
index 0000000..6f002ea
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.glsl
@@ -0,0 +1,49 @@
+#version 310 es
+
+void mix_30de36() {
+ float res = 1.0f;
+}
+
+vec4 vertex_main() {
+ mix_30de36();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision mediump float;
+
+void mix_30de36() {
+ float res = 1.0f;
+}
+
+void fragment_main() {
+ mix_30de36();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+void mix_30de36() {
+ float res = 1.0f;
+}
+
+void compute_main() {
+ mix_30de36();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.msl b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.msl
new file mode 100644
index 0000000..f9444dc
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void mix_30de36() {
+ float res = 1.0f;
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner() {
+ mix_30de36();
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ float4 const inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main() {
+ mix_30de36();
+ return;
+}
+
+kernel void compute_main() {
+ mix_30de36();
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.spvasm b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.spvasm
new file mode 100644
index 0000000..69f93a0
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.spvasm
@@ -0,0 +1,63 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %mix_30de36 "mix_30de36"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+ %16 = OpTypeFunction %v4float
+ %mix_30de36 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function_float Function %8
+ OpStore %res %float_1
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %16
+ %18 = OpLabel
+ %19 = OpFunctionCall %void %mix_30de36
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %21 = OpLabel
+ %22 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %22
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %24 = OpLabel
+ %25 = OpFunctionCall %void %mix_30de36
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %27 = OpLabel
+ %28 = OpFunctionCall %void %mix_30de36
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.wgsl
new file mode 100644
index 0000000..b94156e
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn mix_30de36() {
+ const arg_0 = 1.0;
+ const arg_1 = 1.0;
+ const arg_2 = 1.0;
+ var res = mix(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ mix_30de36();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ mix_30de36();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ mix_30de36();
+}
diff --git a/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..de57fb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.dxc.hlsl
@@ -0,0 +1,30 @@
+void mix_343c49() {
+ float3 res = (1.0f).xxx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_343c49();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_343c49();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_343c49();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..de57fb8
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.fxc.hlsl
@@ -0,0 +1,30 @@
+void mix_343c49() {
+ float3 res = (1.0f).xxx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_343c49();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_343c49();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_343c49();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.glsl b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.glsl
new file mode 100644
index 0000000..c5eee9e
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.glsl
@@ -0,0 +1,49 @@
+#version 310 es
+
+void mix_343c49() {
+ vec3 res = vec3(1.0f);
+}
+
+vec4 vertex_main() {
+ mix_343c49();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision mediump float;
+
+void mix_343c49() {
+ vec3 res = vec3(1.0f);
+}
+
+void fragment_main() {
+ mix_343c49();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+void mix_343c49() {
+ vec3 res = vec3(1.0f);
+}
+
+void compute_main() {
+ mix_343c49();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.msl b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.msl
new file mode 100644
index 0000000..f072ee8
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void mix_343c49() {
+ float3 res = float3(1.0f);
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner() {
+ mix_343c49();
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ float4 const inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main() {
+ mix_343c49();
+ return;
+}
+
+kernel void compute_main() {
+ mix_343c49();
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.spvasm b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.spvasm
new file mode 100644
index 0000000..ca5e900
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.spvasm
@@ -0,0 +1,66 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 32
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %mix_343c49 "mix_343c49"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %v3float = OpTypeVector %float 3
+ %float_1 = OpConstant %float 1
+ %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+ %18 = OpConstantNull %v3float
+ %19 = OpTypeFunction %v4float
+ %mix_343c49 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function_v3float Function %18
+ OpStore %res %15
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %19
+ %21 = OpLabel
+ %22 = OpFunctionCall %void %mix_343c49
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %24 = OpLabel
+ %25 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %25
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %27 = OpLabel
+ %28 = OpFunctionCall %void %mix_343c49
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %mix_343c49
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.wgsl
new file mode 100644
index 0000000..c330b08
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn mix_343c49() {
+ const arg_0 = vec3(1.0);
+ const arg_1 = vec3(1.0);
+ const arg_2 = vec3(1.0);
+ var res = mix(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ mix_343c49();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ mix_343c49();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ mix_343c49();
+}
diff --git a/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..7745b9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.dxc.hlsl
@@ -0,0 +1,30 @@
+void mix_42d11d() {
+ float2 res = (1.0f).xx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_42d11d();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_42d11d();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_42d11d();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..7745b9b
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.fxc.hlsl
@@ -0,0 +1,30 @@
+void mix_42d11d() {
+ float2 res = (1.0f).xx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_42d11d();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_42d11d();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_42d11d();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.glsl b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.glsl
new file mode 100644
index 0000000..1de5cff
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.glsl
@@ -0,0 +1,49 @@
+#version 310 es
+
+void mix_42d11d() {
+ vec2 res = vec2(1.0f);
+}
+
+vec4 vertex_main() {
+ mix_42d11d();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision mediump float;
+
+void mix_42d11d() {
+ vec2 res = vec2(1.0f);
+}
+
+void fragment_main() {
+ mix_42d11d();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+void mix_42d11d() {
+ vec2 res = vec2(1.0f);
+}
+
+void compute_main() {
+ mix_42d11d();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.msl b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.msl
new file mode 100644
index 0000000..48d380f
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void mix_42d11d() {
+ float2 res = float2(1.0f);
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner() {
+ mix_42d11d();
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ float4 const inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main() {
+ mix_42d11d();
+ return;
+}
+
+kernel void compute_main() {
+ mix_42d11d();
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.spvasm
new file mode 100644
index 0000000..941f91a
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.spvasm
@@ -0,0 +1,66 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 32
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %mix_42d11d "mix_42d11d"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %v2float = OpTypeVector %float 2
+ %float_1 = OpConstant %float 1
+ %15 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+ %18 = OpConstantNull %v2float
+ %19 = OpTypeFunction %v4float
+ %mix_42d11d = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function_v2float Function %18
+ OpStore %res %15
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %19
+ %21 = OpLabel
+ %22 = OpFunctionCall %void %mix_42d11d
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %24 = OpLabel
+ %25 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %25
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %27 = OpLabel
+ %28 = OpFunctionCall %void %mix_42d11d
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %mix_42d11d
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.wgsl
new file mode 100644
index 0000000..e7edf24
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn mix_42d11d() {
+ const arg_0 = vec2(1.0);
+ const arg_1 = vec2(1.0);
+ const arg_2 = 1.0;
+ var res = mix(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ mix_42d11d();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ mix_42d11d();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ mix_42d11d();
+}
diff --git a/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..88e6077
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.dxc.hlsl
@@ -0,0 +1,30 @@
+void mix_98007a() {
+ float4 res = (1.0f).xxxx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_98007a();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_98007a();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_98007a();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..88e6077
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.fxc.hlsl
@@ -0,0 +1,30 @@
+void mix_98007a() {
+ float4 res = (1.0f).xxxx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_98007a();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_98007a();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_98007a();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.glsl b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.glsl
new file mode 100644
index 0000000..44d50fb
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.glsl
@@ -0,0 +1,49 @@
+#version 310 es
+
+void mix_98007a() {
+ vec4 res = vec4(1.0f);
+}
+
+vec4 vertex_main() {
+ mix_98007a();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision mediump float;
+
+void mix_98007a() {
+ vec4 res = vec4(1.0f);
+}
+
+void fragment_main() {
+ mix_98007a();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+void mix_98007a() {
+ vec4 res = vec4(1.0f);
+}
+
+void compute_main() {
+ mix_98007a();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.msl b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.msl
new file mode 100644
index 0000000..0be9ae6
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void mix_98007a() {
+ float4 res = float4(1.0f);
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner() {
+ mix_98007a();
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ float4 const inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main() {
+ mix_98007a();
+ return;
+}
+
+kernel void compute_main() {
+ mix_98007a();
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.spvasm
new file mode 100644
index 0000000..6148f45
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 30
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %mix_98007a "mix_98007a"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %float_1 = OpConstant %float 1
+ %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+ %17 = OpTypeFunction %v4float
+ %mix_98007a = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function_v4float Function %5
+ OpStore %res %14
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %17
+ %19 = OpLabel
+ %20 = OpFunctionCall %void %mix_98007a
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %22 = OpLabel
+ %23 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %23
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %25 = OpLabel
+ %26 = OpFunctionCall %void %mix_98007a
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %28 = OpLabel
+ %29 = OpFunctionCall %void %mix_98007a
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.wgsl
new file mode 100644
index 0000000..8cc5dfe
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn mix_98007a() {
+ const arg_0 = vec4(1.0);
+ const arg_1 = vec4(1.0);
+ const arg_2 = vec4(1.0);
+ var res = mix(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ mix_98007a();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ mix_98007a();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ mix_98007a();
+}
diff --git a/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..0d84ee0
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.dxc.hlsl
@@ -0,0 +1,30 @@
+void mix_9c2681() {
+ float3 res = (1.0f).xxx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_9c2681();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_9c2681();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_9c2681();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..0d84ee0
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.fxc.hlsl
@@ -0,0 +1,30 @@
+void mix_9c2681() {
+ float3 res = (1.0f).xxx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_9c2681();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_9c2681();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_9c2681();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.glsl b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.glsl
new file mode 100644
index 0000000..e53e484
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.glsl
@@ -0,0 +1,49 @@
+#version 310 es
+
+void mix_9c2681() {
+ vec3 res = vec3(1.0f);
+}
+
+vec4 vertex_main() {
+ mix_9c2681();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision mediump float;
+
+void mix_9c2681() {
+ vec3 res = vec3(1.0f);
+}
+
+void fragment_main() {
+ mix_9c2681();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+void mix_9c2681() {
+ vec3 res = vec3(1.0f);
+}
+
+void compute_main() {
+ mix_9c2681();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.msl b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.msl
new file mode 100644
index 0000000..9b73025
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void mix_9c2681() {
+ float3 res = float3(1.0f);
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner() {
+ mix_9c2681();
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ float4 const inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main() {
+ mix_9c2681();
+ return;
+}
+
+kernel void compute_main() {
+ mix_9c2681();
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.spvasm b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.spvasm
new file mode 100644
index 0000000..e7290e4
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.spvasm
@@ -0,0 +1,66 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 32
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %mix_9c2681 "mix_9c2681"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %v3float = OpTypeVector %float 3
+ %float_1 = OpConstant %float 1
+ %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+ %18 = OpConstantNull %v3float
+ %19 = OpTypeFunction %v4float
+ %mix_9c2681 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function_v3float Function %18
+ OpStore %res %15
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %19
+ %21 = OpLabel
+ %22 = OpFunctionCall %void %mix_9c2681
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %24 = OpLabel
+ %25 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %25
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %27 = OpLabel
+ %28 = OpFunctionCall %void %mix_9c2681
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %mix_9c2681
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.wgsl
new file mode 100644
index 0000000..2e78c6d
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn mix_9c2681() {
+ const arg_0 = vec3(1.0);
+ const arg_1 = vec3(1.0);
+ const arg_2 = 1.0;
+ var res = mix(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ mix_9c2681();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ mix_9c2681();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ mix_9c2681();
+}
diff --git a/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..1ef4207
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.dxc.hlsl
@@ -0,0 +1,30 @@
+void mix_ef3575() {
+ float2 res = (1.0f).xx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_ef3575();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_ef3575();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_ef3575();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..1ef4207
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.fxc.hlsl
@@ -0,0 +1,30 @@
+void mix_ef3575() {
+ float2 res = (1.0f).xx;
+}
+
+struct tint_symbol {
+ float4 value : SV_Position;
+};
+
+float4 vertex_main_inner() {
+ mix_ef3575();
+ return (0.0f).xxxx;
+}
+
+tint_symbol vertex_main() {
+ const float4 inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = (tint_symbol)0;
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+void fragment_main() {
+ mix_ef3575();
+ return;
+}
+
+[numthreads(1, 1, 1)]
+void compute_main() {
+ mix_ef3575();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.glsl b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.glsl
new file mode 100644
index 0000000..295176f
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.glsl
@@ -0,0 +1,49 @@
+#version 310 es
+
+void mix_ef3575() {
+ vec2 res = vec2(1.0f);
+}
+
+vec4 vertex_main() {
+ mix_ef3575();
+ return vec4(0.0f);
+}
+
+void main() {
+ gl_PointSize = 1.0;
+ vec4 inner_result = vertex_main();
+ gl_Position = inner_result;
+ gl_Position.y = -(gl_Position.y);
+ gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
+ return;
+}
+#version 310 es
+precision mediump float;
+
+void mix_ef3575() {
+ vec2 res = vec2(1.0f);
+}
+
+void fragment_main() {
+ mix_ef3575();
+}
+
+void main() {
+ fragment_main();
+ return;
+}
+#version 310 es
+
+void mix_ef3575() {
+ vec2 res = vec2(1.0f);
+}
+
+void compute_main() {
+ mix_ef3575();
+}
+
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ compute_main();
+ return;
+}
diff --git a/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.msl b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.msl
new file mode 100644
index 0000000..1ed4cea
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+using namespace metal;
+void mix_ef3575() {
+ float2 res = float2(1.0f);
+}
+
+struct tint_symbol {
+ float4 value [[position]];
+};
+
+float4 vertex_main_inner() {
+ mix_ef3575();
+ return float4(0.0f);
+}
+
+vertex tint_symbol vertex_main() {
+ float4 const inner_result = vertex_main_inner();
+ tint_symbol wrapper_result = {};
+ wrapper_result.value = inner_result;
+ return wrapper_result;
+}
+
+fragment void fragment_main() {
+ mix_ef3575();
+ return;
+}
+
+kernel void compute_main() {
+ mix_ef3575();
+ return;
+}
+
diff --git a/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.spvasm b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.spvasm
new file mode 100644
index 0000000..1b93762
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.spvasm
@@ -0,0 +1,66 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 32
+; Schema: 0
+ OpCapability Shader
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size
+ OpEntryPoint Fragment %fragment_main "fragment_main"
+ OpEntryPoint GLCompute %compute_main "compute_main"
+ OpExecutionMode %fragment_main OriginUpperLeft
+ OpExecutionMode %compute_main LocalSize 1 1 1
+ OpName %value "value"
+ OpName %vertex_point_size "vertex_point_size"
+ OpName %mix_ef3575 "mix_ef3575"
+ OpName %res "res"
+ OpName %vertex_main_inner "vertex_main_inner"
+ OpName %vertex_main "vertex_main"
+ OpName %fragment_main "fragment_main"
+ OpName %compute_main "compute_main"
+ OpDecorate %value BuiltIn Position
+ OpDecorate %vertex_point_size BuiltIn PointSize
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %5 = OpConstantNull %v4float
+ %value = OpVariable %_ptr_Output_v4float Output %5
+%_ptr_Output_float = OpTypePointer Output %float
+ %8 = OpConstantNull %float
+%vertex_point_size = OpVariable %_ptr_Output_float Output %8
+ %void = OpTypeVoid
+ %9 = OpTypeFunction %void
+ %v2float = OpTypeVector %float 2
+ %float_1 = OpConstant %float 1
+ %15 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+ %18 = OpConstantNull %v2float
+ %19 = OpTypeFunction %v4float
+ %mix_ef3575 = OpFunction %void None %9
+ %12 = OpLabel
+ %res = OpVariable %_ptr_Function_v2float Function %18
+ OpStore %res %15
+ OpReturn
+ OpFunctionEnd
+%vertex_main_inner = OpFunction %v4float None %19
+ %21 = OpLabel
+ %22 = OpFunctionCall %void %mix_ef3575
+ OpReturnValue %5
+ OpFunctionEnd
+%vertex_main = OpFunction %void None %9
+ %24 = OpLabel
+ %25 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %25
+ OpStore %vertex_point_size %float_1
+ OpReturn
+ OpFunctionEnd
+%fragment_main = OpFunction %void None %9
+ %27 = OpLabel
+ %28 = OpFunctionCall %void %mix_ef3575
+ OpReturn
+ OpFunctionEnd
+%compute_main = OpFunction %void None %9
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %mix_ef3575
+ OpReturn
+ OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.wgsl b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.wgsl
new file mode 100644
index 0000000..3742108
--- /dev/null
+++ b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.wgsl
@@ -0,0 +1,22 @@
+fn mix_ef3575() {
+ const arg_0 = vec2(1.0);
+ const arg_1 = vec2(1.0);
+ const arg_2 = vec2(1.0);
+ var res = mix(arg_0, arg_1, arg_2);
+}
+
+@vertex
+fn vertex_main() -> @builtin(position) vec4<f32> {
+ mix_ef3575();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ mix_ef3575();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ mix_ef3575();
+}
diff --git a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.dxc.hlsl
index 1f8d50c..70c59b9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
diff --git a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.fxc.hlsl
index 1f8d50c..70c59b9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
diff --git a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.glsl
index 06f4c76..166425e 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
uniform highp sampler2D arg_0_1;
@@ -75,22 +64,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
uniform highp sampler2D arg_0_1;
@@ -126,22 +104,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
uniform highp sampler2D arg_0_1;
diff --git a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.msl b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.msl
index a997980..b15ada1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.msl
@@ -19,7 +19,7 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
void textureDimensions_cdc6c9(texture2d<float, access::sample> tint_symbol_1) {
diff --git a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.spvasm
index 12d1c58..5cb8e1c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureDimensions/cdc6c9.wgsl.expected.spvasm
@@ -14,13 +14,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -30,10 +30,9 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %textureDimensions_cdc6c9 "textureDimensions_cdc6c9"
@@ -46,14 +45,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 1
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -62,12 +61,13 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
+ OpMemberDecorate %ExternalTextureParams 4 Offset 96
+ OpMemberDecorate %ExternalTextureParams 5 Offset 128
+ OpMemberDecorate %ExternalTextureParams 5 ColMajor
+ OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 6 Offset 176
+ OpMemberDecorate %ExternalTextureParams 6 ColMajor
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
OpDecorate %ext_tex_params NonWritable
OpDecorate %ext_tex_params DescriptorSet 1
OpDecorate %ext_tex_params Binding 2
@@ -89,11 +89,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%void = OpTypeVoid
%23 = OpTypeFunction %void
diff --git a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.dxc.hlsl
index 4312f20..ce6b28f 100644
--- a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.dxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -46,14 +46,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -62,30 +62,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureLoad_1bfdfb() {
diff --git a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.fxc.hlsl
index 4312f20..ce6b28f 100644
--- a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.fxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -46,14 +46,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -62,30 +62,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureLoad_1bfdfb() {
diff --git a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.glsl
index fb5b151..9954096 100644
--- a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -60,13 +49,9 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_1bfdfb() {
uvec2 arg_1 = uvec2(1u);
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner);
}
vec4 vertex_main() {
@@ -103,22 +88,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -145,13 +119,9 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_1bfdfb() {
uvec2 arg_1 = uvec2(1u);
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner);
}
void fragment_main() {
@@ -182,22 +152,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -224,13 +183,9 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_1bfdfb() {
uvec2 arg_1 = uvec2(1u);
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.msl b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.msl
index c4e100d..7531106 100644
--- a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.msl
@@ -33,7 +33,7 @@
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
/* 0x0080 */ float3x3 gamutConversionMatrix;
- /* 0x00b0 */ float2x2 rotationMatrix;
+ /* 0x00b0 */ float2x3 coordTransformationMatrix;
};
float3 gammaCorrection(float3 v, GammaTransferParams params) {
diff --git a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.spvasm
index 41e032e..3fdb7b4 100644
--- a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 159
+; Bound: 143
; Schema: 0
OpCapability Shader
%29 = OpExtInstImport "GLSL.std.450"
@@ -14,13 +14,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -30,31 +30,20 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %gammaCorrection "gammaCorrection"
OpName %v "v"
OpName %params "params"
- OpName %ExternalTextureParams "ExternalTextureParams"
- OpMemberName %ExternalTextureParams 0 "numPlanes"
- OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
- OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams 6 "rotationMatrix"
OpName %textureLoadExternal "textureLoadExternal"
OpName %plane0 "plane0"
OpName %plane1 "plane1"
OpName %coord "coord"
OpName %params_0 "params"
OpName %color "color"
- OpName %conv_ExternalTextureParams "conv_ExternalTextureParams"
- OpName %val "val"
OpName %textureLoad_1bfdfb "textureLoad_1bfdfb"
OpName %arg_1 "arg_1"
OpName %res "res"
@@ -66,14 +55,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 1
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -82,30 +71,18 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
- OpDecorate %ext_tex_params NonWritable
- OpDecorate %ext_tex_params DescriptorSet 1
- OpDecorate %ext_tex_params Binding 2
- OpDecorate %arg_0 DescriptorSet 1
- OpDecorate %arg_0 Binding 0
- OpMemberDecorate %ExternalTextureParams 0 Offset 0
- OpMemberDecorate %ExternalTextureParams 1 Offset 4
- OpMemberDecorate %ExternalTextureParams 2 Offset 16
- OpMemberDecorate %ExternalTextureParams 2 ColMajor
- OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %ExternalTextureParams 4 Offset 96
OpMemberDecorate %ExternalTextureParams 5 Offset 128
OpMemberDecorate %ExternalTextureParams 5 ColMajor
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
OpMemberDecorate %ExternalTextureParams 6 Offset 176
OpMemberDecorate %ExternalTextureParams 6 ColMajor
- OpMemberDecorate %ExternalTextureParams 6 MatrixStride 8
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
+ OpDecorate %ext_tex_params NonWritable
+ OpDecorate %ext_tex_params DescriptorSet 1
+ OpDecorate %ext_tex_params Binding 2
+ OpDecorate %arg_0 DescriptorSet 1
+ OpDecorate %arg_0 Binding 0
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@@ -122,11 +99,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%23 = OpTypeFunction %v3float %v3float %GammaTransferParams
%bool = OpTypeBool
@@ -134,24 +111,22 @@
%_ptr_Function_v3float = OpTypePointer Function %v3float
%43 = OpConstantNull %v3float
%v2uint = OpTypeVector %uint 2
-%mat2v2float = OpTypeMatrix %v2float 2
-%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v2float
%63 = OpTypeFunction %v4float %11 %11 %v2uint %ExternalTextureParams
%uint_1 = OpConstant %uint 1
%int = OpTypeInt 32 1
- %82 = OpConstantNull %int
+ %80 = OpConstantNull %int
+ %v2float = OpTypeVector %float 2
%float_1 = OpConstant %float 1
- %95 = OpConstantNull %uint
- %113 = OpTypeFunction %ExternalTextureParams %ExternalTextureParams_std140
+ %94 = OpConstantNull %uint
%void = OpTypeVoid
- %127 = OpTypeFunction %void
- %131 = OpConstantComposite %v2uint %uint_1 %uint_1
+ %112 = OpTypeFunction %void
+ %116 = OpConstantComposite %v2uint %uint_1 %uint_1
%_ptr_Function_v2uint = OpTypePointer Function %v2uint
- %134 = OpConstantNull %v2uint
+ %119 = OpConstantNull %v2uint
%uint_0 = OpConstant %uint 0
-%_ptr_Uniform_ExternalTextureParams_std140 = OpTypePointer Uniform %ExternalTextureParams_std140
+%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %146 = OpTypeFunction %v4float
+ %130 = OpTypeFunction %v4float
%gammaCorrection = OpFunction %v3float None %23
%v = OpFunctionParameter %v3float
%params = OpFunctionParameter %GammaTransferParams
@@ -193,105 +168,89 @@
%plane1 = OpFunctionParameter %11
%coord = OpFunctionParameter %v2uint
%params_0 = OpFunctionParameter %ExternalTextureParams
- %72 = OpLabel
+ %70 = OpLabel
%color = OpVariable %_ptr_Function_v3float Function %43
- %74 = OpCompositeExtract %uint %params_0 0
- %76 = OpIEqual %bool %74 %uint_1
- OpSelectionMerge %77 None
- OpBranchConditional %76 %78 %79
- %78 = OpLabel
- %80 = OpImageFetch %v4float %plane0 %coord Lod %82
- %83 = OpVectorShuffle %v3float %80 %80 0 1 2
- OpStore %color %83
- OpBranch %77
- %79 = OpLabel
- %84 = OpImageFetch %v4float %plane0 %coord Lod %82
- %85 = OpCompositeExtract %float %84 0
- %86 = OpImageFetch %v4float %plane1 %coord Lod %82
- %87 = OpVectorShuffle %v2float %86 %86 0 1
- %88 = OpCompositeExtract %float %87 0
- %89 = OpCompositeExtract %float %87 1
- %91 = OpCompositeConstruct %v4float %85 %88 %89 %float_1
- %92 = OpCompositeExtract %mat3v4float %params_0 2
- %93 = OpVectorTimesMatrix %v3float %91 %92
- OpStore %color %93
- OpBranch %77
+ %72 = OpCompositeExtract %uint %params_0 0
+ %74 = OpIEqual %bool %72 %uint_1
+ OpSelectionMerge %75 None
+ OpBranchConditional %74 %76 %77
+ %76 = OpLabel
+ %78 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %81 = OpVectorShuffle %v3float %78 %78 0 1 2
+ OpStore %color %81
+ OpBranch %75
%77 = OpLabel
- %94 = OpCompositeExtract %uint %params_0 1
- %96 = OpIEqual %bool %94 %95
- OpSelectionMerge %97 None
- OpBranchConditional %96 %98 %97
- %98 = OpLabel
- %100 = OpLoad %v3float %color
- %101 = OpCompositeExtract %GammaTransferParams %params_0 3
- %99 = OpFunctionCall %v3float %gammaCorrection %100 %101
- OpStore %color %99
- %102 = OpCompositeExtract %mat3v3float %params_0 5
- %103 = OpLoad %v3float %color
- %104 = OpMatrixTimesVector %v3float %102 %103
- OpStore %color %104
- %106 = OpLoad %v3float %color
- %107 = OpCompositeExtract %GammaTransferParams %params_0 4
- %105 = OpFunctionCall %v3float %gammaCorrection %106 %107
- OpStore %color %105
- OpBranch %97
+ %82 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %83 = OpCompositeExtract %float %82 0
+ %84 = OpImageFetch %v4float %plane1 %coord Lod %80
+ %86 = OpVectorShuffle %v2float %84 %84 0 1
+ %87 = OpCompositeExtract %float %86 0
+ %88 = OpCompositeExtract %float %86 1
+ %90 = OpCompositeConstruct %v4float %83 %87 %88 %float_1
+ %91 = OpCompositeExtract %mat3v4float %params_0 2
+ %92 = OpVectorTimesMatrix %v3float %90 %91
+ OpStore %color %92
+ OpBranch %75
+ %75 = OpLabel
+ %93 = OpCompositeExtract %uint %params_0 1
+ %95 = OpIEqual %bool %93 %94
+ OpSelectionMerge %96 None
+ OpBranchConditional %95 %97 %96
%97 = OpLabel
- %108 = OpLoad %v3float %color
- %109 = OpCompositeExtract %float %108 0
- %110 = OpCompositeExtract %float %108 1
- %111 = OpCompositeExtract %float %108 2
- %112 = OpCompositeConstruct %v4float %109 %110 %111 %float_1
- OpReturnValue %112
+ %99 = OpLoad %v3float %color
+ %100 = OpCompositeExtract %GammaTransferParams %params_0 3
+ %98 = OpFunctionCall %v3float %gammaCorrection %99 %100
+ OpStore %color %98
+ %101 = OpCompositeExtract %mat3v3float %params_0 5
+ %102 = OpLoad %v3float %color
+ %103 = OpMatrixTimesVector %v3float %101 %102
+ OpStore %color %103
+ %105 = OpLoad %v3float %color
+ %106 = OpCompositeExtract %GammaTransferParams %params_0 4
+ %104 = OpFunctionCall %v3float %gammaCorrection %105 %106
+ OpStore %color %104
+ OpBranch %96
+ %96 = OpLabel
+ %107 = OpLoad %v3float %color
+ %108 = OpCompositeExtract %float %107 0
+ %109 = OpCompositeExtract %float %107 1
+ %110 = OpCompositeExtract %float %107 2
+ %111 = OpCompositeConstruct %v4float %108 %109 %110 %float_1
+ OpReturnValue %111
OpFunctionEnd
-%conv_ExternalTextureParams = OpFunction %ExternalTextureParams None %113
- %val = OpFunctionParameter %ExternalTextureParams_std140
- %116 = OpLabel
- %117 = OpCompositeExtract %uint %val 0
- %118 = OpCompositeExtract %uint %val 1
- %119 = OpCompositeExtract %mat3v4float %val 2
- %120 = OpCompositeExtract %GammaTransferParams %val 3
- %121 = OpCompositeExtract %GammaTransferParams %val 4
- %122 = OpCompositeExtract %mat3v3float %val 5
- %123 = OpCompositeExtract %v2float %val 6
- %124 = OpCompositeExtract %v2float %val 7
- %125 = OpCompositeConstruct %mat2v2float %123 %124
- %126 = OpCompositeConstruct %ExternalTextureParams %117 %118 %119 %120 %121 %122 %125
- OpReturnValue %126
- OpFunctionEnd
-%textureLoad_1bfdfb = OpFunction %void None %127
- %130 = OpLabel
- %arg_1 = OpVariable %_ptr_Function_v2uint Function %134
+%textureLoad_1bfdfb = OpFunction %void None %112
+ %115 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_v2uint Function %119
%res = OpVariable %_ptr_Function_v4float Function %5
- OpStore %arg_1 %131
- %136 = OpLoad %11 %arg_0
- %137 = OpLoad %11 %ext_tex_plane_1
- %138 = OpLoad %v2uint %arg_1
- %142 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %143 = OpLoad %ExternalTextureParams_std140 %142
- %139 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %143
- %135 = OpFunctionCall %v4float %textureLoadExternal %136 %137 %138 %139
- OpStore %res %135
+ OpStore %arg_1 %116
+ %121 = OpLoad %11 %arg_0
+ %122 = OpLoad %11 %ext_tex_plane_1
+ %123 = OpLoad %v2uint %arg_1
+ %126 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %127 = OpLoad %ExternalTextureParams %126
+ %120 = OpFunctionCall %v4float %textureLoadExternal %121 %122 %123 %127
+ OpStore %res %120
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %146
- %148 = OpLabel
- %149 = OpFunctionCall %void %textureLoad_1bfdfb
+%vertex_main_inner = OpFunction %v4float None %130
+ %132 = OpLabel
+ %133 = OpFunctionCall %void %textureLoad_1bfdfb
OpReturnValue %5
OpFunctionEnd
-%vertex_main = OpFunction %void None %127
- %151 = OpLabel
- %152 = OpFunctionCall %v4float %vertex_main_inner
- OpStore %value %152
+%vertex_main = OpFunction %void None %112
+ %135 = OpLabel
+ %136 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %136
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %127
- %154 = OpLabel
- %155 = OpFunctionCall %void %textureLoad_1bfdfb
+%fragment_main = OpFunction %void None %112
+ %138 = OpLabel
+ %139 = OpFunctionCall %void %textureLoad_1bfdfb
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %127
- %157 = OpLabel
- %158 = OpFunctionCall %void %textureLoad_1bfdfb
+%compute_main = OpFunction %void None %112
+ %141 = OpLabel
+ %142 = OpFunctionCall %void %textureLoad_1bfdfb
OpReturn
OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.dxc.hlsl
index 7a6564c..81fc2e9 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.dxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -46,14 +46,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -62,30 +62,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureLoad_8acf41() {
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.fxc.hlsl
index 7a6564c..81fc2e9 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.fxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -46,14 +46,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -62,30 +62,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureLoad_8acf41() {
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
index abf9a70..dc56310 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -60,13 +49,9 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_8acf41() {
ivec2 arg_1 = ivec2(1);
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner);
}
vec4 vertex_main() {
@@ -103,22 +88,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -145,13 +119,9 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_8acf41() {
ivec2 arg_1 = ivec2(1);
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner);
}
void fragment_main() {
@@ -182,22 +152,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -224,13 +183,9 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureLoad_8acf41() {
ivec2 arg_1 = ivec2(1);
- vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureLoadExternal(arg_0_1, ext_tex_plane_1_1, arg_1, ext_tex_params.inner);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.msl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.msl
index 452877c..ce4e96b 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.msl
@@ -33,7 +33,7 @@
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
/* 0x0080 */ float3x3 gamutConversionMatrix;
- /* 0x00b0 */ float2x2 rotationMatrix;
+ /* 0x00b0 */ float2x3 coordTransformationMatrix;
};
float3 gammaCorrection(float3 v, GammaTransferParams params) {
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.spvasm
index 95ed4c0..eb3098b 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 160
+; Bound: 144
; Schema: 0
OpCapability Shader
%29 = OpExtInstImport "GLSL.std.450"
@@ -14,13 +14,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -30,31 +30,20 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %gammaCorrection "gammaCorrection"
OpName %v "v"
OpName %params "params"
- OpName %ExternalTextureParams "ExternalTextureParams"
- OpMemberName %ExternalTextureParams 0 "numPlanes"
- OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
- OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams 6 "rotationMatrix"
OpName %textureLoadExternal "textureLoadExternal"
OpName %plane0 "plane0"
OpName %plane1 "plane1"
OpName %coord "coord"
OpName %params_0 "params"
OpName %color "color"
- OpName %conv_ExternalTextureParams "conv_ExternalTextureParams"
- OpName %val "val"
OpName %textureLoad_8acf41 "textureLoad_8acf41"
OpName %arg_1 "arg_1"
OpName %res "res"
@@ -66,14 +55,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 1
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -82,30 +71,18 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
- OpDecorate %ext_tex_params NonWritable
- OpDecorate %ext_tex_params DescriptorSet 1
- OpDecorate %ext_tex_params Binding 2
- OpDecorate %arg_0 DescriptorSet 1
- OpDecorate %arg_0 Binding 0
- OpMemberDecorate %ExternalTextureParams 0 Offset 0
- OpMemberDecorate %ExternalTextureParams 1 Offset 4
- OpMemberDecorate %ExternalTextureParams 2 Offset 16
- OpMemberDecorate %ExternalTextureParams 2 ColMajor
- OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %ExternalTextureParams 4 Offset 96
OpMemberDecorate %ExternalTextureParams 5 Offset 128
OpMemberDecorate %ExternalTextureParams 5 ColMajor
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
OpMemberDecorate %ExternalTextureParams 6 Offset 176
OpMemberDecorate %ExternalTextureParams 6 ColMajor
- OpMemberDecorate %ExternalTextureParams 6 MatrixStride 8
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
+ OpDecorate %ext_tex_params NonWritable
+ OpDecorate %ext_tex_params DescriptorSet 1
+ OpDecorate %ext_tex_params Binding 2
+ OpDecorate %arg_0 DescriptorSet 1
+ OpDecorate %arg_0 Binding 0
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@@ -122,11 +99,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%23 = OpTypeFunction %v3float %v3float %GammaTransferParams
%bool = OpTypeBool
@@ -135,24 +112,22 @@
%43 = OpConstantNull %v3float
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
-%mat2v2float = OpTypeMatrix %v2float 2
-%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v2float
%63 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams
%uint_1 = OpConstant %uint 1
- %82 = OpConstantNull %int
+ %80 = OpConstantNull %int
+ %v2float = OpTypeVector %float 2
%float_1 = OpConstant %float 1
- %95 = OpConstantNull %uint
- %113 = OpTypeFunction %ExternalTextureParams %ExternalTextureParams_std140
+ %94 = OpConstantNull %uint
%void = OpTypeVoid
- %127 = OpTypeFunction %void
+ %112 = OpTypeFunction %void
%int_1 = OpConstant %int 1
- %132 = OpConstantComposite %v2int %int_1 %int_1
+ %117 = OpConstantComposite %v2int %int_1 %int_1
%_ptr_Function_v2int = OpTypePointer Function %v2int
- %135 = OpConstantNull %v2int
+ %120 = OpConstantNull %v2int
%uint_0 = OpConstant %uint 0
-%_ptr_Uniform_ExternalTextureParams_std140 = OpTypePointer Uniform %ExternalTextureParams_std140
+%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %147 = OpTypeFunction %v4float
+ %131 = OpTypeFunction %v4float
%gammaCorrection = OpFunction %v3float None %23
%v = OpFunctionParameter %v3float
%params = OpFunctionParameter %GammaTransferParams
@@ -194,105 +169,89 @@
%plane1 = OpFunctionParameter %11
%coord = OpFunctionParameter %v2int
%params_0 = OpFunctionParameter %ExternalTextureParams
- %73 = OpLabel
+ %71 = OpLabel
%color = OpVariable %_ptr_Function_v3float Function %43
- %75 = OpCompositeExtract %uint %params_0 0
- %77 = OpIEqual %bool %75 %uint_1
- OpSelectionMerge %78 None
- OpBranchConditional %77 %79 %80
- %79 = OpLabel
- %81 = OpImageFetch %v4float %plane0 %coord Lod %82
- %83 = OpVectorShuffle %v3float %81 %81 0 1 2
- OpStore %color %83
- OpBranch %78
- %80 = OpLabel
- %84 = OpImageFetch %v4float %plane0 %coord Lod %82
- %85 = OpCompositeExtract %float %84 0
- %86 = OpImageFetch %v4float %plane1 %coord Lod %82
- %87 = OpVectorShuffle %v2float %86 %86 0 1
- %88 = OpCompositeExtract %float %87 0
- %89 = OpCompositeExtract %float %87 1
- %91 = OpCompositeConstruct %v4float %85 %88 %89 %float_1
- %92 = OpCompositeExtract %mat3v4float %params_0 2
- %93 = OpVectorTimesMatrix %v3float %91 %92
- OpStore %color %93
- OpBranch %78
+ %73 = OpCompositeExtract %uint %params_0 0
+ %75 = OpIEqual %bool %73 %uint_1
+ OpSelectionMerge %76 None
+ OpBranchConditional %75 %77 %78
+ %77 = OpLabel
+ %79 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %81 = OpVectorShuffle %v3float %79 %79 0 1 2
+ OpStore %color %81
+ OpBranch %76
%78 = OpLabel
- %94 = OpCompositeExtract %uint %params_0 1
- %96 = OpIEqual %bool %94 %95
- OpSelectionMerge %97 None
- OpBranchConditional %96 %98 %97
- %98 = OpLabel
- %100 = OpLoad %v3float %color
- %101 = OpCompositeExtract %GammaTransferParams %params_0 3
- %99 = OpFunctionCall %v3float %gammaCorrection %100 %101
- OpStore %color %99
- %102 = OpCompositeExtract %mat3v3float %params_0 5
- %103 = OpLoad %v3float %color
- %104 = OpMatrixTimesVector %v3float %102 %103
- OpStore %color %104
- %106 = OpLoad %v3float %color
- %107 = OpCompositeExtract %GammaTransferParams %params_0 4
- %105 = OpFunctionCall %v3float %gammaCorrection %106 %107
- OpStore %color %105
- OpBranch %97
+ %82 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %83 = OpCompositeExtract %float %82 0
+ %84 = OpImageFetch %v4float %plane1 %coord Lod %80
+ %86 = OpVectorShuffle %v2float %84 %84 0 1
+ %87 = OpCompositeExtract %float %86 0
+ %88 = OpCompositeExtract %float %86 1
+ %90 = OpCompositeConstruct %v4float %83 %87 %88 %float_1
+ %91 = OpCompositeExtract %mat3v4float %params_0 2
+ %92 = OpVectorTimesMatrix %v3float %90 %91
+ OpStore %color %92
+ OpBranch %76
+ %76 = OpLabel
+ %93 = OpCompositeExtract %uint %params_0 1
+ %95 = OpIEqual %bool %93 %94
+ OpSelectionMerge %96 None
+ OpBranchConditional %95 %97 %96
%97 = OpLabel
- %108 = OpLoad %v3float %color
- %109 = OpCompositeExtract %float %108 0
- %110 = OpCompositeExtract %float %108 1
- %111 = OpCompositeExtract %float %108 2
- %112 = OpCompositeConstruct %v4float %109 %110 %111 %float_1
- OpReturnValue %112
+ %99 = OpLoad %v3float %color
+ %100 = OpCompositeExtract %GammaTransferParams %params_0 3
+ %98 = OpFunctionCall %v3float %gammaCorrection %99 %100
+ OpStore %color %98
+ %101 = OpCompositeExtract %mat3v3float %params_0 5
+ %102 = OpLoad %v3float %color
+ %103 = OpMatrixTimesVector %v3float %101 %102
+ OpStore %color %103
+ %105 = OpLoad %v3float %color
+ %106 = OpCompositeExtract %GammaTransferParams %params_0 4
+ %104 = OpFunctionCall %v3float %gammaCorrection %105 %106
+ OpStore %color %104
+ OpBranch %96
+ %96 = OpLabel
+ %107 = OpLoad %v3float %color
+ %108 = OpCompositeExtract %float %107 0
+ %109 = OpCompositeExtract %float %107 1
+ %110 = OpCompositeExtract %float %107 2
+ %111 = OpCompositeConstruct %v4float %108 %109 %110 %float_1
+ OpReturnValue %111
OpFunctionEnd
-%conv_ExternalTextureParams = OpFunction %ExternalTextureParams None %113
- %val = OpFunctionParameter %ExternalTextureParams_std140
- %116 = OpLabel
- %117 = OpCompositeExtract %uint %val 0
- %118 = OpCompositeExtract %uint %val 1
- %119 = OpCompositeExtract %mat3v4float %val 2
- %120 = OpCompositeExtract %GammaTransferParams %val 3
- %121 = OpCompositeExtract %GammaTransferParams %val 4
- %122 = OpCompositeExtract %mat3v3float %val 5
- %123 = OpCompositeExtract %v2float %val 6
- %124 = OpCompositeExtract %v2float %val 7
- %125 = OpCompositeConstruct %mat2v2float %123 %124
- %126 = OpCompositeConstruct %ExternalTextureParams %117 %118 %119 %120 %121 %122 %125
- OpReturnValue %126
- OpFunctionEnd
-%textureLoad_8acf41 = OpFunction %void None %127
- %130 = OpLabel
- %arg_1 = OpVariable %_ptr_Function_v2int Function %135
+%textureLoad_8acf41 = OpFunction %void None %112
+ %115 = OpLabel
+ %arg_1 = OpVariable %_ptr_Function_v2int Function %120
%res = OpVariable %_ptr_Function_v4float Function %5
- OpStore %arg_1 %132
- %137 = OpLoad %11 %arg_0
- %138 = OpLoad %11 %ext_tex_plane_1
- %139 = OpLoad %v2int %arg_1
- %143 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %144 = OpLoad %ExternalTextureParams_std140 %143
- %140 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %144
- %136 = OpFunctionCall %v4float %textureLoadExternal %137 %138 %139 %140
- OpStore %res %136
+ OpStore %arg_1 %117
+ %122 = OpLoad %11 %arg_0
+ %123 = OpLoad %11 %ext_tex_plane_1
+ %124 = OpLoad %v2int %arg_1
+ %127 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %128 = OpLoad %ExternalTextureParams %127
+ %121 = OpFunctionCall %v4float %textureLoadExternal %122 %123 %124 %128
+ OpStore %res %121
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %147
- %149 = OpLabel
- %150 = OpFunctionCall %void %textureLoad_8acf41
+%vertex_main_inner = OpFunction %v4float None %131
+ %133 = OpLabel
+ %134 = OpFunctionCall %void %textureLoad_8acf41
OpReturnValue %5
OpFunctionEnd
-%vertex_main = OpFunction %void None %127
- %152 = OpLabel
- %153 = OpFunctionCall %v4float %vertex_main_inner
- OpStore %value %153
+%vertex_main = OpFunction %void None %112
+ %136 = OpLabel
+ %137 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %137
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %127
- %155 = OpLabel
- %156 = OpFunctionCall %void %textureLoad_8acf41
+%fragment_main = OpFunction %void None %112
+ %139 = OpLabel
+ %140 = OpFunctionCall %void %textureLoad_8acf41
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %127
- %158 = OpLabel
- %159 = OpFunctionCall %void %textureLoad_8acf41
+%compute_main = OpFunction %void None %112
+ %142 = OpLabel
+ %143 = OpFunctionCall %void %textureLoad_8acf41
OpReturn
OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl
index 3d54873..3f8ffd1 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.dxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t2, space1);
cbuffer cbuffer_ext_tex_params : register(b3, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
SamplerState arg_1 : register(s1, space1);
@@ -33,7 +33,7 @@
}
float4 textureSampleExternal(Texture2D<float4> plane0, Texture2D<float4> plane1, SamplerState smp, float2 coord, ExternalTextureParams params) {
- const float2 modifiedCoords = (mul(params.rotationMatrix, (coord - 0.5f)) + 0.5f);
+ const float2 modifiedCoords = mul(params.coordTransformationMatrix, float3((coord - 0.5f), 1.0f));
int3 tint_tmp;
plane0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
const float2 plane0_dims = float2(tint_tmp.xy);
@@ -58,14 +58,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -74,30 +74,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureSampleBaseClampToEdge_7c04e6() {
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl
index 3d54873..3f8ffd1 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.fxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t2, space1);
cbuffer cbuffer_ext_tex_params : register(b3, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
SamplerState arg_1 : register(s1, space1);
@@ -33,7 +33,7 @@
}
float4 textureSampleExternal(Texture2D<float4> plane0, Texture2D<float4> plane1, SamplerState smp, float2 coord, ExternalTextureParams params) {
- const float2 modifiedCoords = (mul(params.rotationMatrix, (coord - 0.5f)) + 0.5f);
+ const float2 modifiedCoords = mul(params.coordTransformationMatrix, float3((coord - 0.5f), 1.0f));
int3 tint_tmp;
plane0.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
const float2 plane0_dims = float2(tint_tmp.xy);
@@ -58,14 +58,14 @@
return float4(color, 1.0f);
}
-float3x4 tint_symbol_3(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_3(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_5(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_5(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -74,30 +74,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_11;
+ const GammaTransferParams tint_symbol_10 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_10;
}
-float3x3 tint_symbol_7(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_7(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_9(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_9(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_1(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_1(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
- return tint_symbol_12;
+ const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u)), tint_symbol_9(buffer, (offset + 176u))};
+ return tint_symbol_11;
}
void textureSampleBaseClampToEdge_7c04e6() {
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
index f94ff74..800424c 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 3, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -45,7 +34,7 @@
vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) {
- vec2 modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ vec2 modifiedCoords = (vec3((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
vec2 plane0_dims = vec2(uvec2(textureSize(plane0_1, 0)));
vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims);
vec2 plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1.0f - plane0_half_texel));
@@ -70,13 +59,9 @@
uniform highp sampler2D ext_tex_plane_1_1;
uniform highp sampler2D arg_0_arg_1;
uniform highp sampler2D ext_tex_plane_1_arg_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureSampleBaseClampToEdge_7c04e6() {
vec2 arg_2 = vec2(1.0f);
- vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner);
}
vec4 vertex_main() {
@@ -113,22 +98,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 3, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -140,7 +114,7 @@
vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) {
- vec2 modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ vec2 modifiedCoords = (vec3((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
vec2 plane0_dims = vec2(uvec2(textureSize(plane0_1, 0)));
vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims);
vec2 plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1.0f - plane0_half_texel));
@@ -165,13 +139,9 @@
uniform highp sampler2D ext_tex_plane_1_1;
uniform highp sampler2D arg_0_arg_1;
uniform highp sampler2D ext_tex_plane_1_arg_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureSampleBaseClampToEdge_7c04e6() {
vec2 arg_2 = vec2(1.0f);
- vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner);
}
void fragment_main() {
@@ -202,22 +172,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 3, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 3, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -229,7 +188,7 @@
vec4 textureSampleExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, highp sampler2D plane0_smp, highp sampler2D plane1_smp, vec2 coord, ExternalTextureParams params) {
- vec2 modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ vec2 modifiedCoords = (vec3((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
vec2 plane0_dims = vec2(uvec2(textureSize(plane0_1, 0)));
vec2 plane0_half_texel = (vec2(0.5f) / plane0_dims);
vec2 plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1.0f - plane0_half_texel));
@@ -254,13 +213,9 @@
uniform highp sampler2D ext_tex_plane_1_1;
uniform highp sampler2D arg_0_arg_1;
uniform highp sampler2D ext_tex_plane_1_arg_1;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void textureSampleBaseClampToEdge_7c04e6() {
vec2 arg_2 = vec2(1.0f);
- vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, conv_ExternalTextureParams(ext_tex_params.inner));
+ vec4 res = textureSampleExternal(arg_0_1, ext_tex_plane_1_1, arg_0_arg_1, ext_tex_plane_1_arg_1, arg_2, ext_tex_params.inner);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl
index cc65f38..0fa9164 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.msl
@@ -33,7 +33,7 @@
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
/* 0x0080 */ float3x3 gamutConversionMatrix;
- /* 0x00b0 */ float2x2 rotationMatrix;
+ /* 0x00b0 */ float2x3 coordTransformationMatrix;
};
float3 gammaCorrection(float3 v, GammaTransferParams params) {
@@ -44,7 +44,7 @@
}
float4 textureSampleExternal(texture2d<float, access::sample> plane0, texture2d<float, access::sample> plane1, sampler smp, float2 coord, ExternalTextureParams params) {
- float2 const modifiedCoords = (((coord - 0.5f) * params.rotationMatrix) + 0.5f);
+ float2 const modifiedCoords = (float3((coord - 0.5f), 1.0f) * params.coordTransformationMatrix);
float2 const plane0_dims = float2(uint2(plane0.get_width(0), plane0.get_height(0)));
float2 const plane0_half_texel = (float2(0.5f) / plane0_dims);
float2 const plane0_clamped = clamp(modifiedCoords, plane0_half_texel, (1.0f - plane0_half_texel));
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm
index 1e24781..a1e3535 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 192
+; Bound: 176
; Schema: 0
OpCapability Shader
OpCapability ImageQuery
@@ -15,13 +15,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -31,24 +31,15 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %arg_1 "arg_1"
OpName %gammaCorrection "gammaCorrection"
OpName %v "v"
OpName %params "params"
- OpName %ExternalTextureParams "ExternalTextureParams"
- OpMemberName %ExternalTextureParams 0 "numPlanes"
- OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
- OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams 6 "rotationMatrix"
OpName %textureSampleExternal "textureSampleExternal"
OpName %plane0 "plane0"
OpName %plane1 "plane1"
@@ -56,8 +47,6 @@
OpName %coord "coord"
OpName %params_0 "params"
OpName %color "color"
- OpName %conv_ExternalTextureParams "conv_ExternalTextureParams"
- OpName %val "val"
OpName %textureSampleBaseClampToEdge_7c04e6 "textureSampleBaseClampToEdge_7c04e6"
OpName %arg_2 "arg_2"
OpName %res "res"
@@ -69,14 +58,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 2
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -85,12 +74,13 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
+ OpMemberDecorate %ExternalTextureParams 4 Offset 96
+ OpMemberDecorate %ExternalTextureParams 5 Offset 128
+ OpMemberDecorate %ExternalTextureParams 5 ColMajor
+ OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 6 Offset 176
+ OpMemberDecorate %ExternalTextureParams 6 ColMajor
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
OpDecorate %ext_tex_params NonWritable
OpDecorate %ext_tex_params DescriptorSet 1
OpDecorate %ext_tex_params Binding 3
@@ -98,19 +88,6 @@
OpDecorate %arg_0 Binding 0
OpDecorate %arg_1 DescriptorSet 1
OpDecorate %arg_1 Binding 1
- OpMemberDecorate %ExternalTextureParams 0 Offset 0
- OpMemberDecorate %ExternalTextureParams 1 Offset 4
- OpMemberDecorate %ExternalTextureParams 2 Offset 16
- OpMemberDecorate %ExternalTextureParams 2 ColMajor
- OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 3 Offset 64
- OpMemberDecorate %ExternalTextureParams 4 Offset 96
- OpMemberDecorate %ExternalTextureParams 5 Offset 128
- OpMemberDecorate %ExternalTextureParams 5 ColMajor
- OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 6 Offset 176
- OpMemberDecorate %ExternalTextureParams 6 ColMajor
- OpMemberDecorate %ExternalTextureParams 6 MatrixStride 8
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@@ -127,11 +104,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%25 = OpTypeSampler
%_ptr_UniformConstant_25 = OpTypePointer UniformConstant %25
@@ -141,28 +118,26 @@
%v3bool = OpTypeVector %bool 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
%46 = OpConstantNull %v3float
-%mat2v2float = OpTypeMatrix %v2float 2
-%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v2float
+ %v2float = OpTypeVector %float 2
%66 = OpTypeFunction %v4float %11 %11 %25 %v2float %ExternalTextureParams
%float_0_5 = OpConstant %float 0.5
%_ptr_Function_v2float = OpTypePointer Function %v2float
- %80 = OpConstantNull %v2float
+ %79 = OpConstantNull %v2float
+ %float_1 = OpConstant %float 1
%v2uint = OpTypeVector %uint 2
%int = OpTypeInt 32 1
%91 = OpConstantNull %int
%92 = OpConstantComposite %v2float %float_0_5 %float_0_5
- %float_1 = OpConstant %float 1
%uint_1 = OpConstant %uint 1
- %114 = OpTypeSampledImage %11
- %129 = OpConstantNull %uint
- %147 = OpTypeFunction %ExternalTextureParams %ExternalTextureParams_std140
+ %113 = OpTypeSampledImage %11
+ %128 = OpConstantNull %uint
%void = OpTypeVoid
- %161 = OpTypeFunction %void
- %165 = OpConstantComposite %v2float %float_1 %float_1
+ %146 = OpTypeFunction %void
+ %150 = OpConstantComposite %v2float %float_1 %float_1
%uint_0 = OpConstant %uint 0
-%_ptr_Uniform_ExternalTextureParams_std140 = OpTypePointer Uniform %ExternalTextureParams_std140
+%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %179 = OpTypeFunction %v4float
+ %163 = OpTypeFunction %v4float
%gammaCorrection = OpFunction %v3float None %26
%v = OpFunctionParameter %v3float
%params = OpFunctionParameter %GammaTransferParams
@@ -205,131 +180,115 @@
%smp = OpFunctionParameter %25
%coord = OpFunctionParameter %v2float
%params_0 = OpFunctionParameter %ExternalTextureParams
- %75 = OpLabel
- %78 = OpVariable %_ptr_Function_v2float Function %80
- %85 = OpVariable %_ptr_Function_v2float Function %80
- %97 = OpVariable %_ptr_Function_v2float Function %80
- %104 = OpVariable %_ptr_Function_v2float Function %80
+ %74 = OpLabel
+ %77 = OpVariable %_ptr_Function_v2float Function %79
+ %96 = OpVariable %_ptr_Function_v2float Function %79
+ %103 = OpVariable %_ptr_Function_v2float Function %79
%color = OpVariable %_ptr_Function_v3float Function %46
- %81 = OpCompositeConstruct %v2float %float_0_5 %float_0_5
- %77 = OpFSub %v2float %coord %81
- %82 = OpCompositeExtract %mat2v2float %params_0 6
- %83 = OpVectorTimesMatrix %v2float %77 %82
- %86 = OpCompositeConstruct %v2float %float_0_5 %float_0_5
- %84 = OpFAdd %v2float %83 %86
+ %80 = OpCompositeConstruct %v2float %float_0_5 %float_0_5
+ %76 = OpFSub %v2float %coord %80
+ %81 = OpCompositeExtract %float %76 0
+ %82 = OpCompositeExtract %float %76 1
+ %84 = OpCompositeConstruct %v3float %81 %82 %float_1
+ %85 = OpCompositeExtract %mat2v3float %params_0 6
+ %86 = OpVectorTimesMatrix %v2float %84 %85
%88 = OpImageQuerySizeLod %v2uint %plane0 %91
%87 = OpConvertUToF %v2float %88
%93 = OpFDiv %v2float %92 %87
- %98 = OpCompositeConstruct %v2float %float_1 %float_1
- %96 = OpFSub %v2float %98 %93
- %94 = OpExtInst %v2float %32 NClamp %84 %93 %96
- %100 = OpImageQuerySizeLod %v2uint %plane1 %91
- %99 = OpConvertUToF %v2float %100
- %101 = OpFDiv %v2float %92 %99
- %105 = OpCompositeConstruct %v2float %float_1 %float_1
- %103 = OpFSub %v2float %105 %101
- %102 = OpExtInst %v2float %32 NClamp %84 %101 %103
- %107 = OpCompositeExtract %uint %params_0 0
- %109 = OpIEqual %bool %107 %uint_1
- OpSelectionMerge %110 None
- OpBranchConditional %109 %111 %112
- %111 = OpLabel
- %115 = OpSampledImage %114 %plane0 %smp
- %113 = OpImageSampleExplicitLod %v4float %115 %94 Lod %8
- %116 = OpVectorShuffle %v3float %113 %113 0 1 2
- OpStore %color %116
- OpBranch %110
- %112 = OpLabel
- %118 = OpSampledImage %114 %plane0 %smp
- %117 = OpImageSampleExplicitLod %v4float %118 %94 Lod %8
- %119 = OpCompositeExtract %float %117 0
- %121 = OpSampledImage %114 %plane1 %smp
- %120 = OpImageSampleExplicitLod %v4float %121 %102 Lod %8
- %122 = OpVectorShuffle %v2float %120 %120 0 1
- %123 = OpCompositeExtract %float %122 0
- %124 = OpCompositeExtract %float %122 1
- %125 = OpCompositeConstruct %v4float %119 %123 %124 %float_1
- %126 = OpCompositeExtract %mat3v4float %params_0 2
- %127 = OpVectorTimesMatrix %v3float %125 %126
- OpStore %color %127
- OpBranch %110
+ %97 = OpCompositeConstruct %v2float %float_1 %float_1
+ %95 = OpFSub %v2float %97 %93
+ %94 = OpExtInst %v2float %32 NClamp %86 %93 %95
+ %99 = OpImageQuerySizeLod %v2uint %plane1 %91
+ %98 = OpConvertUToF %v2float %99
+ %100 = OpFDiv %v2float %92 %98
+ %104 = OpCompositeConstruct %v2float %float_1 %float_1
+ %102 = OpFSub %v2float %104 %100
+ %101 = OpExtInst %v2float %32 NClamp %86 %100 %102
+ %106 = OpCompositeExtract %uint %params_0 0
+ %108 = OpIEqual %bool %106 %uint_1
+ OpSelectionMerge %109 None
+ OpBranchConditional %108 %110 %111
%110 = OpLabel
- %128 = OpCompositeExtract %uint %params_0 1
- %130 = OpIEqual %bool %128 %129
- OpSelectionMerge %131 None
- OpBranchConditional %130 %132 %131
- %132 = OpLabel
- %134 = OpLoad %v3float %color
- %135 = OpCompositeExtract %GammaTransferParams %params_0 3
- %133 = OpFunctionCall %v3float %gammaCorrection %134 %135
- OpStore %color %133
- %136 = OpCompositeExtract %mat3v3float %params_0 5
- %137 = OpLoad %v3float %color
- %138 = OpMatrixTimesVector %v3float %136 %137
- OpStore %color %138
- %140 = OpLoad %v3float %color
- %141 = OpCompositeExtract %GammaTransferParams %params_0 4
- %139 = OpFunctionCall %v3float %gammaCorrection %140 %141
- OpStore %color %139
- OpBranch %131
+ %114 = OpSampledImage %113 %plane0 %smp
+ %112 = OpImageSampleExplicitLod %v4float %114 %94 Lod %8
+ %115 = OpVectorShuffle %v3float %112 %112 0 1 2
+ OpStore %color %115
+ OpBranch %109
+ %111 = OpLabel
+ %117 = OpSampledImage %113 %plane0 %smp
+ %116 = OpImageSampleExplicitLod %v4float %117 %94 Lod %8
+ %118 = OpCompositeExtract %float %116 0
+ %120 = OpSampledImage %113 %plane1 %smp
+ %119 = OpImageSampleExplicitLod %v4float %120 %101 Lod %8
+ %121 = OpVectorShuffle %v2float %119 %119 0 1
+ %122 = OpCompositeExtract %float %121 0
+ %123 = OpCompositeExtract %float %121 1
+ %124 = OpCompositeConstruct %v4float %118 %122 %123 %float_1
+ %125 = OpCompositeExtract %mat3v4float %params_0 2
+ %126 = OpVectorTimesMatrix %v3float %124 %125
+ OpStore %color %126
+ OpBranch %109
+ %109 = OpLabel
+ %127 = OpCompositeExtract %uint %params_0 1
+ %129 = OpIEqual %bool %127 %128
+ OpSelectionMerge %130 None
+ OpBranchConditional %129 %131 %130
%131 = OpLabel
- %142 = OpLoad %v3float %color
- %143 = OpCompositeExtract %float %142 0
- %144 = OpCompositeExtract %float %142 1
- %145 = OpCompositeExtract %float %142 2
- %146 = OpCompositeConstruct %v4float %143 %144 %145 %float_1
- OpReturnValue %146
+ %133 = OpLoad %v3float %color
+ %134 = OpCompositeExtract %GammaTransferParams %params_0 3
+ %132 = OpFunctionCall %v3float %gammaCorrection %133 %134
+ OpStore %color %132
+ %135 = OpCompositeExtract %mat3v3float %params_0 5
+ %136 = OpLoad %v3float %color
+ %137 = OpMatrixTimesVector %v3float %135 %136
+ OpStore %color %137
+ %139 = OpLoad %v3float %color
+ %140 = OpCompositeExtract %GammaTransferParams %params_0 4
+ %138 = OpFunctionCall %v3float %gammaCorrection %139 %140
+ OpStore %color %138
+ OpBranch %130
+ %130 = OpLabel
+ %141 = OpLoad %v3float %color
+ %142 = OpCompositeExtract %float %141 0
+ %143 = OpCompositeExtract %float %141 1
+ %144 = OpCompositeExtract %float %141 2
+ %145 = OpCompositeConstruct %v4float %142 %143 %144 %float_1
+ OpReturnValue %145
OpFunctionEnd
-%conv_ExternalTextureParams = OpFunction %ExternalTextureParams None %147
- %val = OpFunctionParameter %ExternalTextureParams_std140
- %150 = OpLabel
- %151 = OpCompositeExtract %uint %val 0
- %152 = OpCompositeExtract %uint %val 1
- %153 = OpCompositeExtract %mat3v4float %val 2
- %154 = OpCompositeExtract %GammaTransferParams %val 3
- %155 = OpCompositeExtract %GammaTransferParams %val 4
- %156 = OpCompositeExtract %mat3v3float %val 5
- %157 = OpCompositeExtract %v2float %val 6
- %158 = OpCompositeExtract %v2float %val 7
- %159 = OpCompositeConstruct %mat2v2float %157 %158
- %160 = OpCompositeConstruct %ExternalTextureParams %151 %152 %153 %154 %155 %156 %159
- OpReturnValue %160
- OpFunctionEnd
-%textureSampleBaseClampToEdge_7c04e6 = OpFunction %void None %161
- %164 = OpLabel
- %arg_2 = OpVariable %_ptr_Function_v2float Function %80
+%textureSampleBaseClampToEdge_7c04e6 = OpFunction %void None %146
+ %149 = OpLabel
+ %arg_2 = OpVariable %_ptr_Function_v2float Function %79
%res = OpVariable %_ptr_Function_v4float Function %5
- OpStore %arg_2 %165
- %168 = OpLoad %11 %arg_0
- %169 = OpLoad %11 %ext_tex_plane_1
- %170 = OpLoad %25 %arg_1
- %171 = OpLoad %v2float %arg_2
- %175 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %176 = OpLoad %ExternalTextureParams_std140 %175
- %172 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %176
- %167 = OpFunctionCall %v4float %textureSampleExternal %168 %169 %170 %171 %172
- OpStore %res %167
+ OpStore %arg_2 %150
+ %153 = OpLoad %11 %arg_0
+ %154 = OpLoad %11 %ext_tex_plane_1
+ %155 = OpLoad %25 %arg_1
+ %156 = OpLoad %v2float %arg_2
+ %159 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %160 = OpLoad %ExternalTextureParams %159
+ %152 = OpFunctionCall %v4float %textureSampleExternal %153 %154 %155 %156 %160
+ OpStore %res %152
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %179
- %181 = OpLabel
- %182 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
+%vertex_main_inner = OpFunction %v4float None %163
+ %165 = OpLabel
+ %166 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
OpReturnValue %5
OpFunctionEnd
-%vertex_main = OpFunction %void None %161
- %184 = OpLabel
- %185 = OpFunctionCall %v4float %vertex_main_inner
- OpStore %value %185
+%vertex_main = OpFunction %void None %146
+ %168 = OpLabel
+ %169 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %169
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %161
- %187 = OpLabel
- %188 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
+%fragment_main = OpFunction %void None %146
+ %171 = OpLabel
+ %172 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %161
- %190 = OpLabel
- %191 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
+%compute_main = OpFunction %void None %146
+ %174 = OpLabel
+ %175 = OpFunctionCall %void %textureSampleBaseClampToEdge_7c04e6
OpReturn
OpFunctionEnd
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.dxc.hlsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.dxc.hlsl
index c12d811..794293a 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.dxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -50,14 +50,14 @@
return textureLoadExternal(tint_symbol, ext_tex_plane_1_1, coords, ext_tex_params_1);
}
-float3x4 tint_symbol_4(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_4(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_6(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_6(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -66,30 +66,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_12 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_12;
+ const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_11;
}
-float3x3 tint_symbol_8(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_8(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_10(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_10(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_2(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_2(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_13 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_4(buffer, (offset + 16u)), tint_symbol_6(buffer, (offset + 64u)), tint_symbol_6(buffer, (offset + 96u)), tint_symbol_8(buffer, (offset + 128u)), tint_symbol_10(buffer, (offset + 176u))};
- return tint_symbol_13;
+ const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_4(buffer, (offset + 16u)), tint_symbol_6(buffer, (offset + 64u)), tint_symbol_6(buffer, (offset + 96u)), tint_symbol_8(buffer, (offset + 128u)), tint_symbol_10(buffer, (offset + 176u))};
+ return tint_symbol_12;
}
void doTextureLoad() {
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.fxc.hlsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.fxc.hlsl
index c12d811..794293a 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.fxc.hlsl
@@ -15,12 +15,12 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
float3x3 gamutConversionMatrix;
- float2x2 rotationMatrix;
+ float2x3 coordTransformationMatrix;
};
Texture2D<float4> ext_tex_plane_1 : register(t1, space1);
cbuffer cbuffer_ext_tex_params : register(b2, space1) {
- uint4 ext_tex_params[12];
+ uint4 ext_tex_params[13];
};
Texture2D<float4> arg_0 : register(t0, space1);
@@ -50,14 +50,14 @@
return textureLoadExternal(tint_symbol, ext_tex_plane_1_1, coords, ext_tex_params_1);
}
-float3x4 tint_symbol_4(uint4 buffer[12], uint offset) {
+float3x4 tint_symbol_4(uint4 buffer[13], uint offset) {
const uint scalar_offset = ((offset + 0u)) / 4;
const uint scalar_offset_1 = ((offset + 16u)) / 4;
const uint scalar_offset_2 = ((offset + 32u)) / 4;
return float3x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]));
}
-GammaTransferParams tint_symbol_6(uint4 buffer[12], uint offset) {
+GammaTransferParams tint_symbol_6(uint4 buffer[13], uint offset) {
const uint scalar_offset_3 = ((offset + 0u)) / 4;
const uint scalar_offset_4 = ((offset + 4u)) / 4;
const uint scalar_offset_5 = ((offset + 8u)) / 4;
@@ -66,30 +66,28 @@
const uint scalar_offset_8 = ((offset + 20u)) / 4;
const uint scalar_offset_9 = ((offset + 24u)) / 4;
const uint scalar_offset_10 = ((offset + 28u)) / 4;
- const GammaTransferParams tint_symbol_12 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
- return tint_symbol_12;
+ const GammaTransferParams tint_symbol_11 = {asfloat(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4]), asfloat(buffer[scalar_offset_4 / 4][scalar_offset_4 % 4]), asfloat(buffer[scalar_offset_5 / 4][scalar_offset_5 % 4]), asfloat(buffer[scalar_offset_6 / 4][scalar_offset_6 % 4]), asfloat(buffer[scalar_offset_7 / 4][scalar_offset_7 % 4]), asfloat(buffer[scalar_offset_8 / 4][scalar_offset_8 % 4]), asfloat(buffer[scalar_offset_9 / 4][scalar_offset_9 % 4]), buffer[scalar_offset_10 / 4][scalar_offset_10 % 4]};
+ return tint_symbol_11;
}
-float3x3 tint_symbol_8(uint4 buffer[12], uint offset) {
+float3x3 tint_symbol_8(uint4 buffer[13], uint offset) {
const uint scalar_offset_11 = ((offset + 0u)) / 4;
const uint scalar_offset_12 = ((offset + 16u)) / 4;
const uint scalar_offset_13 = ((offset + 32u)) / 4;
return float3x3(asfloat(buffer[scalar_offset_11 / 4].xyz), asfloat(buffer[scalar_offset_12 / 4].xyz), asfloat(buffer[scalar_offset_13 / 4].xyz));
}
-float2x2 tint_symbol_10(uint4 buffer[12], uint offset) {
+float2x3 tint_symbol_10(uint4 buffer[13], uint offset) {
const uint scalar_offset_14 = ((offset + 0u)) / 4;
- uint4 ubo_load = buffer[scalar_offset_14 / 4];
- const uint scalar_offset_15 = ((offset + 8u)) / 4;
- uint4 ubo_load_1 = buffer[scalar_offset_15 / 4];
- return float2x2(asfloat(((scalar_offset_14 & 2) ? ubo_load.zw : ubo_load.xy)), asfloat(((scalar_offset_15 & 2) ? ubo_load_1.zw : ubo_load_1.xy)));
+ const uint scalar_offset_15 = ((offset + 16u)) / 4;
+ return float2x3(asfloat(buffer[scalar_offset_14 / 4].xyz), asfloat(buffer[scalar_offset_15 / 4].xyz));
}
-ExternalTextureParams tint_symbol_2(uint4 buffer[12], uint offset) {
+ExternalTextureParams tint_symbol_2(uint4 buffer[13], uint offset) {
const uint scalar_offset_16 = ((offset + 0u)) / 4;
const uint scalar_offset_17 = ((offset + 4u)) / 4;
- const ExternalTextureParams tint_symbol_13 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_4(buffer, (offset + 16u)), tint_symbol_6(buffer, (offset + 64u)), tint_symbol_6(buffer, (offset + 96u)), tint_symbol_8(buffer, (offset + 128u)), tint_symbol_10(buffer, (offset + 176u))};
- return tint_symbol_13;
+ const ExternalTextureParams tint_symbol_12 = {buffer[scalar_offset_16 / 4][scalar_offset_16 % 4], buffer[scalar_offset_17 / 4][scalar_offset_17 % 4], tint_symbol_4(buffer, (offset + 16u)), tint_symbol_6(buffer, (offset + 64u)), tint_symbol_6(buffer, (offset + 96u)), tint_symbol_8(buffer, (offset + 128u)), tint_symbol_10(buffer, (offset + 176u))};
+ return tint_symbol_12;
}
void doTextureLoad() {
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
index 87e3260..230fb2e 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.glsl
@@ -18,22 +18,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -64,12 +53,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_2;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void doTextureLoad() {
- vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, conv_ExternalTextureParams(ext_tex_params.inner), ivec2(0));
+ vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params.inner, ivec2(0));
}
vec4 vertex_main() {
@@ -106,22 +91,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -152,12 +126,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_2;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void doTextureLoad() {
- vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, conv_ExternalTextureParams(ext_tex_params.inner), ivec2(0));
+ vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params.inner, ivec2(0));
}
void fragment_main() {
@@ -188,22 +158,11 @@
GammaTransferParams gammaDecodeParams;
GammaTransferParams gammaEncodeParams;
mat3 gamutConversionMatrix;
- mat2 rotationMatrix;
+ mat2x3 coordTransformationMatrix;
};
-struct ExternalTextureParams_std140 {
- uint numPlanes;
- uint doYuvToRgbConversionOnly;
- mat3x4 yuvToRgbConversionMatrix;
- GammaTransferParams gammaDecodeParams;
- GammaTransferParams gammaEncodeParams;
- mat3 gamutConversionMatrix;
- vec2 rotationMatrix_0;
- vec2 rotationMatrix_1;
-};
-
-layout(binding = 2, std140) uniform ext_tex_params_block_std140_ubo {
- ExternalTextureParams_std140 inner;
+layout(binding = 2, std140) uniform ext_tex_params_block_ubo {
+ ExternalTextureParams inner;
} ext_tex_params;
vec3 gammaCorrection(vec3 v, GammaTransferParams params) {
@@ -234,12 +193,8 @@
uniform highp sampler2D arg_0_1;
uniform highp sampler2D ext_tex_plane_1_2;
-ExternalTextureParams conv_ExternalTextureParams(ExternalTextureParams_std140 val) {
- return ExternalTextureParams(val.numPlanes, val.doYuvToRgbConversionOnly, val.yuvToRgbConversionMatrix, val.gammaDecodeParams, val.gammaEncodeParams, val.gamutConversionMatrix, mat2(val.rotationMatrix_0, val.rotationMatrix_1));
-}
-
void doTextureLoad() {
- vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, conv_ExternalTextureParams(ext_tex_params.inner), ivec2(0));
+ vec4 res = textureLoad2d(arg_0_1, ext_tex_plane_1_2, ext_tex_params.inner, ivec2(0));
}
void compute_main() {
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.msl b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.msl
index cef47ca..7c1b1c6 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.msl
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.msl
@@ -33,7 +33,7 @@
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
/* 0x0080 */ float3x3 gamutConversionMatrix;
- /* 0x00b0 */ float2x2 rotationMatrix;
+ /* 0x00b0 */ float2x3 coordTransformationMatrix;
};
float3 gammaCorrection(float3 v, GammaTransferParams params) {
diff --git a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.spvasm b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.spvasm
index 75d20ad..3bdf36d 100644
--- a/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.spvasm
+++ b/test/tint/builtins/textureLoad/texture_external_param.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 163
+; Bound: 147
; Schema: 0
OpCapability Shader
%29 = OpExtInstImport "GLSL.std.450"
@@ -14,13 +14,13 @@
OpName %value "value"
OpName %vertex_point_size "vertex_point_size"
OpName %ext_tex_plane_1 "ext_tex_plane_1"
- OpName %ext_tex_params_block_std140 "ext_tex_params_block_std140"
- OpMemberName %ext_tex_params_block_std140 0 "inner"
- OpName %ExternalTextureParams_std140 "ExternalTextureParams_std140"
- OpMemberName %ExternalTextureParams_std140 0 "numPlanes"
- OpMemberName %ExternalTextureParams_std140 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams_std140 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 3 "gammaDecodeParams"
+ OpName %ext_tex_params_block "ext_tex_params_block"
+ OpMemberName %ext_tex_params_block 0 "inner"
+ OpName %ExternalTextureParams "ExternalTextureParams"
+ OpMemberName %ExternalTextureParams 0 "numPlanes"
+ OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
+ OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
+ OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
OpName %GammaTransferParams "GammaTransferParams"
OpMemberName %GammaTransferParams 0 "G"
OpMemberName %GammaTransferParams 1 "A"
@@ -30,23 +30,14 @@
OpMemberName %GammaTransferParams 5 "E"
OpMemberName %GammaTransferParams 6 "F"
OpMemberName %GammaTransferParams 7 "padding"
- OpMemberName %ExternalTextureParams_std140 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams_std140 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams_std140 6 "rotationMatrix_0"
- OpMemberName %ExternalTextureParams_std140 7 "rotationMatrix_1"
+ OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
+ OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
+ OpMemberName %ExternalTextureParams 6 "coordTransformationMatrix"
OpName %ext_tex_params "ext_tex_params"
OpName %arg_0 "arg_0"
OpName %gammaCorrection "gammaCorrection"
OpName %v "v"
OpName %params "params"
- OpName %ExternalTextureParams "ExternalTextureParams"
- OpMemberName %ExternalTextureParams 0 "numPlanes"
- OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
- OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
- OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
- OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
- OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
- OpMemberName %ExternalTextureParams 6 "rotationMatrix"
OpName %textureLoadExternal "textureLoadExternal"
OpName %plane0 "plane0"
OpName %plane1 "plane1"
@@ -58,8 +49,6 @@
OpName %ext_tex_plane_1_1 "ext_tex_plane_1_1"
OpName %ext_tex_params_1 "ext_tex_params_1"
OpName %coords "coords"
- OpName %conv_ExternalTextureParams "conv_ExternalTextureParams"
- OpName %val "val"
OpName %doTextureLoad "doTextureLoad"
OpName %res "res"
OpName %vertex_main_inner "vertex_main_inner"
@@ -70,14 +59,14 @@
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %ext_tex_plane_1 DescriptorSet 1
OpDecorate %ext_tex_plane_1 Binding 1
- OpDecorate %ext_tex_params_block_std140 Block
- OpMemberDecorate %ext_tex_params_block_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 0 Offset 0
- OpMemberDecorate %ExternalTextureParams_std140 1 Offset 4
- OpMemberDecorate %ExternalTextureParams_std140 2 Offset 16
- OpMemberDecorate %ExternalTextureParams_std140 2 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 3 Offset 64
+ OpDecorate %ext_tex_params_block Block
+ OpMemberDecorate %ext_tex_params_block 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 0 Offset 0
+ OpMemberDecorate %ExternalTextureParams 1 Offset 4
+ OpMemberDecorate %ExternalTextureParams 2 Offset 16
+ OpMemberDecorate %ExternalTextureParams 2 ColMajor
+ OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
+ OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %GammaTransferParams 0 Offset 0
OpMemberDecorate %GammaTransferParams 1 Offset 4
OpMemberDecorate %GammaTransferParams 2 Offset 8
@@ -86,30 +75,18 @@
OpMemberDecorate %GammaTransferParams 5 Offset 20
OpMemberDecorate %GammaTransferParams 6 Offset 24
OpMemberDecorate %GammaTransferParams 7 Offset 28
- OpMemberDecorate %ExternalTextureParams_std140 4 Offset 96
- OpMemberDecorate %ExternalTextureParams_std140 5 Offset 128
- OpMemberDecorate %ExternalTextureParams_std140 5 ColMajor
- OpMemberDecorate %ExternalTextureParams_std140 5 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams_std140 6 Offset 176
- OpMemberDecorate %ExternalTextureParams_std140 7 Offset 184
- OpDecorate %ext_tex_params NonWritable
- OpDecorate %ext_tex_params DescriptorSet 1
- OpDecorate %ext_tex_params Binding 2
- OpDecorate %arg_0 DescriptorSet 1
- OpDecorate %arg_0 Binding 0
- OpMemberDecorate %ExternalTextureParams 0 Offset 0
- OpMemberDecorate %ExternalTextureParams 1 Offset 4
- OpMemberDecorate %ExternalTextureParams 2 Offset 16
- OpMemberDecorate %ExternalTextureParams 2 ColMajor
- OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
- OpMemberDecorate %ExternalTextureParams 3 Offset 64
OpMemberDecorate %ExternalTextureParams 4 Offset 96
OpMemberDecorate %ExternalTextureParams 5 Offset 128
OpMemberDecorate %ExternalTextureParams 5 ColMajor
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
OpMemberDecorate %ExternalTextureParams 6 Offset 176
OpMemberDecorate %ExternalTextureParams 6 ColMajor
- OpMemberDecorate %ExternalTextureParams 6 MatrixStride 8
+ OpMemberDecorate %ExternalTextureParams 6 MatrixStride 16
+ OpDecorate %ext_tex_params NonWritable
+ OpDecorate %ext_tex_params DescriptorSet 1
+ OpDecorate %ext_tex_params Binding 2
+ OpDecorate %arg_0 DescriptorSet 1
+ OpDecorate %arg_0 Binding 0
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@@ -126,11 +103,11 @@
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %v2float = OpTypeVector %float 2
-%ExternalTextureParams_std140 = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %v2float %v2float
-%ext_tex_params_block_std140 = OpTypeStruct %ExternalTextureParams_std140
-%_ptr_Uniform_ext_tex_params_block_std140 = OpTypePointer Uniform %ext_tex_params_block_std140
-%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block_std140 Uniform
+%mat2v3float = OpTypeMatrix %v3float 2
+%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v3float
+%ext_tex_params_block = OpTypeStruct %ExternalTextureParams
+%_ptr_Uniform_ext_tex_params_block = OpTypePointer Uniform %ext_tex_params_block
+%ext_tex_params = OpVariable %_ptr_Uniform_ext_tex_params_block Uniform
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%23 = OpTypeFunction %v3float %v3float %GammaTransferParams
%bool = OpTypeBool
@@ -139,22 +116,20 @@
%43 = OpConstantNull %v3float
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
-%mat2v2float = OpTypeMatrix %v2float 2
-%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float %mat2v2float
%63 = OpTypeFunction %v4float %11 %11 %v2int %ExternalTextureParams
%uint_1 = OpConstant %uint 1
- %82 = OpConstantNull %int
+ %80 = OpConstantNull %int
+ %v2float = OpTypeVector %float 2
%float_1 = OpConstant %float 1
- %95 = OpConstantNull %uint
- %113 = OpTypeFunction %v4float %11 %11 %ExternalTextureParams %v2int
- %121 = OpTypeFunction %ExternalTextureParams %ExternalTextureParams_std140
+ %94 = OpConstantNull %uint
+ %112 = OpTypeFunction %v4float %11 %11 %ExternalTextureParams %v2int
%void = OpTypeVoid
- %135 = OpTypeFunction %void
+ %120 = OpTypeFunction %void
%uint_0 = OpConstant %uint 0
-%_ptr_Uniform_ExternalTextureParams_std140 = OpTypePointer Uniform %ExternalTextureParams_std140
- %147 = OpConstantNull %v2int
+%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
+ %131 = OpConstantNull %v2int
%_ptr_Function_v4float = OpTypePointer Function %v4float
- %150 = OpTypeFunction %v4float
+ %134 = OpTypeFunction %v4float
%gammaCorrection = OpFunction %v3float None %23
%v = OpFunctionParameter %v3float
%params = OpFunctionParameter %GammaTransferParams
@@ -196,111 +171,95 @@
%plane1 = OpFunctionParameter %11
%coord = OpFunctionParameter %v2int
%params_0 = OpFunctionParameter %ExternalTextureParams
- %73 = OpLabel
+ %71 = OpLabel
%color = OpVariable %_ptr_Function_v3float Function %43
- %75 = OpCompositeExtract %uint %params_0 0
- %77 = OpIEqual %bool %75 %uint_1
- OpSelectionMerge %78 None
- OpBranchConditional %77 %79 %80
- %79 = OpLabel
- %81 = OpImageFetch %v4float %plane0 %coord Lod %82
- %83 = OpVectorShuffle %v3float %81 %81 0 1 2
- OpStore %color %83
- OpBranch %78
- %80 = OpLabel
- %84 = OpImageFetch %v4float %plane0 %coord Lod %82
- %85 = OpCompositeExtract %float %84 0
- %86 = OpImageFetch %v4float %plane1 %coord Lod %82
- %87 = OpVectorShuffle %v2float %86 %86 0 1
- %88 = OpCompositeExtract %float %87 0
- %89 = OpCompositeExtract %float %87 1
- %91 = OpCompositeConstruct %v4float %85 %88 %89 %float_1
- %92 = OpCompositeExtract %mat3v4float %params_0 2
- %93 = OpVectorTimesMatrix %v3float %91 %92
- OpStore %color %93
- OpBranch %78
+ %73 = OpCompositeExtract %uint %params_0 0
+ %75 = OpIEqual %bool %73 %uint_1
+ OpSelectionMerge %76 None
+ OpBranchConditional %75 %77 %78
+ %77 = OpLabel
+ %79 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %81 = OpVectorShuffle %v3float %79 %79 0 1 2
+ OpStore %color %81
+ OpBranch %76
%78 = OpLabel
- %94 = OpCompositeExtract %uint %params_0 1
- %96 = OpIEqual %bool %94 %95
- OpSelectionMerge %97 None
- OpBranchConditional %96 %98 %97
- %98 = OpLabel
- %100 = OpLoad %v3float %color
- %101 = OpCompositeExtract %GammaTransferParams %params_0 3
- %99 = OpFunctionCall %v3float %gammaCorrection %100 %101
- OpStore %color %99
- %102 = OpCompositeExtract %mat3v3float %params_0 5
- %103 = OpLoad %v3float %color
- %104 = OpMatrixTimesVector %v3float %102 %103
- OpStore %color %104
- %106 = OpLoad %v3float %color
- %107 = OpCompositeExtract %GammaTransferParams %params_0 4
- %105 = OpFunctionCall %v3float %gammaCorrection %106 %107
- OpStore %color %105
- OpBranch %97
+ %82 = OpImageFetch %v4float %plane0 %coord Lod %80
+ %83 = OpCompositeExtract %float %82 0
+ %84 = OpImageFetch %v4float %plane1 %coord Lod %80
+ %86 = OpVectorShuffle %v2float %84 %84 0 1
+ %87 = OpCompositeExtract %float %86 0
+ %88 = OpCompositeExtract %float %86 1
+ %90 = OpCompositeConstruct %v4float %83 %87 %88 %float_1
+ %91 = OpCompositeExtract %mat3v4float %params_0 2
+ %92 = OpVectorTimesMatrix %v3float %90 %91
+ OpStore %color %92
+ OpBranch %76
+ %76 = OpLabel
+ %93 = OpCompositeExtract %uint %params_0 1
+ %95 = OpIEqual %bool %93 %94
+ OpSelectionMerge %96 None
+ OpBranchConditional %95 %97 %96
%97 = OpLabel
- %108 = OpLoad %v3float %color
- %109 = OpCompositeExtract %float %108 0
- %110 = OpCompositeExtract %float %108 1
- %111 = OpCompositeExtract %float %108 2
- %112 = OpCompositeConstruct %v4float %109 %110 %111 %float_1
- OpReturnValue %112
+ %99 = OpLoad %v3float %color
+ %100 = OpCompositeExtract %GammaTransferParams %params_0 3
+ %98 = OpFunctionCall %v3float %gammaCorrection %99 %100
+ OpStore %color %98
+ %101 = OpCompositeExtract %mat3v3float %params_0 5
+ %102 = OpLoad %v3float %color
+ %103 = OpMatrixTimesVector %v3float %101 %102
+ OpStore %color %103
+ %105 = OpLoad %v3float %color
+ %106 = OpCompositeExtract %GammaTransferParams %params_0 4
+ %104 = OpFunctionCall %v3float %gammaCorrection %105 %106
+ OpStore %color %104
+ OpBranch %96
+ %96 = OpLabel
+ %107 = OpLoad %v3float %color
+ %108 = OpCompositeExtract %float %107 0
+ %109 = OpCompositeExtract %float %107 1
+ %110 = OpCompositeExtract %float %107 2
+ %111 = OpCompositeConstruct %v4float %108 %109 %110 %float_1
+ OpReturnValue %111
OpFunctionEnd
-%textureLoad2d = OpFunction %v4float None %113
+%textureLoad2d = OpFunction %v4float None %112
%texture = OpFunctionParameter %11
%ext_tex_plane_1_1 = OpFunctionParameter %11
%ext_tex_params_1 = OpFunctionParameter %ExternalTextureParams
%coords = OpFunctionParameter %v2int
- %119 = OpLabel
- %120 = OpFunctionCall %v4float %textureLoadExternal %texture %ext_tex_plane_1_1 %coords %ext_tex_params_1
- OpReturnValue %120
+ %118 = OpLabel
+ %119 = OpFunctionCall %v4float %textureLoadExternal %texture %ext_tex_plane_1_1 %coords %ext_tex_params_1
+ OpReturnValue %119
OpFunctionEnd
-%conv_ExternalTextureParams = OpFunction %ExternalTextureParams None %121
- %val = OpFunctionParameter %ExternalTextureParams_std140
- %124 = OpLabel
- %125 = OpCompositeExtract %uint %val 0
- %126 = OpCompositeExtract %uint %val 1
- %127 = OpCompositeExtract %mat3v4float %val 2
- %128 = OpCompositeExtract %GammaTransferParams %val 3
- %129 = OpCompositeExtract %GammaTransferParams %val 4
- %130 = OpCompositeExtract %mat3v3float %val 5
- %131 = OpCompositeExtract %v2float %val 6
- %132 = OpCompositeExtract %v2float %val 7
- %133 = OpCompositeConstruct %mat2v2float %131 %132
- %134 = OpCompositeConstruct %ExternalTextureParams %125 %126 %127 %128 %129 %130 %133
- OpReturnValue %134
- OpFunctionEnd
-%doTextureLoad = OpFunction %void None %135
- %138 = OpLabel
+%doTextureLoad = OpFunction %void None %120
+ %123 = OpLabel
%res = OpVariable %_ptr_Function_v4float Function %5
- %140 = OpLoad %11 %arg_0
- %141 = OpLoad %11 %ext_tex_plane_1
- %145 = OpAccessChain %_ptr_Uniform_ExternalTextureParams_std140 %ext_tex_params %uint_0
- %146 = OpLoad %ExternalTextureParams_std140 %145
- %142 = OpFunctionCall %ExternalTextureParams %conv_ExternalTextureParams %146
- %139 = OpFunctionCall %v4float %textureLoad2d %140 %141 %142 %147
- OpStore %res %139
+ %125 = OpLoad %11 %arg_0
+ %126 = OpLoad %11 %ext_tex_plane_1
+ %129 = OpAccessChain %_ptr_Uniform_ExternalTextureParams %ext_tex_params %uint_0
+ %130 = OpLoad %ExternalTextureParams %129
+ %124 = OpFunctionCall %v4float %textureLoad2d %125 %126 %130 %131
+ OpStore %res %124
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %150
- %152 = OpLabel
- %153 = OpFunctionCall %void %doTextureLoad
+%vertex_main_inner = OpFunction %v4float None %134
+ %136 = OpLabel
+ %137 = OpFunctionCall %void %doTextureLoad
OpReturnValue %5
OpFunctionEnd
-%vertex_main = OpFunction %void None %135
- %155 = OpLabel
- %156 = OpFunctionCall %v4float %vertex_main_inner
- OpStore %value %156
+%vertex_main = OpFunction %void None %120
+ %139 = OpLabel
+ %140 = OpFunctionCall %v4float %vertex_main_inner
+ OpStore %value %140
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %135
- %158 = OpLabel
- %159 = OpFunctionCall %void %doTextureLoad
+%fragment_main = OpFunction %void None %120
+ %142 = OpLabel
+ %143 = OpFunctionCall %void %doTextureLoad
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %135
- %161 = OpLabel
- %162 = OpFunctionCall %void %doTextureLoad
+%compute_main = OpFunction %void None %120
+ %145 = OpLabel
+ %146 = OpFunctionCall %void %doTextureLoad
OpReturn
OpFunctionEnd