tint/intrinsics: Texture queries now return unsigned integer / vectors
To match the spec. Also add a bunch of missing texture test cases to src/tint/ast/builtin_texture_helper_test.cc. Fix all the tests that were broken because these were not being exercised. Fixed: tint:1526 Change-Id: I207b51d307bbdc054b595e0e0e0fd3330607e171 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/106681 Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Auto-Submit: Ben Clayton <bclayton@google.com> Commit-Queue: Ben Clayton <bclayton@google.com> Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
parent
980145bc16
commit
13f089095f
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
## Changes for M109
|
## Changes for M109
|
||||||
|
|
||||||
|
### Breaking changes
|
||||||
|
|
||||||
|
* `textureDimensions()`, `textureNumLayers()` and `textureNumLevels()` now return unsigned integers / vectors. [tint:1526](crbug.com/tint/1526)
|
||||||
|
|
||||||
### New features
|
### New features
|
||||||
|
|
||||||
* Uniformity analysis failures are warnings again [tint:1728](crbug.com/tint/1728)
|
* Uniformity analysis failures are warnings again [tint:1728](crbug.com/tint/1728)
|
||||||
|
|
|
@ -310,23 +310,23 @@ fn IsEqualTo(pixel : vec4<f32>, expected : vec4<f32>) -> bool {
|
||||||
auto texelType = "vec4<" + componentFmt + ">";
|
auto texelType = "vec4<" + componentFmt + ">";
|
||||||
std::string sliceCount;
|
std::string sliceCount;
|
||||||
std::string textureStore;
|
std::string textureStore;
|
||||||
std::string textureSize = "textureDimensions(storageImage0).xy";
|
std::string textureSize = "vec2<i32>(textureDimensions(storageImage0).xy)";
|
||||||
switch (dimension) {
|
switch (dimension) {
|
||||||
case wgpu::TextureViewDimension::e1D:
|
case wgpu::TextureViewDimension::e1D:
|
||||||
sliceCount = "1";
|
sliceCount = "1";
|
||||||
textureStore = "textureStore(storageImage0, x, expected)";
|
textureStore = "textureStore(storageImage0, x, expected)";
|
||||||
textureSize = "vec2<i32>(textureDimensions(storageImage0), 1)";
|
textureSize = "vec2<i32>(i32(textureDimensions(storageImage0)), 1)";
|
||||||
break;
|
break;
|
||||||
case wgpu::TextureViewDimension::e2D:
|
case wgpu::TextureViewDimension::e2D:
|
||||||
sliceCount = "1";
|
sliceCount = "1";
|
||||||
textureStore = "textureStore(storageImage0, vec2<i32>(x, y), expected)";
|
textureStore = "textureStore(storageImage0, vec2<i32>(x, y), expected)";
|
||||||
break;
|
break;
|
||||||
case wgpu::TextureViewDimension::e2DArray:
|
case wgpu::TextureViewDimension::e2DArray:
|
||||||
sliceCount = "textureNumLayers(storageImage0)";
|
sliceCount = "i32(textureNumLayers(storageImage0))";
|
||||||
textureStore = "textureStore(storageImage0, vec2<i32>(x, y), slice, expected)";
|
textureStore = "textureStore(storageImage0, vec2<i32>(x, y), slice, expected)";
|
||||||
break;
|
break;
|
||||||
case wgpu::TextureViewDimension::e3D:
|
case wgpu::TextureViewDimension::e3D:
|
||||||
sliceCount = "textureDimensions(storageImage0).z";
|
sliceCount = "i32(textureDimensions(storageImage0).z)";
|
||||||
textureStore = "textureStore(storageImage0, vec3<i32>(x, y, slice), expected)";
|
textureStore = "textureStore(storageImage0, vec3<i32>(x, y, slice), expected)";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -75,7 +75,7 @@ class SubresourceTrackingPerf : public DawnPerfTestWithParams<SubresourceTrackin
|
||||||
pipelineDesc.cFragment.module = utils::CreateShaderModule(device, R"(
|
pipelineDesc.cFragment.module = utils::CreateShaderModule(device, R"(
|
||||||
@group(0) @binding(0) var materials : texture_2d<f32>;
|
@group(0) @binding(0) var materials : texture_2d<f32>;
|
||||||
@fragment fn main() -> @location(0) vec4<f32> {
|
@fragment fn main() -> @location(0) vec4<f32> {
|
||||||
let foo : vec2<i32> = textureDimensions(materials);
|
_ = materials;
|
||||||
return vec4<f32>(1.0, 0.0, 0.0, 1.0);
|
return vec4<f32>(1.0, 0.0, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
)");
|
)");
|
||||||
|
|
|
@ -183,7 +183,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensions1d,
|
ValidTextureOverload::kDimensions1d,
|
||||||
"textureDimensions(t : texture_1d<f32>) -> i32",
|
"textureDimensions(t : texture_1d<f32>) -> u32",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k1d,
|
ast::TextureDimension::k1d,
|
||||||
|
@ -193,7 +193,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensions2d,
|
ValidTextureOverload::kDimensions2d,
|
||||||
"textureDimensions(t : texture_2d<f32>) -> vec2<i32>",
|
"textureDimensions(t : texture_2d<f32>) -> vec2<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -204,7 +204,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensions2dLevel,
|
ValidTextureOverload::kDimensions2dLevel,
|
||||||
"textureDimensions(t : texture_2d<f32>,\n"
|
"textureDimensions(t : texture_2d<f32>,\n"
|
||||||
" level : i32) -> vec2<i32>",
|
" level : i32) -> vec2<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -214,7 +214,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensions2dArray,
|
ValidTextureOverload::kDimensions2dArray,
|
||||||
"textureDimensions(t : texture_2d_array<f32>) -> vec2<i32>",
|
"textureDimensions(t : texture_2d_array<f32>) -> vec2<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -225,7 +225,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensions2dArrayLevel,
|
ValidTextureOverload::kDimensions2dArrayLevel,
|
||||||
"textureDimensions(t : texture_2d_array<f32>,\n"
|
"textureDimensions(t : texture_2d_array<f32>,\n"
|
||||||
" level : i32) -> vec2<i32>",
|
" level : i32) -> vec2<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -235,7 +235,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensions3d,
|
ValidTextureOverload::kDimensions3d,
|
||||||
"textureDimensions(t : texture_3d<f32>) -> vec3<i32>",
|
"textureDimensions(t : texture_3d<f32>) -> vec3<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k3d,
|
ast::TextureDimension::k3d,
|
||||||
|
@ -246,7 +246,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensions3dLevel,
|
ValidTextureOverload::kDimensions3dLevel,
|
||||||
"textureDimensions(t : texture_3d<f32>,\n"
|
"textureDimensions(t : texture_3d<f32>,\n"
|
||||||
" level : i32) -> vec3<i32>",
|
" level : i32) -> vec3<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k3d,
|
ast::TextureDimension::k3d,
|
||||||
|
@ -256,7 +256,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsCube,
|
ValidTextureOverload::kDimensionsCube,
|
||||||
"textureDimensions(t : texture_cube<f32>) -> vec2<i32>",
|
"textureDimensions(t : texture_cube<f32>) -> vec2<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCube,
|
ast::TextureDimension::kCube,
|
||||||
|
@ -267,7 +267,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsCubeLevel,
|
ValidTextureOverload::kDimensionsCubeLevel,
|
||||||
"textureDimensions(t : texture_cube<f32>,\n"
|
"textureDimensions(t : texture_cube<f32>,\n"
|
||||||
" level : i32) -> vec2<i32>",
|
" level : i32) -> vec2<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCube,
|
ast::TextureDimension::kCube,
|
||||||
|
@ -277,7 +277,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsCubeArray,
|
ValidTextureOverload::kDimensionsCubeArray,
|
||||||
"textureDimensions(t : texture_cube_array<f32>) -> vec2<i32>",
|
"textureDimensions(t : texture_cube_array<f32>) -> vec2<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCubeArray,
|
ast::TextureDimension::kCubeArray,
|
||||||
|
@ -288,7 +288,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsCubeArrayLevel,
|
ValidTextureOverload::kDimensionsCubeArrayLevel,
|
||||||
"textureDimensions(t : texture_cube_array<f32>,\n"
|
"textureDimensions(t : texture_cube_array<f32>,\n"
|
||||||
" level : i32) -> vec2<i32>",
|
" level : i32) -> vec2<u32>",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCubeArray,
|
ast::TextureDimension::kCubeArray,
|
||||||
|
@ -298,7 +298,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsMultisampled2d,
|
ValidTextureOverload::kDimensionsMultisampled2d,
|
||||||
"textureDimensions(t : texture_multisampled_2d<f32>)-> vec2<i32>",
|
"textureDimensions(t : texture_multisampled_2d<f32>)-> vec2<u32>",
|
||||||
TextureKind::kMultisampled,
|
TextureKind::kMultisampled,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -308,7 +308,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepth2d,
|
ValidTextureOverload::kDimensionsDepth2d,
|
||||||
"textureDimensions(t : texture_depth_2d) -> vec2<i32>",
|
"textureDimensions(t : texture_depth_2d) -> vec2<u32>",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -319,7 +319,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepth2dLevel,
|
ValidTextureOverload::kDimensionsDepth2dLevel,
|
||||||
"textureDimensions(t : texture_depth_2d,\n"
|
"textureDimensions(t : texture_depth_2d,\n"
|
||||||
" level : i32) -> vec2<i32>",
|
" level : i32) -> vec2<u32>",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -329,7 +329,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepth2dArray,
|
ValidTextureOverload::kDimensionsDepth2dArray,
|
||||||
"textureDimensions(t : texture_depth_2d_array) -> vec2<i32>",
|
"textureDimensions(t : texture_depth_2d_array) -> vec2<u32>",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -340,7 +340,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepth2dArrayLevel,
|
ValidTextureOverload::kDimensionsDepth2dArrayLevel,
|
||||||
"textureDimensions(t : texture_depth_2d_array,\n"
|
"textureDimensions(t : texture_depth_2d_array,\n"
|
||||||
" level : i32) -> vec2<i32>",
|
" level : i32) -> vec2<u32>",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -350,7 +350,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepthCube,
|
ValidTextureOverload::kDimensionsDepthCube,
|
||||||
"textureDimensions(t : texture_depth_cube) -> vec2<i32>",
|
"textureDimensions(t : texture_depth_cube) -> vec2<u32>",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCube,
|
ast::TextureDimension::kCube,
|
||||||
|
@ -361,7 +361,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepthCubeLevel,
|
ValidTextureOverload::kDimensionsDepthCubeLevel,
|
||||||
"textureDimensions(t : texture_depth_cube,\n"
|
"textureDimensions(t : texture_depth_cube,\n"
|
||||||
" level : i32) -> vec2<i32>",
|
" level : i32) -> vec2<u32>",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCube,
|
ast::TextureDimension::kCube,
|
||||||
|
@ -371,7 +371,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepthCubeArray,
|
ValidTextureOverload::kDimensionsDepthCubeArray,
|
||||||
"textureDimensions(t : texture_depth_cube_array) -> vec2<i32>",
|
"textureDimensions(t : texture_depth_cube_array) -> vec2<u32>",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCubeArray,
|
ast::TextureDimension::kCubeArray,
|
||||||
|
@ -382,7 +382,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepthCubeArrayLevel,
|
ValidTextureOverload::kDimensionsDepthCubeArrayLevel,
|
||||||
"textureDimensions(t : texture_depth_cube_array,\n"
|
"textureDimensions(t : texture_depth_cube_array,\n"
|
||||||
" level : i32) -> vec2<i32>",
|
" level : i32) -> vec2<u32>",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCubeArray,
|
ast::TextureDimension::kCubeArray,
|
||||||
|
@ -392,7 +392,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsDepthMultisampled2d,
|
ValidTextureOverload::kDimensionsDepthMultisampled2d,
|
||||||
"textureDimensions(t : texture_depth_multisampled_2d) -> vec2<i32>",
|
"textureDimensions(t : texture_depth_multisampled_2d) -> vec2<u32>",
|
||||||
TextureKind::kDepthMultisampled,
|
TextureKind::kDepthMultisampled,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -402,7 +402,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsStorageWO1d,
|
ValidTextureOverload::kDimensionsStorageWO1d,
|
||||||
"textureDimensions(t : texture_storage_1d<rgba32float>) -> i32",
|
"textureDimensions(t : texture_storage_1d<rgba32float>) -> u32",
|
||||||
ast::Access::kWrite,
|
ast::Access::kWrite,
|
||||||
ast::TexelFormat::kRgba32Float,
|
ast::TexelFormat::kRgba32Float,
|
||||||
ast::TextureDimension::k1d,
|
ast::TextureDimension::k1d,
|
||||||
|
@ -412,8 +412,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsStorageWO2d,
|
ValidTextureOverload::kDimensionsStorageWO2d,
|
||||||
"textureDimensions(t : texture_storage_2d<rgba32float>) -> "
|
"textureDimensions(t : texture_storage_2d<rgba32float>) -> vec2<u32>",
|
||||||
"vec2<i32>",
|
|
||||||
ast::Access::kWrite,
|
ast::Access::kWrite,
|
||||||
ast::TexelFormat::kRgba32Float,
|
ast::TexelFormat::kRgba32Float,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -423,8 +422,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsStorageWO2dArray,
|
ValidTextureOverload::kDimensionsStorageWO2dArray,
|
||||||
"textureDimensions(t : texture_storage_2d_array<rgba32float>) -> "
|
"textureDimensions(t : texture_storage_2d_array<rgba32float>) -> vec2<u32>",
|
||||||
"vec2<i32>",
|
|
||||||
ast::Access::kWrite,
|
ast::Access::kWrite,
|
||||||
ast::TexelFormat::kRgba32Float,
|
ast::TexelFormat::kRgba32Float,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -434,8 +432,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kDimensionsStorageWO3d,
|
ValidTextureOverload::kDimensionsStorageWO3d,
|
||||||
"textureDimensions(t : texture_storage_3d<rgba32float>) -> "
|
"textureDimensions(t : texture_storage_3d<rgba32float>) -> vec3<u32>",
|
||||||
"vec3<i32>",
|
|
||||||
ast::Access::kWrite,
|
ast::Access::kWrite,
|
||||||
ast::TexelFormat::kRgba32Float,
|
ast::TexelFormat::kRgba32Float,
|
||||||
ast::TextureDimension::k3d,
|
ast::TextureDimension::k3d,
|
||||||
|
@ -788,7 +785,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLayers2dArray,
|
ValidTextureOverload::kNumLayers2dArray,
|
||||||
"textureNumLayers(t : texture_2d_array<f32>) -> i32",
|
"textureNumLayers(t : texture_2d_array<f32>) -> u32",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -798,7 +795,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLayersCubeArray,
|
ValidTextureOverload::kNumLayersCubeArray,
|
||||||
"textureNumLayers(t : texture_cube_array<f32>) -> i32",
|
"textureNumLayers(t : texture_cube_array<f32>) -> u32",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCubeArray,
|
ast::TextureDimension::kCubeArray,
|
||||||
|
@ -808,7 +805,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLayersDepth2dArray,
|
ValidTextureOverload::kNumLayersDepth2dArray,
|
||||||
"textureNumLayers(t : texture_depth_2d_array) -> i32",
|
"textureNumLayers(t : texture_depth_2d_array) -> u32",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -818,7 +815,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLayersDepthCubeArray,
|
ValidTextureOverload::kNumLayersDepthCubeArray,
|
||||||
"textureNumLayers(t : texture_depth_cube_array) -> i32",
|
"textureNumLayers(t : texture_depth_cube_array) -> u32",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCubeArray,
|
ast::TextureDimension::kCubeArray,
|
||||||
|
@ -828,7 +825,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLayersStorageWO2dArray,
|
ValidTextureOverload::kNumLayersStorageWO2dArray,
|
||||||
"textureNumLayers(t : texture_storage_2d_array<rgba32float>) -> i32",
|
"textureNumLayers(t : texture_storage_2d_array<rgba32float>) -> u32",
|
||||||
ast::Access::kWrite,
|
ast::Access::kWrite,
|
||||||
ast::TexelFormat::kRgba32Float,
|
ast::TexelFormat::kRgba32Float,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -838,7 +835,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevels2d,
|
ValidTextureOverload::kNumLevels2d,
|
||||||
"textureNumLevels(t : texture_2d<f32>) -> i32",
|
"textureNumLevels(t : texture_2d<f32>) -> u32",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -848,7 +845,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevels2dArray,
|
ValidTextureOverload::kNumLevels2dArray,
|
||||||
"textureNumLevels(t : texture_2d_array<f32>) -> i32",
|
"textureNumLevels(t : texture_2d_array<f32>) -> u32",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -858,7 +855,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevels3d,
|
ValidTextureOverload::kNumLevels3d,
|
||||||
"textureNumLevels(t : texture_3d<f32>) -> i32",
|
"textureNumLevels(t : texture_3d<f32>) -> u32",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k3d,
|
ast::TextureDimension::k3d,
|
||||||
|
@ -868,7 +865,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevelsCube,
|
ValidTextureOverload::kNumLevelsCube,
|
||||||
"textureNumLevels(t : texture_cube<f32>) -> i32",
|
"textureNumLevels(t : texture_cube<f32>) -> u32",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCube,
|
ast::TextureDimension::kCube,
|
||||||
|
@ -878,7 +875,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevelsCubeArray,
|
ValidTextureOverload::kNumLevelsCubeArray,
|
||||||
"textureNumLevels(t : texture_cube_array<f32>) -> i32",
|
"textureNumLevels(t : texture_cube_array<f32>) -> u32",
|
||||||
TextureKind::kRegular,
|
TextureKind::kRegular,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCubeArray,
|
ast::TextureDimension::kCubeArray,
|
||||||
|
@ -888,7 +885,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevelsDepth2d,
|
ValidTextureOverload::kNumLevelsDepth2d,
|
||||||
"textureNumLevels(t : texture_depth_2d) -> i32",
|
"textureNumLevels(t : texture_depth_2d) -> u32",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -898,7 +895,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevelsDepth2dArray,
|
ValidTextureOverload::kNumLevelsDepth2dArray,
|
||||||
"textureNumLevels(t : texture_depth_2d_array) -> i32",
|
"textureNumLevels(t : texture_depth_2d_array) -> u32",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2dArray,
|
ast::TextureDimension::k2dArray,
|
||||||
|
@ -908,7 +905,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevelsDepthCube,
|
ValidTextureOverload::kNumLevelsDepthCube,
|
||||||
"textureNumLevels(t : texture_depth_cube) -> i32",
|
"textureNumLevels(t : texture_depth_cube) -> u32",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCube,
|
ast::TextureDimension::kCube,
|
||||||
|
@ -918,7 +915,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumLevelsDepthCubeArray,
|
ValidTextureOverload::kNumLevelsDepthCubeArray,
|
||||||
"textureNumLevels(t : texture_depth_cube_array) -> i32",
|
"textureNumLevels(t : texture_depth_cube_array) -> u32",
|
||||||
TextureKind::kDepth,
|
TextureKind::kDepth,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::kCubeArray,
|
ast::TextureDimension::kCubeArray,
|
||||||
|
@ -928,7 +925,7 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kNumSamplesMultisampled2d,
|
ValidTextureOverload::kNumSamplesMultisampled2d,
|
||||||
"textureNumSamples(t : texture_multisampled_2d<f32>) -> i32",
|
"textureNumSamples(t : texture_multisampled_2d<f32>) -> u32",
|
||||||
TextureKind::kMultisampled,
|
TextureKind::kMultisampled,
|
||||||
ast::SamplerKind::kSampler,
|
ast::SamplerKind::kSampler,
|
||||||
ast::TextureDimension::k2d,
|
ast::TextureDimension::k2d,
|
||||||
|
@ -936,6 +933,16 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
"textureNumSamples",
|
"textureNumSamples",
|
||||||
[](ProgramBuilder* b) { return b->ExprList("texture"); },
|
[](ProgramBuilder* b) { return b->ExprList("texture"); },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ValidTextureOverload::kNumSamplesDepthMultisampled2d,
|
||||||
|
"textureNumSamples(t : texture_depth_multisampled_2d<f32>) -> u32",
|
||||||
|
TextureKind::kMultisampled,
|
||||||
|
ast::SamplerKind::kComparisonSampler,
|
||||||
|
ast::TextureDimension::k2d,
|
||||||
|
TextureDataType::kF32,
|
||||||
|
"textureNumSamples",
|
||||||
|
[](ProgramBuilder* b) { return b->ExprList("texture"); },
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kSample1dF32,
|
ValidTextureOverload::kSample1dF32,
|
||||||
"textureSample(t : texture_1d<f32>,\n"
|
"textureSample(t : texture_1d<f32>,\n"
|
||||||
|
@ -1918,6 +1925,124 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
5_f); // depth_ref
|
5_f); // depth_ref
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ValidTextureOverload::kSampleCompareLevelDepth2dF32,
|
||||||
|
"textureSampleCompareLevel(t : texture_depth_2d,\n"
|
||||||
|
" s : sampler_comparison,\n"
|
||||||
|
" coords : vec2<f32>,\n"
|
||||||
|
" depth_ref : f32) -> f32",
|
||||||
|
TextureKind::kDepth,
|
||||||
|
ast::SamplerKind::kComparisonSampler,
|
||||||
|
ast::TextureDimension::k2d,
|
||||||
|
TextureDataType::kF32,
|
||||||
|
"textureSampleCompareLevel",
|
||||||
|
[](ProgramBuilder* b) {
|
||||||
|
return b->ExprList("texture", // t
|
||||||
|
"sampler", // s
|
||||||
|
b->vec2<f32>(1_f, 2_f), // coords
|
||||||
|
3_f); // depth_ref
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32,
|
||||||
|
"textureSampleCompareLevel(t : texture_depth_2d,\n"
|
||||||
|
" s : sampler_comparison,\n"
|
||||||
|
" coords : vec2<f32>,\n"
|
||||||
|
" depth_ref : f32,\n"
|
||||||
|
" offset : vec2<i32>) -> f32",
|
||||||
|
TextureKind::kDepth,
|
||||||
|
ast::SamplerKind::kComparisonSampler,
|
||||||
|
ast::TextureDimension::k2d,
|
||||||
|
TextureDataType::kF32,
|
||||||
|
"textureSampleCompareLevel",
|
||||||
|
[](ProgramBuilder* b) {
|
||||||
|
return b->ExprList("texture", // t
|
||||||
|
"sampler", // s
|
||||||
|
b->vec2<f32>(1_f, 2_f), // coords
|
||||||
|
3_f, // depth_ref
|
||||||
|
b->vec2<i32>(4_i, 5_i)); // offset
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32,
|
||||||
|
"textureSampleCompareLevel(t : texture_depth_2d_array,\n"
|
||||||
|
" s : sampler_comparison,\n"
|
||||||
|
" coords : vec2<f32>,\n"
|
||||||
|
" array_index : i32,\n"
|
||||||
|
" depth_ref : f32) -> f32",
|
||||||
|
TextureKind::kDepth,
|
||||||
|
ast::SamplerKind::kComparisonSampler,
|
||||||
|
ast::TextureDimension::k2dArray,
|
||||||
|
TextureDataType::kF32,
|
||||||
|
"textureSampleCompareLevel",
|
||||||
|
[](ProgramBuilder* b) {
|
||||||
|
return b->ExprList("texture", // t
|
||||||
|
"sampler", // s
|
||||||
|
b->vec2<f32>(1_f, 2_f), // coords
|
||||||
|
3_i, // array_index
|
||||||
|
4_f); // depth_ref
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32,
|
||||||
|
"textureSampleCompareLevel(t : texture_depth_2d_array,\n"
|
||||||
|
" s : sampler_comparison,\n"
|
||||||
|
" coords : vec2<f32>,\n"
|
||||||
|
" array_index : i32,\n"
|
||||||
|
" depth_ref : f32,\n"
|
||||||
|
" offset : vec2<i32>) -> f32",
|
||||||
|
TextureKind::kDepth,
|
||||||
|
ast::SamplerKind::kComparisonSampler,
|
||||||
|
ast::TextureDimension::k2dArray,
|
||||||
|
TextureDataType::kF32,
|
||||||
|
"textureSampleCompareLevel",
|
||||||
|
[](ProgramBuilder* b) {
|
||||||
|
return b->ExprList("texture", // t
|
||||||
|
"sampler", // s
|
||||||
|
b->vec2<f32>(1_f, 2_f), // coords
|
||||||
|
3_i, // array_index
|
||||||
|
4_f, // depth_ref
|
||||||
|
b->vec2<i32>(5_i, 6_i)); // offset
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ValidTextureOverload::kSampleCompareLevelDepthCubeF32,
|
||||||
|
"textureSampleCompareLevel(t : texture_depth_cube,\n"
|
||||||
|
" s : sampler_comparison,\n"
|
||||||
|
" coords : vec3<f32>,\n"
|
||||||
|
" depth_ref : f32) -> f32",
|
||||||
|
TextureKind::kDepth,
|
||||||
|
ast::SamplerKind::kComparisonSampler,
|
||||||
|
ast::TextureDimension::kCube,
|
||||||
|
TextureDataType::kF32,
|
||||||
|
"textureSampleCompareLevel",
|
||||||
|
[](ProgramBuilder* b) {
|
||||||
|
return b->ExprList("texture", // t
|
||||||
|
"sampler", // s
|
||||||
|
b->vec3<f32>(1_f, 2_f, 3_f), // coords
|
||||||
|
4_f); // depth_ref
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32,
|
||||||
|
"textureSampleCompareLevel(t : texture_depth_cube_array,\n"
|
||||||
|
" s : sampler_comparison,\n"
|
||||||
|
" coords : vec3<f32>,\n"
|
||||||
|
" array_index : i32,\n"
|
||||||
|
" depth_ref : f32) -> f32",
|
||||||
|
TextureKind::kDepth,
|
||||||
|
ast::SamplerKind::kComparisonSampler,
|
||||||
|
ast::TextureDimension::kCubeArray,
|
||||||
|
TextureDataType::kF32,
|
||||||
|
"textureSampleCompareLevel",
|
||||||
|
[](ProgramBuilder* b) {
|
||||||
|
return b->ExprList("texture", // t
|
||||||
|
"sampler", // s
|
||||||
|
b->vec3<f32>(1_f, 2_f, 3_f), // coords
|
||||||
|
4_i, // array_index
|
||||||
|
5_f); // depth_ref
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kLoad1dLevelF32,
|
ValidTextureOverload::kLoad1dLevelF32,
|
||||||
"textureLoad(t : texture_1d<f32>,\n"
|
"textureLoad(t : texture_1d<f32>,\n"
|
||||||
|
@ -2181,6 +2306,21 @@ std::vector<TextureOverloadCase> TextureOverloadCase::ValidCases() {
|
||||||
4_u); // level
|
4_u); // level
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ValidTextureOverload::kLoadDepthMultisampled2dF32,
|
||||||
|
"textureLoad(t : texture_depth_multisampled_2d,\n"
|
||||||
|
" coords : vec2<u32>,\n"
|
||||||
|
" sample_index : u32) -> f32",
|
||||||
|
TextureKind::kDepthMultisampled,
|
||||||
|
ast::TextureDimension::k2d,
|
||||||
|
TextureDataType::kF32,
|
||||||
|
"textureLoad",
|
||||||
|
[](ProgramBuilder* b) {
|
||||||
|
return b->ExprList("texture", // t
|
||||||
|
b->vec2<u32>(1_u, 2_u), // coords
|
||||||
|
3_u); // sample_index
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ValidTextureOverload::kStoreWO1dRgba32float,
|
ValidTextureOverload::kStoreWO1dRgba32float,
|
||||||
"textureStore(t : texture_storage_1d<rgba32float>,\n"
|
"textureStore(t : texture_storage_1d<rgba32float>,\n"
|
||||||
|
|
|
@ -1618,7 +1618,7 @@ TEST_F(InspectorGetResourceBindingsTest, Simple) {
|
||||||
|
|
||||||
auto* st_type = MakeStorageTextureTypes(ast::TextureDimension::k2d, ast::TexelFormat::kR32Uint);
|
auto* st_type = MakeStorageTextureTypes(ast::TextureDimension::k2d, ast::TexelFormat::kR32Uint);
|
||||||
AddStorageTexture("st_var", st_type, 4, 0);
|
AddStorageTexture("st_var", st_type, 4, 0);
|
||||||
MakeStorageTextureBodyFunction("st_func", "st_var", ty.vec2<i32>(), utils::Empty);
|
MakeStorageTextureBodyFunction("st_func", "st_var", ty.vec2<u32>(), utils::Empty);
|
||||||
|
|
||||||
MakeCallerBodyFunction("ep_func",
|
MakeCallerBodyFunction("ep_func",
|
||||||
utils::Vector{
|
utils::Vector{
|
||||||
|
@ -2789,14 +2789,14 @@ TEST_P(InspectorGetStorageTextureResourceBindingsTestWithParam, Simple) {
|
||||||
const ast::Type* dim_type = nullptr;
|
const ast::Type* dim_type = nullptr;
|
||||||
switch (dim) {
|
switch (dim) {
|
||||||
case ast::TextureDimension::k1d:
|
case ast::TextureDimension::k1d:
|
||||||
dim_type = ty.i32();
|
dim_type = ty.u32();
|
||||||
break;
|
break;
|
||||||
case ast::TextureDimension::k2d:
|
case ast::TextureDimension::k2d:
|
||||||
case ast::TextureDimension::k2dArray:
|
case ast::TextureDimension::k2dArray:
|
||||||
dim_type = ty.vec2<i32>();
|
dim_type = ty.vec2<u32>();
|
||||||
break;
|
break;
|
||||||
case ast::TextureDimension::k3d:
|
case ast::TextureDimension::k3d:
|
||||||
dim_type = ty.vec3<i32>();
|
dim_type = ty.vec3<u32>();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -554,33 +554,33 @@ fn unpack4x8snorm(u32) -> vec4<f32>
|
||||||
fn unpack4x8unorm(u32) -> vec4<f32>
|
fn unpack4x8unorm(u32) -> vec4<f32>
|
||||||
@stage("compute") fn workgroupBarrier()
|
@stage("compute") fn workgroupBarrier()
|
||||||
|
|
||||||
fn textureDimensions<T: fiu32>(texture: texture_1d<T>) -> i32
|
fn textureDimensions<T: fiu32>(texture: texture_1d<T>) -> u32
|
||||||
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_1d<T>, level: C) -> i32
|
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_1d<T>, level: C) -> u32
|
||||||
fn textureDimensions<T: fiu32>(texture: texture_2d<T>) -> vec2<i32>
|
fn textureDimensions<T: fiu32>(texture: texture_2d<T>) -> vec2<u32>
|
||||||
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_2d<T>, level: C) -> vec2<i32>
|
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_2d<T>, level: C) -> vec2<u32>
|
||||||
fn textureDimensions<T: fiu32>(texture: texture_2d_array<T>) -> vec2<i32>
|
fn textureDimensions<T: fiu32>(texture: texture_2d_array<T>) -> vec2<u32>
|
||||||
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_2d_array<T>, level: C) -> vec2<i32>
|
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_2d_array<T>, level: C) -> vec2<u32>
|
||||||
fn textureDimensions<T: fiu32>(texture: texture_3d<T>) -> vec3<i32>
|
fn textureDimensions<T: fiu32>(texture: texture_3d<T>) -> vec3<u32>
|
||||||
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_3d<T>, level: C) -> vec3<i32>
|
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_3d<T>, level: C) -> vec3<u32>
|
||||||
fn textureDimensions<T: fiu32>(texture: texture_cube<T>) -> vec2<i32>
|
fn textureDimensions<T: fiu32>(texture: texture_cube<T>) -> vec2<u32>
|
||||||
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_cube<T>, level: C) -> vec2<i32>
|
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_cube<T>, level: C) -> vec2<u32>
|
||||||
fn textureDimensions<T: fiu32>(texture: texture_cube_array<T>) -> vec2<i32>
|
fn textureDimensions<T: fiu32>(texture: texture_cube_array<T>) -> vec2<u32>
|
||||||
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_cube_array<T>, level: C) -> vec2<i32>
|
fn textureDimensions<T: fiu32, C: iu32>(texture: texture_cube_array<T>, level: C) -> vec2<u32>
|
||||||
fn textureDimensions<T: fiu32>(texture: texture_multisampled_2d<T>) -> vec2<i32>
|
fn textureDimensions<T: fiu32>(texture: texture_multisampled_2d<T>) -> vec2<u32>
|
||||||
fn textureDimensions(texture: texture_depth_2d) -> vec2<i32>
|
fn textureDimensions(texture: texture_depth_2d) -> vec2<u32>
|
||||||
fn textureDimensions<C: iu32>(texture: texture_depth_2d, level: C) -> vec2<i32>
|
fn textureDimensions<C: iu32>(texture: texture_depth_2d, level: C) -> vec2<u32>
|
||||||
fn textureDimensions(texture: texture_depth_2d_array) -> vec2<i32>
|
fn textureDimensions(texture: texture_depth_2d_array) -> vec2<u32>
|
||||||
fn textureDimensions<C: iu32>(texture: texture_depth_2d_array, level: C) -> vec2<i32>
|
fn textureDimensions<C: iu32>(texture: texture_depth_2d_array, level: C) -> vec2<u32>
|
||||||
fn textureDimensions(texture: texture_depth_cube) -> vec2<i32>
|
fn textureDimensions(texture: texture_depth_cube) -> vec2<u32>
|
||||||
fn textureDimensions<C: iu32>(texture: texture_depth_cube, level: C) -> vec2<i32>
|
fn textureDimensions<C: iu32>(texture: texture_depth_cube, level: C) -> vec2<u32>
|
||||||
fn textureDimensions(texture: texture_depth_cube_array) -> vec2<i32>
|
fn textureDimensions(texture: texture_depth_cube_array) -> vec2<u32>
|
||||||
fn textureDimensions<C: iu32>(texture: texture_depth_cube_array, level: C) -> vec2<i32>
|
fn textureDimensions<C: iu32>(texture: texture_depth_cube_array, level: C) -> vec2<u32>
|
||||||
fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<i32>
|
fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32>
|
||||||
fn textureDimensions<F: texel_format, A: write>(texture: texture_storage_1d<F, A>) -> i32
|
fn textureDimensions<F: texel_format, A: write>(texture: texture_storage_1d<F, A>) -> u32
|
||||||
fn textureDimensions<F: texel_format, A: write>(texture: texture_storage_2d<F, A>) -> vec2<i32>
|
fn textureDimensions<F: texel_format, A: write>(texture: texture_storage_2d<F, A>) -> vec2<u32>
|
||||||
fn textureDimensions<F: texel_format, A: write>(texture: texture_storage_2d_array<F, A>) -> vec2<i32>
|
fn textureDimensions<F: texel_format, A: write>(texture: texture_storage_2d_array<F, A>) -> vec2<u32>
|
||||||
fn textureDimensions<F: texel_format, A: write>(texture: texture_storage_3d<F, A>) -> vec3<i32>
|
fn textureDimensions<F: texel_format, A: write>(texture: texture_storage_3d<F, A>) -> vec3<u32>
|
||||||
fn textureDimensions(texture: texture_external) -> vec2<i32>
|
fn textureDimensions(texture: texture_external) -> vec2<u32>
|
||||||
fn textureGather<T: fiu32, C: iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T>
|
fn textureGather<T: fiu32, C: iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T>
|
||||||
fn textureGather<T: fiu32, C: iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<T>
|
fn textureGather<T: fiu32, C: iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<T>
|
||||||
fn textureGather<T: fiu32, C: iu32>(@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: C) -> vec4<T>
|
fn textureGather<T: fiu32, C: iu32>(@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: C) -> vec4<T>
|
||||||
|
@ -599,23 +599,23 @@ fn textureGatherCompare<C: iu32>(texture: texture_depth_2d_array, sampler: sampl
|
||||||
fn textureGatherCompare<C: iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: C, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32>
|
fn textureGatherCompare<C: iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: C, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32>
|
||||||
fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32>
|
fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32>
|
||||||
fn textureGatherCompare<C: iu32>(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: C, depth_ref: f32) -> vec4<f32>
|
fn textureGatherCompare<C: iu32>(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: C, depth_ref: f32) -> vec4<f32>
|
||||||
fn textureNumLayers<T: fiu32>(texture: texture_2d_array<T>) -> i32
|
fn textureNumLayers<T: fiu32>(texture: texture_2d_array<T>) -> u32
|
||||||
fn textureNumLayers<T: fiu32>(texture: texture_cube_array<T>) -> i32
|
fn textureNumLayers<T: fiu32>(texture: texture_cube_array<T>) -> u32
|
||||||
fn textureNumLayers(texture: texture_depth_2d_array) -> i32
|
fn textureNumLayers(texture: texture_depth_2d_array) -> u32
|
||||||
fn textureNumLayers(texture: texture_depth_cube_array) -> i32
|
fn textureNumLayers(texture: texture_depth_cube_array) -> u32
|
||||||
fn textureNumLayers<F: texel_format, A: write>(texture: texture_storage_2d_array<F, A>) -> i32
|
fn textureNumLayers<F: texel_format, A: write>(texture: texture_storage_2d_array<F, A>) -> u32
|
||||||
fn textureNumLevels<T: fiu32>(texture: texture_1d<T>) -> i32
|
fn textureNumLevels<T: fiu32>(texture: texture_1d<T>) -> u32
|
||||||
fn textureNumLevels<T: fiu32>(texture: texture_2d<T>) -> i32
|
fn textureNumLevels<T: fiu32>(texture: texture_2d<T>) -> u32
|
||||||
fn textureNumLevels<T: fiu32>(texture: texture_2d_array<T>) -> i32
|
fn textureNumLevels<T: fiu32>(texture: texture_2d_array<T>) -> u32
|
||||||
fn textureNumLevels<T: fiu32>(texture: texture_3d<T>) -> i32
|
fn textureNumLevels<T: fiu32>(texture: texture_3d<T>) -> u32
|
||||||
fn textureNumLevels<T: fiu32>(texture: texture_cube<T>) -> i32
|
fn textureNumLevels<T: fiu32>(texture: texture_cube<T>) -> u32
|
||||||
fn textureNumLevels<T: fiu32>(texture: texture_cube_array<T>) -> i32
|
fn textureNumLevels<T: fiu32>(texture: texture_cube_array<T>) -> u32
|
||||||
fn textureNumLevels(texture: texture_depth_2d) -> i32
|
fn textureNumLevels(texture: texture_depth_2d) -> u32
|
||||||
fn textureNumLevels(texture: texture_depth_2d_array) -> i32
|
fn textureNumLevels(texture: texture_depth_2d_array) -> u32
|
||||||
fn textureNumLevels(texture: texture_depth_cube) -> i32
|
fn textureNumLevels(texture: texture_depth_cube) -> u32
|
||||||
fn textureNumLevels(texture: texture_depth_cube_array) -> i32
|
fn textureNumLevels(texture: texture_depth_cube_array) -> u32
|
||||||
fn textureNumSamples<T: fiu32>(texture: texture_multisampled_2d<T>) -> i32
|
fn textureNumSamples<T: fiu32>(texture: texture_multisampled_2d<T>) -> u32
|
||||||
fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32
|
fn textureNumSamples(texture: texture_depth_multisampled_2d) -> u32
|
||||||
@stage("fragment") fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32>
|
@stage("fragment") fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32>
|
||||||
@stage("fragment") fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
|
@stage("fragment") fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
|
||||||
@stage("fragment") fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32>
|
@stage("fragment") fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32>
|
||||||
|
|
|
@ -5709,7 +5709,7 @@ bool FunctionEmitter::EmitImageQuery(const spvtools::opt::Instruction& inst) {
|
||||||
Source{}, builder_.Symbols().Register("textureDimensions"));
|
Source{}, builder_.Symbols().Register("textureDimensions"));
|
||||||
ExpressionList dims_args{GetImageExpression(inst)};
|
ExpressionList dims_args{GetImageExpression(inst)};
|
||||||
if (opcode == SpvOpImageQuerySizeLod) {
|
if (opcode == SpvOpImageQuerySizeLod) {
|
||||||
dims_args.Push(ToI32(MakeOperand(inst, 1)).expr);
|
dims_args.Push(MakeOperand(inst, 1).expr);
|
||||||
}
|
}
|
||||||
const ast::Expression* dims_call =
|
const ast::Expression* dims_call =
|
||||||
create<ast::CallExpression>(Source{}, dims_ident, dims_args);
|
create<ast::CallExpression>(Source{}, dims_ident, dims_args);
|
||||||
|
@ -5724,18 +5724,29 @@ bool FunctionEmitter::EmitImageQuery(const spvtools::opt::Instruction& inst) {
|
||||||
if (ast::IsTextureArray(dims)) {
|
if (ast::IsTextureArray(dims)) {
|
||||||
auto* layers_ident = create<ast::IdentifierExpression>(
|
auto* layers_ident = create<ast::IdentifierExpression>(
|
||||||
Source{}, builder_.Symbols().Register("textureNumLayers"));
|
Source{}, builder_.Symbols().Register("textureNumLayers"));
|
||||||
exprs.Push(create<ast::CallExpression>(Source{}, layers_ident,
|
auto num_layers = create<ast::CallExpression>(
|
||||||
utils::Vector{GetImageExpression(inst)}));
|
Source{}, layers_ident, utils::Vector{GetImageExpression(inst)});
|
||||||
|
exprs.Push(num_layers);
|
||||||
}
|
}
|
||||||
auto* result_type = parser_impl_.ConvertType(inst.type_id());
|
auto* result_type = parser_impl_.ConvertType(inst.type_id());
|
||||||
|
auto* unsigned_type = ty_.AsUnsigned(result_type);
|
||||||
TypedExpression expr = {
|
TypedExpression expr = {
|
||||||
result_type,
|
unsigned_type,
|
||||||
builder_.Construct(Source{}, result_type->Build(builder_), std::move(exprs))};
|
// If `exprs` holds multiple expressions, then these are the calls to
|
||||||
|
// textureDimensions() and textureNumLayers(), and these need to be placed into a
|
||||||
|
// vector initializer - otherwise, just emit the single expression to omit an
|
||||||
|
// unnecessary cast.
|
||||||
|
(exprs.Length() > 1)
|
||||||
|
? builder_.Construct(Source{}, unsigned_type->Build(builder_), std::move(exprs))
|
||||||
|
: exprs[0],
|
||||||
|
};
|
||||||
|
|
||||||
|
expr = ToSignedIfUnsigned(expr);
|
||||||
|
|
||||||
return EmitConstDefOrWriteToHoistedVar(inst, expr);
|
return EmitConstDefOrWriteToHoistedVar(inst, expr);
|
||||||
}
|
}
|
||||||
case SpvOpImageQueryLod:
|
case SpvOpImageQueryLod:
|
||||||
return Fail() << "WGSL does not support querying the level of detail of "
|
return Fail() << "WGSL does not support querying the level of detail of an image: "
|
||||||
"an image: "
|
|
||||||
<< inst.PrettyPrint();
|
<< inst.PrettyPrint();
|
||||||
case SpvOpImageQueryLevels:
|
case SpvOpImageQueryLevels:
|
||||||
case SpvOpImageQuerySamples: {
|
case SpvOpImageQuerySamples: {
|
||||||
|
@ -5746,9 +5757,10 @@ bool FunctionEmitter::EmitImageQuery(const spvtools::opt::Instruction& inst) {
|
||||||
const ast::Expression* ast_expr = create<ast::CallExpression>(
|
const ast::Expression* ast_expr = create<ast::CallExpression>(
|
||||||
Source{}, levels_ident, utils::Vector{GetImageExpression(inst)});
|
Source{}, levels_ident, utils::Vector{GetImageExpression(inst)});
|
||||||
auto* result_type = parser_impl_.ConvertType(inst.type_id());
|
auto* result_type = parser_impl_.ConvertType(inst.type_id());
|
||||||
// The SPIR-V result type must be integer scalar. The WGSL bulitin
|
// The SPIR-V result type must be integer scalar.
|
||||||
// returns i32. If they aren't the same then convert the result.
|
// The WGSL bulitin returns u32.
|
||||||
if (!result_type->Is<I32>()) {
|
// If they aren't the same then convert the result.
|
||||||
|
if (!result_type->Is<U32>()) {
|
||||||
ast_expr = builder_.Construct(Source{}, result_type->Build(builder_),
|
ast_expr = builder_.Construct(Source{}, result_type->Build(builder_),
|
||||||
utils::Vector{ast_expr});
|
utils::Vector{ast_expr});
|
||||||
}
|
}
|
||||||
|
|
|
@ -956,17 +956,15 @@ class FunctionEmitter {
|
||||||
ExpressionList MakeCoordinateOperandsForImageAccess(
|
ExpressionList MakeCoordinateOperandsForImageAccess(
|
||||||
const spvtools::opt::Instruction& image_access);
|
const spvtools::opt::Instruction& image_access);
|
||||||
|
|
||||||
/// Returns the given value as an I32. If it's already an I32 then this
|
/// Returns the given value as an i32. If it's already an i32 then simply returns @p value.
|
||||||
/// return the given value. Otherwise, wrap the value in a TypeInitializer
|
/// Otherwise, wrap the value in a TypeInitializer expression.
|
||||||
/// expression.
|
|
||||||
/// @param value the value to pass through or convert
|
/// @param value the value to pass through or convert
|
||||||
/// @returns the value as an I32 value.
|
/// @returns the value as an i32 value.
|
||||||
TypedExpression ToI32(TypedExpression value);
|
TypedExpression ToI32(TypedExpression value);
|
||||||
|
|
||||||
/// Returns the given value as a signed integer type of the same shape
|
/// Returns the given value as a signed integer type of the same shape if the value is unsigned
|
||||||
/// if the value is unsigned scalar or vector, by wrapping the value
|
/// scalar or vector, by wrapping the value with a TypeInitializer expression. Returns the
|
||||||
/// with a TypeInitializer expression. Returns the value itself if the
|
/// value itself if the value was already signed.
|
||||||
/// value otherwise.
|
|
||||||
/// @param value the value to pass through or convert
|
/// @param value the value to pass through or convert
|
||||||
/// @returns the value itself, or converted to signed integral
|
/// @returns the value itself, or converted to signed integral
|
||||||
TypedExpression ToSignedIfUnsigned(TypedExpression value);
|
TypedExpression ToSignedIfUnsigned(TypedExpression value);
|
||||||
|
|
|
@ -2842,7 +2842,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
"%99 = OpImageQuerySize %v3int %im \n"
|
"%99 = OpImageQuerySize %v3int %im \n"
|
||||||
"%98 = OpImageRead %v4float %im %vi123\n",
|
"%98 = OpImageRead %v4float %im %vi123\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
|
||||||
R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20), textureNumLayers(x_20));)"}
|
R"(let x_99 : vec3<i32> = vec3<i32>(vec3<u32>(textureDimensions(x_20), textureNumLayers(x_20)));)"}
|
||||||
// 3D array storage image doesn't exist.
|
// 3D array storage image doesn't exist.
|
||||||
|
|
||||||
// Multisampled array
|
// Multisampled array
|
||||||
|
@ -2898,7 +2898,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
// 2D array
|
// 2D array
|
||||||
{"%float 2D 0 1 0 1 Unknown", "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
|
{"%float 2D 0 1 0 1 Unknown", "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
|
||||||
R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1), textureNumLayers(x_20));)"},
|
R"(let x_99 : vec3<i32> = vec3<i32>(vec3<u32>(textureDimensions(x_20, i1), textureNumLayers(x_20)));)"},
|
||||||
|
|
||||||
// There is no 3D array
|
// There is no 3D array
|
||||||
|
|
||||||
|
@ -2909,12 +2909,12 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
// https://github.com/gpuweb/gpuweb/issues/1345
|
// https://github.com/gpuweb/gpuweb/issues/1345
|
||||||
{"%float Cube 0 1 0 1 Unknown", "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
|
{"%float Cube 0 1 0 1 Unknown", "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_cube_array<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_cube_array<f32>;)",
|
||||||
R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1).xy, textureNumLayers(x_20));)"},
|
R"(let x_99 : vec3<i32> = vec3<i32>(vec3<u32>(textureDimensions(x_20, i1).xy, textureNumLayers(x_20)));)"},
|
||||||
|
|
||||||
// Depth 2D array
|
// Depth 2D array
|
||||||
{"%float 2D 1 1 0 1 Unknown", "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
|
{"%float 2D 1 1 0 1 Unknown", "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
|
R"(@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
|
||||||
R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1), textureNumLayers(x_20));)"},
|
R"(let x_99 : vec3<i32> = vec3<i32>(vec3<u32>(textureDimensions(x_20, i1), textureNumLayers(x_20)));)"},
|
||||||
|
|
||||||
// Depth Cube Array
|
// Depth Cube Array
|
||||||
//
|
//
|
||||||
|
@ -2923,19 +2923,17 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
// https://github.com/gpuweb/gpuweb/issues/1345
|
// https://github.com/gpuweb/gpuweb/issues/1345
|
||||||
{"%float Cube 1 1 0 1 Unknown", "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
|
{"%float Cube 1 1 0 1 Unknown", "%99 = OpImageQuerySizeLod %v3int %im %i1\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
|
R"(@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
|
||||||
R"(let x_99 : vec3<i32> = vec3<i32>(textureDimensions(x_20, i1).xy, textureNumLayers(x_20));)"}}));
|
R"(let x_99 : vec3<i32> = vec3<i32>(vec3<u32>(textureDimensions(x_20, i1).xy, textureNumLayers(x_20)));)"}}));
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
// When the level-of-detail value is given as an unsigned
|
// textureDimensions accepts both signed and unsigned the level-of-detail values.
|
||||||
// integer, we must convert it before using it as an argument
|
|
||||||
// to textureDimensions.
|
|
||||||
ImageQuerySizeLod_NonArrayed_SignedResult_UnsignedLevel,
|
ImageQuerySizeLod_NonArrayed_SignedResult_UnsignedLevel,
|
||||||
SpvParserHandleTest_SampledImageAccessTest,
|
SpvParserHandleTest_SampledImageAccessTest,
|
||||||
::testing::ValuesIn(std::vector<ImageAccessCase>{
|
::testing::ValuesIn(std::vector<ImageAccessCase>{
|
||||||
|
|
||||||
{"%float 1D 0 0 0 1 Unknown", "%99 = OpImageQuerySizeLod %int %im %u1\n",
|
{"%float 1D 0 0 0 1 Unknown", "%99 = OpImageQuerySizeLod %int %im %u1\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
|
||||||
R"(let x_99 : i32 = i32(textureDimensions(x_20, i32(u1)));)"}}));
|
R"(let x_99 : i32 = i32(textureDimensions(x_20, u1));)"}}));
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
// When SPIR-V wants the result type to be unsigned, we have to
|
// When SPIR-V wants the result type to be unsigned, we have to
|
||||||
|
@ -2948,7 +2946,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
|
|
||||||
{"%float 1D 0 0 0 1 Unknown", "%99 = OpImageQuerySizeLod %uint %im %i1\n",
|
{"%float 1D 0 0 0 1 Unknown", "%99 = OpImageQuerySizeLod %uint %im %i1\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_1d<f32>;)",
|
||||||
R"(let x_99 : u32 = u32(textureDimensions(x_20, i1));)"}}));
|
R"(let x_99 : i32 = i32(textureDimensions(x_20, i1));)"}}));
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(ImageQueryLevels_SignedResult,
|
INSTANTIATE_TEST_SUITE_P(ImageQueryLevels_SignedResult,
|
||||||
SpvParserHandleTest_SampledImageAccessTest,
|
SpvParserHandleTest_SampledImageAccessTest,
|
||||||
|
@ -2961,47 +2959,47 @@ INSTANTIATE_TEST_SUITE_P(ImageQueryLevels_SignedResult,
|
||||||
// 2D
|
// 2D
|
||||||
{"%float 2D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float 2D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"},
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"},
|
||||||
|
|
||||||
// 2D array
|
// 2D array
|
||||||
{"%float 2D 0 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float 2D 0 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_2d_array<f32>;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"},
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"},
|
||||||
|
|
||||||
// 3D
|
// 3D
|
||||||
{"%float 3D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float 3D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_3d<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_3d<f32>;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"},
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"},
|
||||||
|
|
||||||
// Cube
|
// Cube
|
||||||
{"%float Cube 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float Cube 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_cube<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_cube<f32>;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"},
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"},
|
||||||
|
|
||||||
// Cube array
|
// Cube array
|
||||||
{"%float Cube 0 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float Cube 0 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_cube_array<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_cube_array<f32>;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"},
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"},
|
||||||
|
|
||||||
// depth 2d
|
// depth 2d
|
||||||
{"%float 2D 1 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float 2D 1 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_depth_2d;)",
|
R"(@group(2) @binding(1) var x_20 : texture_depth_2d;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"},
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"},
|
||||||
|
|
||||||
// depth 2d array
|
// depth 2d array
|
||||||
{"%float 2D 1 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float 2D 1 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
|
R"(@group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"},
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"},
|
||||||
|
|
||||||
// depth cube
|
// depth cube
|
||||||
{"%float Cube 1 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float Cube 1 0 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_depth_cube;)",
|
R"(@group(2) @binding(1) var x_20 : texture_depth_cube;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"},
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"},
|
||||||
|
|
||||||
// depth cube array
|
// depth cube array
|
||||||
{"%float Cube 1 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
{"%float Cube 1 1 0 1 Unknown", "%99 = OpImageQueryLevels %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
|
R"(@group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
|
||||||
R"(let x_99 : i32 = textureNumLevels(x_20);)"}}));
|
R"(let x_99 : i32 = i32(textureNumLevels(x_20));)"}}));
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
// Spot check that a type conversion is inserted when SPIR-V asks for
|
// Spot check that a type conversion is inserted when SPIR-V asks for
|
||||||
|
@ -3011,7 +3009,7 @@ INSTANTIATE_TEST_SUITE_P(
|
||||||
::testing::ValuesIn(std::vector<ImageAccessCase>{
|
::testing::ValuesIn(std::vector<ImageAccessCase>{
|
||||||
{"%float 2D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %uint %im\n",
|
{"%float 2D 0 0 0 1 Unknown", "%99 = OpImageQueryLevels %uint %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_2d<f32>;)",
|
||||||
R"(let x_99 : u32 = u32(textureNumLevels(x_20));)"}}));
|
R"(let x_99 : u32 = textureNumLevels(x_20);)"}}));
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(ImageQuerySamples_SignedResult,
|
INSTANTIATE_TEST_SUITE_P(ImageQuerySamples_SignedResult,
|
||||||
SpvParserHandleTest_SampledImageAccessTest,
|
SpvParserHandleTest_SampledImageAccessTest,
|
||||||
|
@ -3019,21 +3017,21 @@ INSTANTIATE_TEST_SUITE_P(ImageQuerySamples_SignedResult,
|
||||||
// Multsample 2D
|
// Multsample 2D
|
||||||
{"%float 2D 0 0 1 1 Unknown", "%99 = OpImageQuerySamples %int %im\n",
|
{"%float 2D 0 0 1 1 Unknown", "%99 = OpImageQuerySamples %int %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
|
||||||
R"(let x_99 : i32 = textureNumSamples(x_20);)"} // namespace
|
R"(let x_99 : i32 = i32(textureNumSamples(x_20));)"}
|
||||||
|
|
||||||
// Multisample 2D array
|
// Multisample 2D array
|
||||||
// Not in WebGPU
|
// Not in WebGPU
|
||||||
}));
|
}));
|
||||||
|
|
||||||
INSTANTIATE_TEST_SUITE_P(
|
INSTANTIATE_TEST_SUITE_P(
|
||||||
// Translation must inject a type coersion from signed to unsigned.
|
// Translation must inject a type coersion from unsigned to signed.
|
||||||
ImageQuerySamples_UnsignedResult,
|
ImageQuerySamples_UnsignedResult,
|
||||||
SpvParserHandleTest_SampledImageAccessTest,
|
SpvParserHandleTest_SampledImageAccessTest,
|
||||||
::testing::ValuesIn(std::vector<ImageAccessCase>{
|
::testing::ValuesIn(std::vector<ImageAccessCase>{
|
||||||
// Multsample 2D
|
// Multisample 2D
|
||||||
{"%float 2D 0 0 1 1 Unknown", "%99 = OpImageQuerySamples %uint %im\n",
|
{"%float 2D 0 0 1 1 Unknown", "%99 = OpImageQuerySamples %uint %im\n",
|
||||||
R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
|
R"(@group(2) @binding(1) var x_20 : texture_multisampled_2d<f32>;)",
|
||||||
R"(let x_99 : u32 = u32(textureNumSamples(x_20));)"}
|
R"(let x_99 : u32 = textureNumSamples(x_20);)"}
|
||||||
|
|
||||||
// Multisample 2D array
|
// Multisample 2D array
|
||||||
// Not in WebGPU
|
// Not in WebGPU
|
||||||
|
|
|
@ -444,6 +444,20 @@ const spirv::I32* TypeManager::I32() {
|
||||||
return state->i32_;
|
return state->i32_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Type* TypeManager::AsUnsigned(const Type* ty) {
|
||||||
|
return Switch(
|
||||||
|
ty, //
|
||||||
|
[&](const spirv::I32*) { return U32(); }, //
|
||||||
|
[&](const spirv::U32*) { return ty; }, //
|
||||||
|
[&](const spirv::Vector* vec) {
|
||||||
|
return Switch(
|
||||||
|
vec->type, //
|
||||||
|
[&](const spirv::I32*) { return Vector(U32(), vec->size); }, //
|
||||||
|
[&](const spirv::U32*) { return ty; } //
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const spirv::Pointer* TypeManager::Pointer(const Type* el,
|
const spirv::Pointer* TypeManager::Pointer(const Type* el,
|
||||||
ast::AddressSpace address_space,
|
ast::AddressSpace address_space,
|
||||||
ast::Access access) {
|
ast::Access access) {
|
||||||
|
|
|
@ -539,6 +539,11 @@ class TypeManager {
|
||||||
const spirv::F32* F32();
|
const spirv::F32* F32();
|
||||||
/// @return a I32 type. Repeated calls will return the same pointer.
|
/// @return a I32 type. Repeated calls will return the same pointer.
|
||||||
const spirv::I32* I32();
|
const spirv::I32* I32();
|
||||||
|
/// @param ty the input type.
|
||||||
|
/// @returns the equivalent unsigned integer scalar or vector if @p ty is a scalar or vector,
|
||||||
|
/// otherwise nullptr.
|
||||||
|
const Type* AsUnsigned(const Type* ty);
|
||||||
|
|
||||||
/// @param ty the store type
|
/// @param ty the store type
|
||||||
/// @param address_space the pointer address space
|
/// @param address_space the pointer address space
|
||||||
/// @param access the declared access mode
|
/// @param access the declared access mode
|
||||||
|
|
|
@ -2416,17 +2416,17 @@ static const char* expected_texture_overload(ast::builtin::test::ValidTextureOve
|
||||||
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
|
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
|
||||||
return R"(textureSampleCompare(texture, sampler, coords, array_index, depth_ref))";
|
return R"(textureSampleCompare(texture, sampler, coords, array_index, depth_ref))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dF32:
|
||||||
return R"(textureSampleCompare(texture, sampler, coords, depth_ref))";
|
return R"(textureSampleCompareLevel(texture, sampler, coords, depth_ref))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
||||||
return R"(textureSampleCompare(texture, sampler, coords, depth_ref, offset))";
|
return R"(textureSampleCompareLevel(texture, sampler, coords, depth_ref, offset))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
||||||
return R"(textureSampleCompare(texture, sampler, coords, array_index, depth_ref))";
|
return R"(textureSampleCompareLevel(texture, sampler, coords, array_index, depth_ref))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
||||||
return R"(textureSampleCompare(texture, sampler, coords, array_index, depth_ref, offset))";
|
return R"(textureSampleCompareLevel(texture, sampler, coords, array_index, depth_ref, offset))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
||||||
return R"(textureSampleCompare(texture, sampler, coords, depth_ref))";
|
return R"(textureSampleCompareLevel(texture, sampler, coords, depth_ref))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
||||||
return R"(textureSampleCompare(texture, sampler, coords, array_index, depth_ref))";
|
return R"(textureSampleCompareLevel(texture, sampler, coords, array_index, depth_ref))";
|
||||||
case ValidTextureOverload::kLoad1dLevelF32:
|
case ValidTextureOverload::kLoad1dLevelF32:
|
||||||
case ValidTextureOverload::kLoad1dLevelU32:
|
case ValidTextureOverload::kLoad1dLevelU32:
|
||||||
case ValidTextureOverload::kLoad1dLevelI32:
|
case ValidTextureOverload::kLoad1dLevelI32:
|
||||||
|
@ -2478,7 +2478,7 @@ TEST_P(ResolverBuiltinTest_Texture, Call) {
|
||||||
default:
|
default:
|
||||||
FAIL() << "invalid texture dimensions: " << param.texture_dimension;
|
FAIL() << "invalid texture dimensions: " << param.texture_dimension;
|
||||||
case ast::TextureDimension::k1d:
|
case ast::TextureDimension::k1d:
|
||||||
EXPECT_TRUE(TypeOf(call)->Is<sem::I32>());
|
EXPECT_TRUE(TypeOf(call)->Is<sem::U32>());
|
||||||
break;
|
break;
|
||||||
case ast::TextureDimension::k2d:
|
case ast::TextureDimension::k2d:
|
||||||
case ast::TextureDimension::k2dArray:
|
case ast::TextureDimension::k2dArray:
|
||||||
|
@ -2487,23 +2487,23 @@ TEST_P(ResolverBuiltinTest_Texture, Call) {
|
||||||
auto* vec = As<sem::Vector>(TypeOf(call));
|
auto* vec = As<sem::Vector>(TypeOf(call));
|
||||||
ASSERT_NE(vec, nullptr);
|
ASSERT_NE(vec, nullptr);
|
||||||
EXPECT_EQ(vec->Width(), 2u);
|
EXPECT_EQ(vec->Width(), 2u);
|
||||||
EXPECT_TRUE(vec->type()->Is<sem::I32>());
|
EXPECT_TRUE(vec->type()->Is<sem::U32>());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ast::TextureDimension::k3d: {
|
case ast::TextureDimension::k3d: {
|
||||||
auto* vec = As<sem::Vector>(TypeOf(call));
|
auto* vec = As<sem::Vector>(TypeOf(call));
|
||||||
ASSERT_NE(vec, nullptr);
|
ASSERT_NE(vec, nullptr);
|
||||||
EXPECT_EQ(vec->Width(), 3u);
|
EXPECT_EQ(vec->Width(), 3u);
|
||||||
EXPECT_TRUE(vec->type()->Is<sem::I32>());
|
EXPECT_TRUE(vec->type()->Is<sem::U32>());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (std::string(param.function) == "textureNumLayers") {
|
} else if (std::string(param.function) == "textureNumLayers") {
|
||||||
EXPECT_TRUE(TypeOf(call)->Is<sem::I32>());
|
EXPECT_TRUE(TypeOf(call)->Is<sem::U32>());
|
||||||
} else if (std::string(param.function) == "textureNumLevels") {
|
} else if (std::string(param.function) == "textureNumLevels") {
|
||||||
EXPECT_TRUE(TypeOf(call)->Is<sem::I32>());
|
EXPECT_TRUE(TypeOf(call)->Is<sem::U32>());
|
||||||
} else if (std::string(param.function) == "textureNumSamples") {
|
} else if (std::string(param.function) == "textureNumSamples") {
|
||||||
EXPECT_TRUE(TypeOf(call)->Is<sem::I32>());
|
EXPECT_TRUE(TypeOf(call)->Is<sem::U32>());
|
||||||
} else if (std::string(param.function) == "textureStore") {
|
} else if (std::string(param.function) == "textureStore") {
|
||||||
EXPECT_TRUE(TypeOf(call)->Is<sem::Void>());
|
EXPECT_TRUE(TypeOf(call)->Is<sem::Void>());
|
||||||
} else if (std::string(param.function) == "textureGather") {
|
} else if (std::string(param.function) == "textureGather") {
|
||||||
|
|
|
@ -8276,7 +8276,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[839],
|
/* parameters */ &kParameters[839],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8288,7 +8288,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[623],
|
/* parameters */ &kParameters[623],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8300,7 +8300,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[838],
|
/* parameters */ &kParameters[838],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8312,7 +8312,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[627],
|
/* parameters */ &kParameters[627],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8324,7 +8324,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[837],
|
/* parameters */ &kParameters[837],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8336,7 +8336,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[631],
|
/* parameters */ &kParameters[631],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8348,7 +8348,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[836],
|
/* parameters */ &kParameters[836],
|
||||||
/* return matcher indices */ &kMatcherIndices[108],
|
/* return matcher indices */ &kMatcherIndices[114],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8360,7 +8360,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[635],
|
/* parameters */ &kParameters[635],
|
||||||
/* return matcher indices */ &kMatcherIndices[108],
|
/* return matcher indices */ &kMatcherIndices[114],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8372,7 +8372,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[835],
|
/* parameters */ &kParameters[835],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8384,7 +8384,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[639],
|
/* parameters */ &kParameters[639],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8396,7 +8396,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[834],
|
/* parameters */ &kParameters[834],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8408,7 +8408,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[643],
|
/* parameters */ &kParameters[643],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8420,7 +8420,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[833],
|
/* parameters */ &kParameters[833],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8432,7 +8432,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[832],
|
/* parameters */ &kParameters[832],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8444,7 +8444,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[1],
|
/* template types */ &kTemplateTypes[1],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[687],
|
/* parameters */ &kParameters[687],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8456,7 +8456,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[831],
|
/* parameters */ &kParameters[831],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8468,7 +8468,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[1],
|
/* template types */ &kTemplateTypes[1],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[653],
|
/* parameters */ &kParameters[653],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8480,7 +8480,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[830],
|
/* parameters */ &kParameters[830],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8492,7 +8492,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[1],
|
/* template types */ &kTemplateTypes[1],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[657],
|
/* parameters */ &kParameters[657],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8504,7 +8504,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[829],
|
/* parameters */ &kParameters[829],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8516,7 +8516,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[1],
|
/* template types */ &kTemplateTypes[1],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[605],
|
/* parameters */ &kParameters[605],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8528,7 +8528,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[828],
|
/* parameters */ &kParameters[828],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8540,7 +8540,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[3],
|
/* template numbers */ &kTemplateNumbers[3],
|
||||||
/* parameters */ &kParameters[827],
|
/* parameters */ &kParameters[827],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8552,7 +8552,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[3],
|
/* template numbers */ &kTemplateNumbers[3],
|
||||||
/* parameters */ &kParameters[826],
|
/* parameters */ &kParameters[826],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8564,7 +8564,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[3],
|
/* template numbers */ &kTemplateNumbers[3],
|
||||||
/* parameters */ &kParameters[825],
|
/* parameters */ &kParameters[825],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8576,7 +8576,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[3],
|
/* template numbers */ &kTemplateNumbers[3],
|
||||||
/* parameters */ &kParameters[824],
|
/* parameters */ &kParameters[824],
|
||||||
/* return matcher indices */ &kMatcherIndices[108],
|
/* return matcher indices */ &kMatcherIndices[114],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -8588,7 +8588,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[823],
|
/* parameters */ &kParameters[823],
|
||||||
/* return matcher indices */ &kMatcherIndices[126],
|
/* return matcher indices */ &kMatcherIndices[124],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9560,7 +9560,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[817],
|
/* parameters */ &kParameters[817],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9572,7 +9572,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[816],
|
/* parameters */ &kParameters[816],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9584,7 +9584,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[815],
|
/* parameters */ &kParameters[815],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9596,7 +9596,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[814],
|
/* parameters */ &kParameters[814],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9608,7 +9608,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[813],
|
/* parameters */ &kParameters[813],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9620,7 +9620,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[812],
|
/* parameters */ &kParameters[812],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9632,7 +9632,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[811],
|
/* parameters */ &kParameters[811],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9644,7 +9644,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[810],
|
/* parameters */ &kParameters[810],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9656,7 +9656,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[809],
|
/* parameters */ &kParameters[809],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -9668,7 +9668,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[808],
|
/* parameters */ &kParameters[808],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -11180,7 +11180,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[822],
|
/* parameters */ &kParameters[822],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -11192,7 +11192,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[821],
|
/* parameters */ &kParameters[821],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -11204,7 +11204,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[820],
|
/* parameters */ &kParameters[820],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -11216,7 +11216,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[819],
|
/* parameters */ &kParameters[819],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -11228,7 +11228,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[3],
|
/* template numbers */ &kTemplateNumbers[3],
|
||||||
/* parameters */ &kParameters[818],
|
/* parameters */ &kParameters[818],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -12932,7 +12932,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[0],
|
/* template types */ &kTemplateTypes[0],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[988],
|
/* parameters */ &kParameters[988],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -12944,7 +12944,7 @@ constexpr OverloadInfo kOverloads[] = {
|
||||||
/* template types */ &kTemplateTypes[28],
|
/* template types */ &kTemplateTypes[28],
|
||||||
/* template numbers */ &kTemplateNumbers[10],
|
/* template numbers */ &kTemplateNumbers[10],
|
||||||
/* parameters */ &kParameters[807],
|
/* parameters */ &kParameters[807],
|
||||||
/* return matcher indices */ &kMatcherIndices[34],
|
/* return matcher indices */ &kMatcherIndices[35],
|
||||||
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
|
||||||
/* const eval */ nullptr,
|
/* const eval */ nullptr,
|
||||||
},
|
},
|
||||||
|
@ -14499,33 +14499,33 @@ constexpr IntrinsicInfo kBuiltins[] = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* [85] */
|
/* [85] */
|
||||||
/* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> i32 */
|
/* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> u32 */
|
||||||
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_1d<T>, level: C) -> i32 */
|
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_1d<T>, level: C) -> u32 */
|
||||||
/* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<u32> */
|
||||||
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_2d<T>, level: C) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_2d<T>, level: C) -> vec2<u32> */
|
||||||
/* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>) -> vec2<u32> */
|
||||||
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_2d_array<T>, level: C) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_2d_array<T>, level: C) -> vec2<u32> */
|
||||||
/* fn textureDimensions<T : fiu32>(texture: texture_3d<T>) -> vec3<i32> */
|
/* fn textureDimensions<T : fiu32>(texture: texture_3d<T>) -> vec3<u32> */
|
||||||
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_3d<T>, level: C) -> vec3<i32> */
|
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_3d<T>, level: C) -> vec3<u32> */
|
||||||
/* fn textureDimensions<T : fiu32>(texture: texture_cube<T>) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32>(texture: texture_cube<T>) -> vec2<u32> */
|
||||||
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_cube<T>, level: C) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_cube<T>, level: C) -> vec2<u32> */
|
||||||
/* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>) -> vec2<u32> */
|
||||||
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_cube_array<T>, level: C) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32, C : iu32>(texture: texture_cube_array<T>, level: C) -> vec2<u32> */
|
||||||
/* fn textureDimensions<T : fiu32>(texture: texture_multisampled_2d<T>) -> vec2<i32> */
|
/* fn textureDimensions<T : fiu32>(texture: texture_multisampled_2d<T>) -> vec2<u32> */
|
||||||
/* fn textureDimensions(texture: texture_depth_2d) -> vec2<i32> */
|
/* fn textureDimensions(texture: texture_depth_2d) -> vec2<u32> */
|
||||||
/* fn textureDimensions<C : iu32>(texture: texture_depth_2d, level: C) -> vec2<i32> */
|
/* fn textureDimensions<C : iu32>(texture: texture_depth_2d, level: C) -> vec2<u32> */
|
||||||
/* fn textureDimensions(texture: texture_depth_2d_array) -> vec2<i32> */
|
/* fn textureDimensions(texture: texture_depth_2d_array) -> vec2<u32> */
|
||||||
/* fn textureDimensions<C : iu32>(texture: texture_depth_2d_array, level: C) -> vec2<i32> */
|
/* fn textureDimensions<C : iu32>(texture: texture_depth_2d_array, level: C) -> vec2<u32> */
|
||||||
/* fn textureDimensions(texture: texture_depth_cube) -> vec2<i32> */
|
/* fn textureDimensions(texture: texture_depth_cube) -> vec2<u32> */
|
||||||
/* fn textureDimensions<C : iu32>(texture: texture_depth_cube, level: C) -> vec2<i32> */
|
/* fn textureDimensions<C : iu32>(texture: texture_depth_cube, level: C) -> vec2<u32> */
|
||||||
/* fn textureDimensions(texture: texture_depth_cube_array) -> vec2<i32> */
|
/* fn textureDimensions(texture: texture_depth_cube_array) -> vec2<u32> */
|
||||||
/* fn textureDimensions<C : iu32>(texture: texture_depth_cube_array, level: C) -> vec2<i32> */
|
/* fn textureDimensions<C : iu32>(texture: texture_depth_cube_array, level: C) -> vec2<u32> */
|
||||||
/* fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<i32> */
|
/* fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32> */
|
||||||
/* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_1d<F, A>) -> i32 */
|
/* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_1d<F, A>) -> u32 */
|
||||||
/* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_2d<F, A>) -> vec2<i32> */
|
/* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_2d<F, A>) -> vec2<u32> */
|
||||||
/* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_2d_array<F, A>) -> vec2<i32> */
|
/* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_2d_array<F, A>) -> vec2<u32> */
|
||||||
/* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_3d<F, A>) -> vec3<i32> */
|
/* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_3d<F, A>) -> vec3<u32> */
|
||||||
/* fn textureDimensions(texture: texture_external) -> vec2<i32> */
|
/* fn textureDimensions(texture: texture_external) -> vec2<u32> */
|
||||||
/* num overloads */ 27,
|
/* num overloads */ 27,
|
||||||
/* overloads */ &kOverloads[0],
|
/* overloads */ &kOverloads[0],
|
||||||
},
|
},
|
||||||
|
@ -14559,33 +14559,33 @@ constexpr IntrinsicInfo kBuiltins[] = {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* [88] */
|
/* [88] */
|
||||||
/* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> i32 */
|
/* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> u32 */
|
||||||
/* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> i32 */
|
/* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> u32 */
|
||||||
/* fn textureNumLayers(texture: texture_depth_2d_array) -> i32 */
|
/* fn textureNumLayers(texture: texture_depth_2d_array) -> u32 */
|
||||||
/* fn textureNumLayers(texture: texture_depth_cube_array) -> i32 */
|
/* fn textureNumLayers(texture: texture_depth_cube_array) -> u32 */
|
||||||
/* fn textureNumLayers<F : texel_format, A : write>(texture: texture_storage_2d_array<F, A>) -> i32 */
|
/* fn textureNumLayers<F : texel_format, A : write>(texture: texture_storage_2d_array<F, A>) -> u32 */
|
||||||
/* num overloads */ 5,
|
/* num overloads */ 5,
|
||||||
/* overloads */ &kOverloads[242],
|
/* overloads */ &kOverloads[242],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* [89] */
|
/* [89] */
|
||||||
/* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> i32 */
|
/* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> u32 */
|
||||||
/* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> i32 */
|
/* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> u32 */
|
||||||
/* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> i32 */
|
/* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> u32 */
|
||||||
/* fn textureNumLevels<T : fiu32>(texture: texture_3d<T>) -> i32 */
|
/* fn textureNumLevels<T : fiu32>(texture: texture_3d<T>) -> u32 */
|
||||||
/* fn textureNumLevels<T : fiu32>(texture: texture_cube<T>) -> i32 */
|
/* fn textureNumLevels<T : fiu32>(texture: texture_cube<T>) -> u32 */
|
||||||
/* fn textureNumLevels<T : fiu32>(texture: texture_cube_array<T>) -> i32 */
|
/* fn textureNumLevels<T : fiu32>(texture: texture_cube_array<T>) -> u32 */
|
||||||
/* fn textureNumLevels(texture: texture_depth_2d) -> i32 */
|
/* fn textureNumLevels(texture: texture_depth_2d) -> u32 */
|
||||||
/* fn textureNumLevels(texture: texture_depth_2d_array) -> i32 */
|
/* fn textureNumLevels(texture: texture_depth_2d_array) -> u32 */
|
||||||
/* fn textureNumLevels(texture: texture_depth_cube) -> i32 */
|
/* fn textureNumLevels(texture: texture_depth_cube) -> u32 */
|
||||||
/* fn textureNumLevels(texture: texture_depth_cube_array) -> i32 */
|
/* fn textureNumLevels(texture: texture_depth_cube_array) -> u32 */
|
||||||
/* num overloads */ 10,
|
/* num overloads */ 10,
|
||||||
/* overloads */ &kOverloads[107],
|
/* overloads */ &kOverloads[107],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* [90] */
|
/* [90] */
|
||||||
/* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> i32 */
|
/* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> u32 */
|
||||||
/* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32 */
|
/* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> u32 */
|
||||||
/* num overloads */ 2,
|
/* num overloads */ 2,
|
||||||
/* overloads */ &kOverloads[388],
|
/* overloads */ &kOverloads[388],
|
||||||
},
|
},
|
||||||
|
|
|
@ -596,33 +596,33 @@ TEST_F(IntrinsicTableTest, OverloadOrderByNumberOfParameters) {
|
||||||
R"(error: no matching call to textureDimensions(bool, bool)
|
R"(error: no matching call to textureDimensions(bool, bool)
|
||||||
|
|
||||||
27 candidate functions:
|
27 candidate functions:
|
||||||
textureDimensions(texture: texture_1d<T>, level: C) -> i32 where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_1d<T>, level: C) -> u32 where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_2d<T>, level: C) -> vec2<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_2d<T>, level: C) -> vec2<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_2d_array<T>, level: C) -> vec2<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_2d_array<T>, level: C) -> vec2<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_3d<T>, level: C) -> vec3<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_3d<T>, level: C) -> vec3<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_cube<T>, level: C) -> vec2<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_cube<T>, level: C) -> vec2<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_cube_array<T>, level: C) -> vec2<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_cube_array<T>, level: C) -> vec2<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_depth_2d, level: C) -> vec2<i32> where: C is i32 or u32
|
textureDimensions(texture: texture_depth_2d, level: C) -> vec2<u32> where: C is i32 or u32
|
||||||
textureDimensions(texture: texture_depth_2d_array, level: C) -> vec2<i32> where: C is i32 or u32
|
textureDimensions(texture: texture_depth_2d_array, level: C) -> vec2<u32> where: C is i32 or u32
|
||||||
textureDimensions(texture: texture_depth_cube, level: C) -> vec2<i32> where: C is i32 or u32
|
textureDimensions(texture: texture_depth_cube, level: C) -> vec2<u32> where: C is i32 or u32
|
||||||
textureDimensions(texture: texture_depth_cube_array, level: C) -> vec2<i32> where: C is i32 or u32
|
textureDimensions(texture: texture_depth_cube_array, level: C) -> vec2<u32> where: C is i32 or u32
|
||||||
textureDimensions(texture: texture_1d<T>) -> i32 where: T is f32, i32 or u32
|
textureDimensions(texture: texture_1d<T>) -> u32 where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_2d<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_2d<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_2d_array<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_2d_array<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_3d<T>) -> vec3<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_3d<T>) -> vec3<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_cube<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_cube<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_cube_array<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_cube_array<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_multisampled_2d<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_multisampled_2d<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_depth_2d) -> vec2<i32>
|
textureDimensions(texture: texture_depth_2d) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_depth_2d_array) -> vec2<i32>
|
textureDimensions(texture: texture_depth_2d_array) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_depth_cube) -> vec2<i32>
|
textureDimensions(texture: texture_depth_cube) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_depth_cube_array) -> vec2<i32>
|
textureDimensions(texture: texture_depth_cube_array) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<i32>
|
textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_storage_1d<F, A>) -> i32 where: A is write
|
textureDimensions(texture: texture_storage_1d<F, A>) -> u32 where: A is write
|
||||||
textureDimensions(texture: texture_storage_2d<F, A>) -> vec2<i32> where: A is write
|
textureDimensions(texture: texture_storage_2d<F, A>) -> vec2<u32> where: A is write
|
||||||
textureDimensions(texture: texture_storage_2d_array<F, A>) -> vec2<i32> where: A is write
|
textureDimensions(texture: texture_storage_2d_array<F, A>) -> vec2<u32> where: A is write
|
||||||
textureDimensions(texture: texture_storage_3d<F, A>) -> vec3<i32> where: A is write
|
textureDimensions(texture: texture_storage_3d<F, A>) -> vec3<u32> where: A is write
|
||||||
textureDimensions(texture: texture_external) -> vec2<i32>
|
textureDimensions(texture: texture_external) -> vec2<u32>
|
||||||
)");
|
)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -635,33 +635,33 @@ TEST_F(IntrinsicTableTest, OverloadOrderByMatchingParameter) {
|
||||||
R"(error: no matching call to textureDimensions(texture_depth_2d, bool)
|
R"(error: no matching call to textureDimensions(texture_depth_2d, bool)
|
||||||
|
|
||||||
27 candidate functions:
|
27 candidate functions:
|
||||||
textureDimensions(texture: texture_depth_2d, level: C) -> vec2<i32> where: C is i32 or u32
|
textureDimensions(texture: texture_depth_2d, level: C) -> vec2<u32> where: C is i32 or u32
|
||||||
textureDimensions(texture: texture_1d<T>, level: C) -> i32 where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_1d<T>, level: C) -> u32 where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_2d<T>, level: C) -> vec2<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_2d<T>, level: C) -> vec2<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_2d_array<T>, level: C) -> vec2<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_2d_array<T>, level: C) -> vec2<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_3d<T>, level: C) -> vec3<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_3d<T>, level: C) -> vec3<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_cube<T>, level: C) -> vec2<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_cube<T>, level: C) -> vec2<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_cube_array<T>, level: C) -> vec2<i32> where: T is f32, i32 or u32, C is i32 or u32
|
textureDimensions(texture: texture_cube_array<T>, level: C) -> vec2<u32> where: T is f32, i32 or u32, C is i32 or u32
|
||||||
textureDimensions(texture: texture_depth_2d_array, level: C) -> vec2<i32> where: C is i32 or u32
|
textureDimensions(texture: texture_depth_2d_array, level: C) -> vec2<u32> where: C is i32 or u32
|
||||||
textureDimensions(texture: texture_depth_cube, level: C) -> vec2<i32> where: C is i32 or u32
|
textureDimensions(texture: texture_depth_cube, level: C) -> vec2<u32> where: C is i32 or u32
|
||||||
textureDimensions(texture: texture_depth_cube_array, level: C) -> vec2<i32> where: C is i32 or u32
|
textureDimensions(texture: texture_depth_cube_array, level: C) -> vec2<u32> where: C is i32 or u32
|
||||||
textureDimensions(texture: texture_depth_2d) -> vec2<i32>
|
textureDimensions(texture: texture_depth_2d) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_1d<T>) -> i32 where: T is f32, i32 or u32
|
textureDimensions(texture: texture_1d<T>) -> u32 where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_2d<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_2d<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_2d_array<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_2d_array<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_3d<T>) -> vec3<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_3d<T>) -> vec3<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_cube<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_cube<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_cube_array<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_cube_array<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_multisampled_2d<T>) -> vec2<i32> where: T is f32, i32 or u32
|
textureDimensions(texture: texture_multisampled_2d<T>) -> vec2<u32> where: T is f32, i32 or u32
|
||||||
textureDimensions(texture: texture_depth_2d_array) -> vec2<i32>
|
textureDimensions(texture: texture_depth_2d_array) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_depth_cube) -> vec2<i32>
|
textureDimensions(texture: texture_depth_cube) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_depth_cube_array) -> vec2<i32>
|
textureDimensions(texture: texture_depth_cube_array) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<i32>
|
textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32>
|
||||||
textureDimensions(texture: texture_storage_1d<F, A>) -> i32 where: A is write
|
textureDimensions(texture: texture_storage_1d<F, A>) -> u32 where: A is write
|
||||||
textureDimensions(texture: texture_storage_2d<F, A>) -> vec2<i32> where: A is write
|
textureDimensions(texture: texture_storage_2d<F, A>) -> vec2<u32> where: A is write
|
||||||
textureDimensions(texture: texture_storage_2d_array<F, A>) -> vec2<i32> where: A is write
|
textureDimensions(texture: texture_storage_2d_array<F, A>) -> vec2<u32> where: A is write
|
||||||
textureDimensions(texture: texture_storage_3d<F, A>) -> vec3<i32> where: A is write
|
textureDimensions(texture: texture_storage_3d<F, A>) -> vec3<u32> where: A is write
|
||||||
textureDimensions(texture: texture_external) -> vec2<i32>
|
textureDimensions(texture: texture_external) -> vec2<u32>
|
||||||
)");
|
)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -138,7 +138,7 @@ TEST_F(MultiplanarExternalTextureTest, Dimensions) {
|
||||||
|
|
||||||
@fragment
|
@fragment
|
||||||
fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||||
var dim : vec2<i32>;
|
var dim : vec2<u32>;
|
||||||
dim = textureDimensions(ext_tex);
|
dim = textureDimensions(ext_tex);
|
||||||
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,7 @@ struct ExternalTextureParams {
|
||||||
|
|
||||||
@fragment
|
@fragment
|
||||||
fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||||
var dim : vec2<i32>;
|
var dim : vec2<u32>;
|
||||||
dim = textureDimensions(ext_tex);
|
dim = textureDimensions(ext_tex);
|
||||||
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
||||||
}
|
}
|
||||||
|
@ -191,7 +191,7 @@ TEST_F(MultiplanarExternalTextureTest, Dimensions_OutOfOrder) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
@fragment
|
@fragment
|
||||||
fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||||
var dim : vec2<i32>;
|
var dim : vec2<u32>;
|
||||||
dim = textureDimensions(ext_tex);
|
dim = textureDimensions(ext_tex);
|
||||||
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ struct ExternalTextureParams {
|
||||||
|
|
||||||
@fragment
|
@fragment
|
||||||
fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||||
var dim : vec2<i32>;
|
var dim : vec2<u32>;
|
||||||
dim = textureDimensions(ext_tex);
|
dim = textureDimensions(ext_tex);
|
||||||
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
return vec4<f32>(0.0, 0.0, 0.0, 0.0);
|
||||||
}
|
}
|
||||||
|
@ -2006,7 +2006,7 @@ fn main() {
|
||||||
// even if there's no external texture declared at module scope.
|
// even if there's no external texture declared at module scope.
|
||||||
TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsParamWithoutGlobalDecl) {
|
TEST_F(MultiplanarExternalTextureTest, ExternalTexturePassedAsParamWithoutGlobalDecl) {
|
||||||
auto* src = R"(
|
auto* src = R"(
|
||||||
fn f(ext_tex : texture_external) -> vec2<i32> {
|
fn f(ext_tex : texture_external) -> vec2<u32> {
|
||||||
return textureDimensions(ext_tex);
|
return textureDimensions(ext_tex);
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
@ -2032,7 +2032,7 @@ struct ExternalTextureParams {
|
||||||
gamutConversionMatrix : mat3x3<f32>,
|
gamutConversionMatrix : mat3x3<f32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn f(ext_tex : texture_2d<f32>, ext_tex_plane_1 : texture_2d<f32>, ext_tex_params : ExternalTextureParams) -> vec2<i32> {
|
fn f(ext_tex : texture_2d<f32>, ext_tex_plane_1 : texture_2d<f32>, ext_tex_params : ExternalTextureParams) -> vec2<u32> {
|
||||||
return textureDimensions(ext_tex);
|
return textureDimensions(ext_tex);
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
|
|
|
@ -1345,6 +1345,16 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& out,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto emit_unsigned_int_type = [&](const sem::Type* ty) {
|
||||||
|
uint32_t width = 0;
|
||||||
|
sem::Type::ElementOf(ty, &width);
|
||||||
|
if (width > 1) {
|
||||||
|
out << "uvec" << width;
|
||||||
|
} else {
|
||||||
|
out << "uint";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
auto emit_expr_as_signed = [&](const ast::Expression* e) {
|
auto emit_expr_as_signed = [&](const ast::Expression* e) {
|
||||||
auto* ty = TypeOf(e)->UnwrapRef();
|
auto* ty = TypeOf(e)->UnwrapRef();
|
||||||
if (!ty->is_unsigned_scalar_or_vector()) {
|
if (!ty->is_unsigned_scalar_or_vector()) {
|
||||||
|
@ -1357,6 +1367,12 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& out,
|
||||||
|
|
||||||
switch (builtin->Type()) {
|
switch (builtin->Type()) {
|
||||||
case sem::BuiltinType::kTextureDimensions: {
|
case sem::BuiltinType::kTextureDimensions: {
|
||||||
|
// textureDimensions() returns an unsigned scalar / vector in WGSL.
|
||||||
|
// textureSize() / imageSize() returns a signed scalar / vector in GLSL.
|
||||||
|
// Cast.
|
||||||
|
emit_unsigned_int_type(call->Type());
|
||||||
|
ScopedParen sp(out);
|
||||||
|
|
||||||
if (texture_type->Is<sem::StorageTexture>()) {
|
if (texture_type->Is<sem::StorageTexture>()) {
|
||||||
out << "imageSize(";
|
out << "imageSize(";
|
||||||
} else {
|
} else {
|
||||||
|
@ -1390,6 +1406,12 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& out,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case sem::BuiltinType::kTextureNumLayers: {
|
case sem::BuiltinType::kTextureNumLayers: {
|
||||||
|
// textureNumLayers() returns an unsigned scalar in WGSL.
|
||||||
|
// textureSize() / imageSize() returns a signed scalar / vector in GLSL.
|
||||||
|
// Cast.
|
||||||
|
out << "uint";
|
||||||
|
ScopedParen sp(out);
|
||||||
|
|
||||||
if (texture_type->Is<sem::StorageTexture>()) {
|
if (texture_type->Is<sem::StorageTexture>()) {
|
||||||
out << "imageSize(";
|
out << "imageSize(";
|
||||||
} else {
|
} else {
|
||||||
|
@ -1418,6 +1440,12 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& out,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case sem::BuiltinType::kTextureNumLevels: {
|
case sem::BuiltinType::kTextureNumLevels: {
|
||||||
|
// textureNumLevels() returns an unsigned scalar in WGSL.
|
||||||
|
// textureQueryLevels() returns a signed scalar in GLSL.
|
||||||
|
// Cast.
|
||||||
|
out << "uint";
|
||||||
|
ScopedParen sp(out);
|
||||||
|
|
||||||
out << "textureQueryLevels(";
|
out << "textureQueryLevels(";
|
||||||
if (!EmitExpression(out, texture)) {
|
if (!EmitExpression(out, texture)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -1426,6 +1454,12 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& out,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case sem::BuiltinType::kTextureNumSamples: {
|
case sem::BuiltinType::kTextureNumSamples: {
|
||||||
|
// textureNumSamples() returns an unsigned scalar in WGSL.
|
||||||
|
// textureSamples() returns a signed scalar in GLSL.
|
||||||
|
// Cast.
|
||||||
|
out << "uint";
|
||||||
|
ScopedParen sp(out);
|
||||||
|
|
||||||
out << "textureSamples(";
|
out << "textureSamples(";
|
||||||
if (!EmitExpression(out, texture)) {
|
if (!EmitExpression(out, texture)) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -219,15 +219,15 @@ ExpectedResult expected_texture_overload(ast::builtin::test::ValidTextureOverloa
|
||||||
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
|
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
|
||||||
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
|
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dF32:
|
||||||
return R"(yyytexture(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
|
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f));)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
||||||
return R"(yyytextureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
|
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), ivec2(4, 5));)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
||||||
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, float(4)), 3.0f);)";
|
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, float(3), 4.0f));)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
||||||
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f, ivec2(5, 6));)";
|
return R"(textureOffset(tint_symbol_sampler, vec4(1.0f, 2.0f, float(3), 4.0f), ivec2(5, 6));)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
||||||
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, 4.0f));)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
||||||
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
|
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
|
||||||
case ValidTextureOverload::kLoad1dLevelF32:
|
case ValidTextureOverload::kLoad1dLevelF32:
|
||||||
|
@ -248,7 +248,6 @@ ExpectedResult expected_texture_overload(ast::builtin::test::ValidTextureOverloa
|
||||||
case ValidTextureOverload::kLoad2dArrayLevelI32:
|
case ValidTextureOverload::kLoad2dArrayLevelI32:
|
||||||
case ValidTextureOverload::kLoad3dLevelI32:
|
case ValidTextureOverload::kLoad3dLevelI32:
|
||||||
return R"(texelFetch(tint_symbol_2, ivec3(uvec3(1u, 2u, 3u)), int(4u));)";
|
return R"(texelFetch(tint_symbol_2, ivec3(uvec3(1u, 2u, 3u)), int(4u));)";
|
||||||
case ValidTextureOverload::kLoadDepthMultisampled2dF32:
|
|
||||||
case ValidTextureOverload::kLoadMultisampled2dF32:
|
case ValidTextureOverload::kLoadMultisampled2dF32:
|
||||||
case ValidTextureOverload::kLoadMultisampled2dU32:
|
case ValidTextureOverload::kLoadMultisampled2dU32:
|
||||||
return R"(texelFetch(tint_symbol_2, ivec2(1, 2), 3);)";
|
return R"(texelFetch(tint_symbol_2, ivec2(1, 2), 3);)";
|
||||||
|
@ -258,6 +257,8 @@ ExpectedResult expected_texture_overload(ast::builtin::test::ValidTextureOverloa
|
||||||
return R"(texelFetch(tint_symbol_2, ivec2(1, 2), 3);)";
|
return R"(texelFetch(tint_symbol_2, ivec2(1, 2), 3);)";
|
||||||
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
|
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
|
||||||
return R"(texelFetch(tint_symbol_2, ivec3(uvec3(1u, 2u, 3u)), int(4u));)";
|
return R"(texelFetch(tint_symbol_2, ivec3(uvec3(1u, 2u, 3u)), int(4u));)";
|
||||||
|
case ValidTextureOverload::kLoadDepthMultisampled2dF32:
|
||||||
|
return R"(texelFetch(tint_symbol_2, ivec2(uvec2(1u, 2u)), int(3u)).x;)";
|
||||||
case ValidTextureOverload::kStoreWO1dRgba32float:
|
case ValidTextureOverload::kStoreWO1dRgba32float:
|
||||||
return R"(imageStore(tint_symbol, 1, vec4(2.0f, 3.0f, 4.0f, 5.0f));)";
|
return R"(imageStore(tint_symbol, 1, vec4(2.0f, 3.0f, 4.0f, 5.0f));)";
|
||||||
case ValidTextureOverload::kStoreWO2dRgba32float:
|
case ValidTextureOverload::kStoreWO2dRgba32float:
|
||||||
|
|
|
@ -315,9 +315,9 @@ ExpectedResult expected_texture_overload(ast::builtin::test::ValidTextureOverloa
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
||||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5));)";
|
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float2(1.0f, 2.0f), 3.0f, int2(4, 5));)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
||||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f);)";
|
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f);)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
||||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(4)), 3.0f, int2(5, 6));)";
|
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, float(3)), 4.0f, int2(5, 6));)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
||||||
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
return R"(tint_symbol.SampleCmpLevelZero(tint_symbol_1, float3(1.0f, 2.0f, 3.0f), 4.0f);)";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
||||||
|
@ -340,7 +340,6 @@ ExpectedResult expected_texture_overload(ast::builtin::test::ValidTextureOverloa
|
||||||
case ValidTextureOverload::kLoad2dArrayLevelI32:
|
case ValidTextureOverload::kLoad2dArrayLevelI32:
|
||||||
case ValidTextureOverload::kLoad3dLevelI32:
|
case ValidTextureOverload::kLoad3dLevelI32:
|
||||||
return R"(tint_symbol.Load(uint4(1u, 2u, 3u, 4u));)";
|
return R"(tint_symbol.Load(uint4(1u, 2u, 3u, 4u));)";
|
||||||
case ValidTextureOverload::kLoadDepthMultisampled2dF32:
|
|
||||||
case ValidTextureOverload::kLoadMultisampled2dF32:
|
case ValidTextureOverload::kLoadMultisampled2dF32:
|
||||||
case ValidTextureOverload::kLoadMultisampled2dU32:
|
case ValidTextureOverload::kLoadMultisampled2dU32:
|
||||||
return R"(tint_symbol.Load(int2(1, 2), 3);)";
|
return R"(tint_symbol.Load(int2(1, 2), 3);)";
|
||||||
|
@ -350,6 +349,8 @@ ExpectedResult expected_texture_overload(ast::builtin::test::ValidTextureOverloa
|
||||||
return R"(tint_symbol.Load(int3(1, 2, 3)).x;)";
|
return R"(tint_symbol.Load(int3(1, 2, 3)).x;)";
|
||||||
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
|
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
|
||||||
return R"(tint_symbol.Load(uint4(1u, 2u, 3u, 4u)).x;)";
|
return R"(tint_symbol.Load(uint4(1u, 2u, 3u, 4u)).x;)";
|
||||||
|
case ValidTextureOverload::kLoadDepthMultisampled2dF32:
|
||||||
|
return R"(tint_symbol.Load(uint3(1u, 2u, uint(0)), 3u).x;)";
|
||||||
case ValidTextureOverload::kStoreWO1dRgba32float:
|
case ValidTextureOverload::kStoreWO1dRgba32float:
|
||||||
return R"(tint_symbol[1] = float4(2.0f, 3.0f, 4.0f, 5.0f);)";
|
return R"(tint_symbol[1] = float4(2.0f, 3.0f, 4.0f, 5.0f);)";
|
||||||
case ValidTextureOverload::kStoreWO2dRgba32float:
|
case ValidTextureOverload::kStoreWO2dRgba32float:
|
||||||
|
|
|
@ -1092,9 +1092,7 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& out,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (dims.size() == 1) {
|
if (dims.size() == 1) {
|
||||||
out << "int(";
|
|
||||||
get_dim(dims[0]);
|
get_dim(dims[0]);
|
||||||
out << ")";
|
|
||||||
} else {
|
} else {
|
||||||
EmitType(out, TypeOf(expr)->UnwrapRef(), "");
|
EmitType(out, TypeOf(expr)->UnwrapRef(), "");
|
||||||
out << "(";
|
out << "(";
|
||||||
|
@ -1109,27 +1107,24 @@ bool GeneratorImpl::EmitTextureCall(std::ostream& out,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case sem::BuiltinType::kTextureNumLayers: {
|
case sem::BuiltinType::kTextureNumLayers: {
|
||||||
out << "int(";
|
|
||||||
if (!texture_expr()) {
|
if (!texture_expr()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
out << ".get_array_size())";
|
out << ".get_array_size()";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case sem::BuiltinType::kTextureNumLevels: {
|
case sem::BuiltinType::kTextureNumLevels: {
|
||||||
out << "int(";
|
|
||||||
if (!texture_expr()) {
|
if (!texture_expr()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
out << ".get_num_mip_levels())";
|
out << ".get_num_mip_levels()";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case sem::BuiltinType::kTextureNumSamples: {
|
case sem::BuiltinType::kTextureNumSamples: {
|
||||||
out << "int(";
|
|
||||||
if (!texture_expr()) {
|
if (!texture_expr()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
out << ".get_num_samples())";
|
out << ".get_num_samples()";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -24,7 +24,7 @@ std::string expected_texture_overload(ast::builtin::test::ValidTextureOverload o
|
||||||
switch (overload) {
|
switch (overload) {
|
||||||
case ValidTextureOverload::kDimensions1d:
|
case ValidTextureOverload::kDimensions1d:
|
||||||
case ValidTextureOverload::kDimensionsStorageWO1d:
|
case ValidTextureOverload::kDimensionsStorageWO1d:
|
||||||
return R"(int(texture.get_width(0)))";
|
return R"(texture.get_width(0))";
|
||||||
case ValidTextureOverload::kDimensions2d:
|
case ValidTextureOverload::kDimensions2d:
|
||||||
case ValidTextureOverload::kDimensions2dArray:
|
case ValidTextureOverload::kDimensions2dArray:
|
||||||
case ValidTextureOverload::kDimensionsCube:
|
case ValidTextureOverload::kDimensionsCube:
|
||||||
|
@ -37,10 +37,10 @@ std::string expected_texture_overload(ast::builtin::test::ValidTextureOverload o
|
||||||
case ValidTextureOverload::kDimensionsDepthMultisampled2d:
|
case ValidTextureOverload::kDimensionsDepthMultisampled2d:
|
||||||
case ValidTextureOverload::kDimensionsStorageWO2d:
|
case ValidTextureOverload::kDimensionsStorageWO2d:
|
||||||
case ValidTextureOverload::kDimensionsStorageWO2dArray:
|
case ValidTextureOverload::kDimensionsStorageWO2dArray:
|
||||||
return R"(int2(texture.get_width(), texture.get_height()))";
|
return R"(uint2(texture.get_width(), texture.get_height()))";
|
||||||
case ValidTextureOverload::kDimensions3d:
|
case ValidTextureOverload::kDimensions3d:
|
||||||
case ValidTextureOverload::kDimensionsStorageWO3d:
|
case ValidTextureOverload::kDimensionsStorageWO3d:
|
||||||
return R"(int3(texture.get_width(), texture.get_height(), texture.get_depth()))";
|
return R"(uint3(texture.get_width(), texture.get_height(), texture.get_depth()))";
|
||||||
case ValidTextureOverload::kDimensions2dLevel:
|
case ValidTextureOverload::kDimensions2dLevel:
|
||||||
case ValidTextureOverload::kDimensionsCubeLevel:
|
case ValidTextureOverload::kDimensionsCubeLevel:
|
||||||
case ValidTextureOverload::kDimensionsCubeArrayLevel:
|
case ValidTextureOverload::kDimensionsCubeArrayLevel:
|
||||||
|
@ -49,9 +49,9 @@ std::string expected_texture_overload(ast::builtin::test::ValidTextureOverload o
|
||||||
case ValidTextureOverload::kDimensionsDepth2dArrayLevel:
|
case ValidTextureOverload::kDimensionsDepth2dArrayLevel:
|
||||||
case ValidTextureOverload::kDimensionsDepthCubeLevel:
|
case ValidTextureOverload::kDimensionsDepthCubeLevel:
|
||||||
case ValidTextureOverload::kDimensionsDepthCubeArrayLevel:
|
case ValidTextureOverload::kDimensionsDepthCubeArrayLevel:
|
||||||
return R"(int2(texture.get_width(1), texture.get_height(1)))";
|
return R"(uint2(texture.get_width(1), texture.get_height(1)))";
|
||||||
case ValidTextureOverload::kDimensions3dLevel:
|
case ValidTextureOverload::kDimensions3dLevel:
|
||||||
return R"(int3(texture.get_width(1), texture.get_height(1), texture.get_depth(1)))";
|
return R"(uint3(texture.get_width(1), texture.get_height(1), texture.get_depth(1)))";
|
||||||
case ValidTextureOverload::kGather2dF32:
|
case ValidTextureOverload::kGather2dF32:
|
||||||
return R"(texture.gather(sampler, float2(1.0f, 2.0f), int2(0), component::x))";
|
return R"(texture.gather(sampler, float2(1.0f, 2.0f), int2(0), component::x))";
|
||||||
case ValidTextureOverload::kGather2dOffsetF32:
|
case ValidTextureOverload::kGather2dOffsetF32:
|
||||||
|
@ -93,7 +93,7 @@ std::string expected_texture_overload(ast::builtin::test::ValidTextureOverload o
|
||||||
case ValidTextureOverload::kNumLayersDepth2dArray:
|
case ValidTextureOverload::kNumLayersDepth2dArray:
|
||||||
case ValidTextureOverload::kNumLayersDepthCubeArray:
|
case ValidTextureOverload::kNumLayersDepthCubeArray:
|
||||||
case ValidTextureOverload::kNumLayersStorageWO2dArray:
|
case ValidTextureOverload::kNumLayersStorageWO2dArray:
|
||||||
return R"(int(texture.get_array_size()))";
|
return R"(texture.get_array_size())";
|
||||||
case ValidTextureOverload::kNumLevels2d:
|
case ValidTextureOverload::kNumLevels2d:
|
||||||
case ValidTextureOverload::kNumLevels2dArray:
|
case ValidTextureOverload::kNumLevels2dArray:
|
||||||
case ValidTextureOverload::kNumLevels3d:
|
case ValidTextureOverload::kNumLevels3d:
|
||||||
|
@ -103,10 +103,10 @@ std::string expected_texture_overload(ast::builtin::test::ValidTextureOverload o
|
||||||
case ValidTextureOverload::kNumLevelsDepth2dArray:
|
case ValidTextureOverload::kNumLevelsDepth2dArray:
|
||||||
case ValidTextureOverload::kNumLevelsDepthCube:
|
case ValidTextureOverload::kNumLevelsDepthCube:
|
||||||
case ValidTextureOverload::kNumLevelsDepthCubeArray:
|
case ValidTextureOverload::kNumLevelsDepthCubeArray:
|
||||||
return R"(int(texture.get_num_mip_levels()))";
|
return R"(texture.get_num_mip_levels())";
|
||||||
case ValidTextureOverload::kNumSamplesDepthMultisampled2d:
|
case ValidTextureOverload::kNumSamplesDepthMultisampled2d:
|
||||||
case ValidTextureOverload::kNumSamplesMultisampled2d:
|
case ValidTextureOverload::kNumSamplesMultisampled2d:
|
||||||
return R"(int(texture.get_num_samples()))";
|
return R"(texture.get_num_samples())";
|
||||||
case ValidTextureOverload::kSample1dF32:
|
case ValidTextureOverload::kSample1dF32:
|
||||||
return R"(texture.sample(sampler, 1.0f))";
|
return R"(texture.sample(sampler, 1.0f))";
|
||||||
case ValidTextureOverload::kSample2dF32:
|
case ValidTextureOverload::kSample2dF32:
|
||||||
|
@ -210,17 +210,17 @@ std::string expected_texture_overload(ast::builtin::test::ValidTextureOverload o
|
||||||
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
|
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
|
||||||
return R"(texture.sample_compare(sampler, float3(1.0f, 2.0f, 3.0f), 4, 5.0f))";
|
return R"(texture.sample_compare(sampler, float3(1.0f, 2.0f, 3.0f), 4, 5.0f))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dF32:
|
||||||
return R"(texture.sample_compare(sampler, float2(1.0f, 2.0f), 3.0f))";
|
return R"(texture.sample_compare(sampler, float2(1.0f, 2.0f), 3.0f, level(0)))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
|
||||||
return R"(texture.sample_compare(sampler, float2(1.0f, 2.0f), 3.0f, int2(4, 5)))";
|
return R"(texture.sample_compare(sampler, float2(1.0f, 2.0f), 3.0f, level(0), int2(4, 5)))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
|
||||||
return R"(texture.sample_compare(sampler, float2(1.0f, 2.0f), 4, 3.0f))";
|
return R"(texture.sample_compare(sampler, float2(1.0f, 2.0f), 3, 4.0f, level(0)))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
|
||||||
return R"(texture.sample_compare(sampler, float2(1.0f, 2.0f), 4, 3.0f, int2(5, 6)))";
|
return R"(texture.sample_compare(sampler, float2(1.0f, 2.0f), 3, 4.0f, level(0), int2(5, 6)))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
|
||||||
return R"(texture.sample_compare(sampler, float3(1.0f, 2.0f, 3.0f), 4.0f))";
|
return R"(texture.sample_compare(sampler, float3(1.0f, 2.0f, 3.0f), 4.0f, level(0)))";
|
||||||
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
|
||||||
return R"(texture.sample_compare(sampler, float3(1.0f, 2.0f, 3.0f), 4, 5.0f))";
|
return R"(texture.sample_compare(sampler, float3(1.0f, 2.0f, 3.0f), 4, 5.0f, level(0)))";
|
||||||
case ValidTextureOverload::kLoad1dLevelF32:
|
case ValidTextureOverload::kLoad1dLevelF32:
|
||||||
return R"(texture.read(uint(1u), 0))";
|
return R"(texture.read(uint(1u), 0))";
|
||||||
case ValidTextureOverload::kLoad1dLevelU32:
|
case ValidTextureOverload::kLoad1dLevelU32:
|
||||||
|
@ -250,10 +250,11 @@ std::string expected_texture_overload(ast::builtin::test::ValidTextureOverload o
|
||||||
case ValidTextureOverload::kLoadMultisampled2dI32:
|
case ValidTextureOverload::kLoadMultisampled2dI32:
|
||||||
return R"(texture.read(uint2(uint2(1u, 2u)), 3u))";
|
return R"(texture.read(uint2(uint2(1u, 2u)), 3u))";
|
||||||
case ValidTextureOverload::kLoadDepth2dLevelF32:
|
case ValidTextureOverload::kLoadDepth2dLevelF32:
|
||||||
case ValidTextureOverload::kLoadDepthMultisampled2dF32:
|
|
||||||
return R"(texture.read(uint2(int2(1, 2)), 3))";
|
return R"(texture.read(uint2(int2(1, 2)), 3))";
|
||||||
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
|
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
|
||||||
return R"(texture.read(uint2(uint2(1u, 2u)), 3u, 4u))";
|
return R"(texture.read(uint2(uint2(1u, 2u)), 3u, 4u))";
|
||||||
|
case ValidTextureOverload::kLoadDepthMultisampled2dF32:
|
||||||
|
return R"(texture.read(uint2(uint2(1u, 2u)), 3u))";
|
||||||
case ValidTextureOverload::kStoreWO1dRgba32float:
|
case ValidTextureOverload::kStoreWO1dRgba32float:
|
||||||
return R"(texture.write(float4(2.0f, 3.0f, 4.0f, 5.0f), uint(1)))";
|
return R"(texture.write(float4(2.0f, 3.0f, 4.0f, 5.0f), uint(1)))";
|
||||||
case ValidTextureOverload::kStoreWO2dRgba32float:
|
case ValidTextureOverload::kStoreWO2dRgba32float:
|
||||||
|
|
|
@ -42,12 +42,13 @@ expected_texture_overload_spirv expected_texture_overload(
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
%11 = OpConstant %9 0
|
%11 = OpTypeInt 32 1
|
||||||
|
%12 = OpConstant %11 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %10 %11
|
%8 = OpImageQuerySizeLod %9 %10 %12
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability Sampled1D
|
OpCapability Sampled1D
|
||||||
|
@ -63,13 +64,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpConstant %10 0
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -84,13 +86,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpConstant %10 1
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -105,14 +108,15 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
%14 = OpConstant %10 0
|
%14 = OpTypeInt 32 1
|
||||||
|
%15 = OpConstant %14 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%13 = OpLoad %3 %1
|
%13 = OpLoad %3 %1
|
||||||
%11 = OpImageQuerySizeLod %12 %13 %14
|
%11 = OpImageQuerySizeLod %12 %13 %15
|
||||||
%8 = OpVectorShuffle %9 %11 %11 0 1
|
%8 = OpVectorShuffle %9 %11 %11 0 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -128,14 +132,15 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
%14 = OpConstant %10 1
|
%14 = OpTypeInt 32 1
|
||||||
|
%15 = OpConstant %14 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%13 = OpLoad %3 %1
|
%13 = OpLoad %3 %1
|
||||||
%11 = OpImageQuerySizeLod %12 %13 %14
|
%11 = OpImageQuerySizeLod %12 %13 %15
|
||||||
%8 = OpVectorShuffle %9 %11 %11 0 1
|
%8 = OpVectorShuffle %9 %11 %11 0 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -151,13 +156,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 3
|
%9 = OpTypeVector %10 3
|
||||||
%12 = OpConstant %10 0
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -172,13 +178,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 3
|
%9 = OpTypeVector %10 3
|
||||||
%12 = OpConstant %10 1
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -193,13 +200,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpConstant %10 0
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -214,13 +222,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpConstant %10 1
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -235,14 +244,15 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
%14 = OpConstant %10 0
|
%14 = OpTypeInt 32 1
|
||||||
|
%15 = OpConstant %14 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%13 = OpLoad %3 %1
|
%13 = OpLoad %3 %1
|
||||||
%11 = OpImageQuerySizeLod %12 %13 %14
|
%11 = OpImageQuerySizeLod %12 %13 %15
|
||||||
%8 = OpVectorShuffle %9 %11 %11 0 1
|
%8 = OpVectorShuffle %9 %11 %11 0 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -259,14 +269,15 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
%14 = OpConstant %10 1
|
%14 = OpTypeInt 32 1
|
||||||
|
%15 = OpConstant %14 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%13 = OpLoad %3 %1
|
%13 = OpLoad %3 %1
|
||||||
%11 = OpImageQuerySizeLod %12 %13 %14
|
%11 = OpImageQuerySizeLod %12 %13 %15
|
||||||
%8 = OpVectorShuffle %9 %11 %11 0 1
|
%8 = OpVectorShuffle %9 %11 %11 0 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -283,7 +294,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -303,13 +314,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpConstant %10 0
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -324,13 +336,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpConstant %10 1
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -345,14 +358,15 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
%14 = OpConstant %10 0
|
%14 = OpTypeInt 32 1
|
||||||
|
%15 = OpConstant %14 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%13 = OpLoad %3 %1
|
%13 = OpLoad %3 %1
|
||||||
%11 = OpImageQuerySizeLod %12 %13 %14
|
%11 = OpImageQuerySizeLod %12 %13 %15
|
||||||
%8 = OpVectorShuffle %9 %11 %11 0 1
|
%8 = OpVectorShuffle %9 %11 %11 0 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -368,14 +382,15 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
%14 = OpConstant %10 1
|
%14 = OpTypeInt 32 1
|
||||||
|
%15 = OpConstant %14 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%13 = OpLoad %3 %1
|
%13 = OpLoad %3 %1
|
||||||
%11 = OpImageQuerySizeLod %12 %13 %14
|
%11 = OpImageQuerySizeLod %12 %13 %15
|
||||||
%8 = OpVectorShuffle %9 %11 %11 0 1
|
%8 = OpVectorShuffle %9 %11 %11 0 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -391,13 +406,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpConstant %10 0
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -412,13 +428,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpConstant %10 1
|
%12 = OpTypeInt 32 1
|
||||||
|
%13 = OpConstant %12 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%8 = OpImageQuerySizeLod %9 %11 %12
|
%8 = OpImageQuerySizeLod %9 %11 %13
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -433,14 +450,15 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
%14 = OpConstant %10 0
|
%14 = OpTypeInt 32 1
|
||||||
|
%15 = OpConstant %14 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%13 = OpLoad %3 %1
|
%13 = OpLoad %3 %1
|
||||||
%11 = OpImageQuerySizeLod %12 %13 %14
|
%11 = OpImageQuerySizeLod %12 %13 %15
|
||||||
%8 = OpVectorShuffle %9 %11 %11 0 1
|
%8 = OpVectorShuffle %9 %11 %11 0 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -457,14 +475,15 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
%14 = OpConstant %10 1
|
%14 = OpTypeInt 32 1
|
||||||
|
%15 = OpConstant %14 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%13 = OpLoad %3 %1
|
%13 = OpLoad %3 %1
|
||||||
%11 = OpImageQuerySizeLod %12 %13 %14
|
%11 = OpImageQuerySizeLod %12 %13 %15
|
||||||
%8 = OpVectorShuffle %9 %11 %11 0 1
|
%8 = OpVectorShuffle %9 %11 %11 0 1
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -481,7 +500,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -501,7 +520,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -521,7 +540,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -541,7 +560,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 2
|
%9 = OpTypeVector %10 2
|
||||||
%12 = OpTypeVector %10 3
|
%12 = OpTypeVector %10 3
|
||||||
)",
|
)",
|
||||||
|
@ -563,7 +582,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeInt 32 1
|
%10 = OpTypeInt 32 0
|
||||||
%9 = OpTypeVector %10 3
|
%9 = OpTypeVector %10 3
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1100,13 +1119,14 @@ OpCapability SampledCubeArray
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
%11 = OpTypeVector %9 3
|
%11 = OpTypeVector %9 3
|
||||||
%13 = OpConstant %9 0
|
%13 = OpTypeInt 32 1
|
||||||
|
%14 = OpConstant %13 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%12 = OpLoad %3 %1
|
%12 = OpLoad %3 %1
|
||||||
%10 = OpImageQuerySizeLod %11 %12 %13
|
%10 = OpImageQuerySizeLod %11 %12 %14
|
||||||
%8 = OpCompositeExtract %9 %10 2
|
%8 = OpCompositeExtract %9 %10 2
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1121,13 +1141,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
%11 = OpTypeVector %9 3
|
%11 = OpTypeVector %9 3
|
||||||
%13 = OpConstant %9 0
|
%13 = OpTypeInt 32 1
|
||||||
|
%14 = OpConstant %13 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%12 = OpLoad %3 %1
|
%12 = OpLoad %3 %1
|
||||||
%10 = OpImageQuerySizeLod %11 %12 %13
|
%10 = OpImageQuerySizeLod %11 %12 %14
|
||||||
%8 = OpCompositeExtract %9 %10 2
|
%8 = OpCompositeExtract %9 %10 2
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1143,13 +1164,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
%11 = OpTypeVector %9 3
|
%11 = OpTypeVector %9 3
|
||||||
%13 = OpConstant %9 0
|
%13 = OpTypeInt 32 1
|
||||||
|
%14 = OpConstant %13 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%12 = OpLoad %3 %1
|
%12 = OpLoad %3 %1
|
||||||
%10 = OpImageQuerySizeLod %11 %12 %13
|
%10 = OpImageQuerySizeLod %11 %12 %14
|
||||||
%8 = OpCompositeExtract %9 %10 2
|
%8 = OpCompositeExtract %9 %10 2
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1164,13 +1186,14 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
%11 = OpTypeVector %9 3
|
%11 = OpTypeVector %9 3
|
||||||
%13 = OpConstant %9 0
|
%13 = OpTypeInt 32 1
|
||||||
|
%14 = OpConstant %13 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%12 = OpLoad %3 %1
|
%12 = OpLoad %3 %1
|
||||||
%10 = OpImageQuerySizeLod %11 %12 %13
|
%10 = OpImageQuerySizeLod %11 %12 %14
|
||||||
%8 = OpCompositeExtract %9 %10 2
|
%8 = OpCompositeExtract %9 %10 2
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1186,7 +1209,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
%11 = OpTypeVector %9 3
|
%11 = OpTypeVector %9 3
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -1206,7 +1229,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1224,7 +1247,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1242,7 +1265,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1260,7 +1283,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1278,7 +1301,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1297,7 +1320,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1315,7 +1338,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1333,7 +1356,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1351,7 +1374,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1370,7 +1393,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -1388,7 +1411,7 @@ OpCapability ImageQuery
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%9 = OpTypeInt 32 1
|
%9 = OpTypeInt 32 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%10 = OpLoad %3 %1
|
%10 = OpLoad %3 %1
|
||||||
|
@ -3019,8 +3042,8 @@ OpCapability SampledCubeArray
|
||||||
%14 = OpConstant %4 1
|
%14 = OpConstant %4 1
|
||||||
%15 = OpConstant %4 2
|
%15 = OpConstant %4 2
|
||||||
%17 = OpTypeInt 32 1
|
%17 = OpTypeInt 32 1
|
||||||
%18 = OpConstant %17 4
|
%18 = OpConstant %17 3
|
||||||
%20 = OpConstant %4 3
|
%20 = OpConstant %4 4
|
||||||
%21 = OpConstant %4 0
|
%21 = OpConstant %4 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
@ -3048,8 +3071,8 @@ OpCapability SampledCubeArray
|
||||||
%14 = OpConstant %4 1
|
%14 = OpConstant %4 1
|
||||||
%15 = OpConstant %4 2
|
%15 = OpConstant %4 2
|
||||||
%17 = OpTypeInt 32 1
|
%17 = OpTypeInt 32 1
|
||||||
%18 = OpConstant %17 4
|
%18 = OpConstant %17 3
|
||||||
%20 = OpConstant %4 3
|
%20 = OpConstant %4 4
|
||||||
%21 = OpConstant %4 0
|
%21 = OpConstant %4 0
|
||||||
%22 = OpTypeVector %17 2
|
%22 = OpTypeVector %17 2
|
||||||
%23 = OpConstant %17 5
|
%23 = OpConstant %17 5
|
||||||
|
@ -3538,24 +3561,23 @@ OpCapability Sampled1D
|
||||||
return {
|
return {
|
||||||
R"(
|
R"(
|
||||||
%4 = OpTypeFloat 32
|
%4 = OpTypeFloat 32
|
||||||
%3 = OpTypeImage %4 2D 0 1 0 1 Unknown
|
%3 = OpTypeImage %4 2D 0 0 1 1 Unknown
|
||||||
%2 = OpTypePointer UniformConstant %3
|
%2 = OpTypePointer UniformConstant %3
|
||||||
%1 = OpVariable %2 UniformConstant
|
%1 = OpVariable %2 UniformConstant
|
||||||
%7 = OpTypeSampler
|
%7 = OpTypeSampler
|
||||||
%6 = OpTypePointer UniformConstant %7
|
%6 = OpTypePointer UniformConstant %7
|
||||||
%5 = OpVariable %6 UniformConstant
|
%5 = OpVariable %6 UniformConstant
|
||||||
%10 = OpTypeVector %4 4
|
%10 = OpTypeVector %4 4
|
||||||
%13 = OpTypeInt 32 1
|
%13 = OpTypeInt 32 0
|
||||||
%12 = OpTypeVector %13 3
|
%12 = OpTypeVector %13 2
|
||||||
%14 = OpConstant %13 1
|
%14 = OpConstant %13 1
|
||||||
%15 = OpConstant %13 2
|
%15 = OpConstant %13 2
|
||||||
%16 = OpConstant %13 3
|
%16 = OpConstantComposite %12 %14 %15
|
||||||
%17 = OpConstantComposite %12 %14 %15 %16
|
%17 = OpConstant %13 3
|
||||||
%18 = OpConstant %13 4
|
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
%11 = OpLoad %3 %1
|
%11 = OpLoad %3 %1
|
||||||
%9 = OpImageFetch %10 %11 %17 Sample %18
|
%9 = OpImageFetch %10 %11 %16 Sample %17
|
||||||
%8 = OpCompositeExtract %4 %9 0
|
%8 = OpCompositeExtract %4 %9 0
|
||||||
)",
|
)",
|
||||||
R"(
|
R"(
|
||||||
|
|
|
@ -98,7 +98,7 @@ fn simulate(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
if (particle.lifetime < 0.0) {
|
if (particle.lifetime < 0.0) {
|
||||||
// Use the probability map to find where the particle should be spawned.
|
// Use the probability map to find where the particle should be spawned.
|
||||||
// Starting with the 1x1 mip level.
|
// Starting with the 1x1 mip level.
|
||||||
var coord = vec2<i32>(0, 0);
|
var coord = vec2<u32>(0, 0);
|
||||||
for (var level = textureNumLevels(texture) - 1; level > 0; level = level - 1) {
|
for (var level = textureNumLevels(texture) - 1; level > 0; level = level - 1) {
|
||||||
// Load the probability value from the mip-level
|
// Load the probability value from the mip-level
|
||||||
// Generate a random number and using the probabilty values, pick the
|
// Generate a random number and using the probabilty values, pick the
|
||||||
|
@ -112,8 +112,8 @@ fn simulate(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
let value = vec4<f32>(rand());
|
let value = vec4<f32>(rand());
|
||||||
let mask = (value >= vec4<f32>(0.0, probabilites.xyz)) & (value < probabilites);
|
let mask = (value >= vec4<f32>(0.0, probabilites.xyz)) & (value < probabilites);
|
||||||
coord = coord * 2;
|
coord = coord * 2;
|
||||||
coord.x = coord.x + select(0, 1, any(mask.yw)); // x y
|
coord.x += select(0u, 1u, any(mask.yw)); // x y
|
||||||
coord.y = coord.y + select(0, 1, any(mask.zw)); // z w
|
coord.y += select(0u, 1u, any(mask.zw)); // z w
|
||||||
}
|
}
|
||||||
let uv = vec2<f32>(coord) / vec2<f32>(textureDimensions(texture));
|
let uv = vec2<f32>(coord) / vec2<f32>(textureDimensions(texture));
|
||||||
particle.position = vec3<f32>((uv - 0.5) * 3.0 * vec2<f32>(1.0, -1.0), 0.0);
|
particle.position = vec3<f32>((uv - 0.5) * 3.0 * vec2<f32>(1.0, -1.0), 0.0);
|
||||||
|
|
|
@ -177,21 +177,21 @@ void simulate(uvec3 GlobalInvocationID) {
|
||||||
particle.lifetime = (particle.lifetime - sim_params.deltaTime);
|
particle.lifetime = (particle.lifetime - sim_params.deltaTime);
|
||||||
particle.color.a = smoothstep(0.0f, 0.5f, particle.lifetime);
|
particle.color.a = smoothstep(0.0f, 0.5f, particle.lifetime);
|
||||||
if ((particle.lifetime < 0.0f)) {
|
if ((particle.lifetime < 0.0f)) {
|
||||||
ivec2 coord = ivec2(0);
|
uvec2 coord = uvec2(0u);
|
||||||
{
|
{
|
||||||
for(int level = (textureQueryLevels(tint_symbol_6) - 1); (level > 0); level = (level - 1)) {
|
for(uint level = (uint(textureQueryLevels(tint_symbol_6)) - 1u); (level > 0u); level = (level - 1u)) {
|
||||||
vec4 probabilites = texelFetch(tint_symbol_6, coord, level);
|
vec4 probabilites = texelFetch(tint_symbol_6, ivec2(coord), int(level));
|
||||||
float tint_symbol_5 = rand();
|
float tint_symbol_5 = rand();
|
||||||
vec4 value = vec4(tint_symbol_5);
|
vec4 value = vec4(tint_symbol_5);
|
||||||
bvec4 mask = bvec4(uvec4(greaterThanEqual(value, vec4(0.0f, probabilites.xyz))) & uvec4(lessThan(value, probabilites)));
|
bvec4 mask = bvec4(uvec4(greaterThanEqual(value, vec4(0.0f, probabilites.xyz))) & uvec4(lessThan(value, probabilites)));
|
||||||
coord = (coord * 2);
|
coord = (coord * 2u);
|
||||||
coord.x = (coord.x + (any(mask.yw) ? 1 : 0));
|
coord.x = (coord.x + (any(mask.yw) ? 1u : 0u));
|
||||||
coord.y = (coord.y + (any(mask.zw) ? 1 : 0));
|
coord.y = (coord.y + (any(mask.zw) ? 1u : 0u));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vec2 uv = (vec2(coord) / vec2(textureSize(tint_symbol_6, 0)));
|
vec2 uv = (vec2(coord) / vec2(uvec2(textureSize(tint_symbol_6, 0))));
|
||||||
particle.position = vec3((((uv - 0.5f) * 3.0f) * vec2(1.0f, -1.0f)), 0.0f);
|
particle.position = vec3((((uv - 0.5f) * 3.0f) * vec2(1.0f, -1.0f)), 0.0f);
|
||||||
particle.color = texelFetch(tint_symbol_6, coord, 0);
|
particle.color = texelFetch(tint_symbol_6, ivec2(coord), int(0u));
|
||||||
float tint_symbol_1 = rand();
|
float tint_symbol_1 = rand();
|
||||||
particle.velocity.x = ((tint_symbol_1 - 0.5f) * 0.100000001f);
|
particle.velocity.x = ((tint_symbol_1 - 0.5f) * 0.100000001f);
|
||||||
float tint_symbol_2 = rand();
|
float tint_symbol_2 = rand();
|
||||||
|
@ -210,8 +210,8 @@ void main() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Error parsing GLSL shader:
|
Error parsing GLSL shader:
|
||||||
ERROR: 0:64: 'textureQueryLevels' : no matching overloaded function found
|
ERROR: 0:64: 'textureQueryLevels' : no matching overloaded function found
|
||||||
ERROR: 0:64: '' : compilation terminated
|
ERROR: 0:64: '' : compilation terminated
|
||||||
ERROR: 2 compilation errors. No code generated.
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ layout(binding = 5, std430) buffer Buffer_ssbo_1 {
|
||||||
|
|
||||||
layout(rgba8) uniform highp writeonly image2D tex_out;
|
layout(rgba8) uniform highp writeonly image2D tex_out;
|
||||||
void export_level(uvec3 coord) {
|
void export_level(uvec3 coord) {
|
||||||
if (all(lessThan(coord.xy, uvec2(imageSize(tex_out))))) {
|
if (all(lessThan(coord.xy, uvec2(uvec2(imageSize(tex_out)))))) {
|
||||||
uint dst_offset = (coord.x + (coord.y * ubo.width));
|
uint dst_offset = (coord.x + (coord.y * ubo.width));
|
||||||
uint src_offset = ((coord.x * 2u) + ((coord.y * 2u) * ubo.width));
|
uint src_offset = ((coord.x * 2u) + ((coord.y * 2u) * ubo.width));
|
||||||
float a = buf_in.weights[(src_offset + 0u)];
|
float a = buf_in.weights[(src_offset + 0u)];
|
||||||
|
|
|
@ -25,7 +25,7 @@ void main() {
|
||||||
}
|
}
|
||||||
Error parsing GLSL shader:
|
Error parsing GLSL shader:
|
||||||
ERROR: 0:16: 'assign' : cannot convert from 'layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}' to 'layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}'
|
ERROR: 0:16: 'assign' : cannot convert from 'layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}' to 'layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}'
|
||||||
ERROR: 0:16: '' : compilation terminated
|
ERROR: 0:16: '' : compilation terminated
|
||||||
ERROR: 2 compilation errors. No code generated.
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,9 +20,9 @@ fn ConvertToFp16FloatValue(fp32 : f32) -> u32 {
|
||||||
|
|
||||||
@compute @workgroup_size(1, 1, 1)
|
@compute @workgroup_size(1, 1, 1)
|
||||||
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
var size : vec2<i32> = textureDimensions(src);
|
var size = textureDimensions(src);
|
||||||
var dstTexCoord : vec2<i32> = vec2<i32>(GlobalInvocationID.xy);
|
var dstTexCoord = GlobalInvocationID.xy;
|
||||||
var srcTexCoord : vec2<i32> = dstTexCoord;
|
var srcTexCoord = dstTexCoord;
|
||||||
if (uniforms.dstTextureFlipY == 1u) {
|
if (uniforms.dstTextureFlipY == 1u) {
|
||||||
srcTexCoord.y = size.y - dstTexCoord.y - 1;
|
srcTexCoord.y = size.y - dstTexCoord.y - 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,14 +20,14 @@ struct tint_symbol_2 {
|
||||||
void main_inner(uint3 GlobalInvocationID) {
|
void main_inner(uint3 GlobalInvocationID) {
|
||||||
int2 tint_tmp;
|
int2 tint_tmp;
|
||||||
src.GetDimensions(tint_tmp.x, tint_tmp.y);
|
src.GetDimensions(tint_tmp.x, tint_tmp.y);
|
||||||
int2 size = tint_tmp;
|
uint2 size = tint_tmp;
|
||||||
int2 dstTexCoord = int2(GlobalInvocationID.xy);
|
uint2 dstTexCoord = GlobalInvocationID.xy;
|
||||||
int2 srcTexCoord = dstTexCoord;
|
uint2 srcTexCoord = dstTexCoord;
|
||||||
if ((uniforms[0].x == 1u)) {
|
if ((uniforms[0].x == 1u)) {
|
||||||
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
|
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1u);
|
||||||
}
|
}
|
||||||
float4 srcColor = src.Load(int3(srcTexCoord, 0));
|
float4 srcColor = src.Load(uint3(srcTexCoord, 0u));
|
||||||
float4 dstColor = tint_symbol.Load(int3(dstTexCoord, 0));
|
float4 dstColor = tint_symbol.Load(uint3(dstTexCoord, 0u));
|
||||||
bool success = true;
|
bool success = true;
|
||||||
uint4 srcColorBits = uint4(0u, 0u, 0u, 0u);
|
uint4 srcColorBits = uint4(0u, 0u, 0u, 0u);
|
||||||
uint4 dstColorBits = uint4(dstColor);
|
uint4 dstColorBits = uint4(dstColor);
|
||||||
|
|
|
@ -20,14 +20,14 @@ struct tint_symbol_2 {
|
||||||
void main_inner(uint3 GlobalInvocationID) {
|
void main_inner(uint3 GlobalInvocationID) {
|
||||||
int2 tint_tmp;
|
int2 tint_tmp;
|
||||||
src.GetDimensions(tint_tmp.x, tint_tmp.y);
|
src.GetDimensions(tint_tmp.x, tint_tmp.y);
|
||||||
int2 size = tint_tmp;
|
uint2 size = tint_tmp;
|
||||||
int2 dstTexCoord = int2(GlobalInvocationID.xy);
|
uint2 dstTexCoord = GlobalInvocationID.xy;
|
||||||
int2 srcTexCoord = dstTexCoord;
|
uint2 srcTexCoord = dstTexCoord;
|
||||||
if ((uniforms[0].x == 1u)) {
|
if ((uniforms[0].x == 1u)) {
|
||||||
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
|
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1u);
|
||||||
}
|
}
|
||||||
float4 srcColor = src.Load(int3(srcTexCoord, 0));
|
float4 srcColor = src.Load(uint3(srcTexCoord, 0u));
|
||||||
float4 dstColor = tint_symbol.Load(int3(dstTexCoord, 0));
|
float4 dstColor = tint_symbol.Load(uint3(dstTexCoord, 0u));
|
||||||
bool success = true;
|
bool success = true;
|
||||||
uint4 srcColorBits = uint4(0u, 0u, 0u, 0u);
|
uint4 srcColorBits = uint4(0u, 0u, 0u, 0u);
|
||||||
uint4 dstColorBits = uint4(dstColor);
|
uint4 dstColorBits = uint4(dstColor);
|
||||||
|
|
|
@ -18,14 +18,14 @@ uint ConvertToFp16FloatValue(float fp32) {
|
||||||
uniform highp sampler2D src_1;
|
uniform highp sampler2D src_1;
|
||||||
uniform highp sampler2D dst_1;
|
uniform highp sampler2D dst_1;
|
||||||
void tint_symbol_1(uvec3 GlobalInvocationID) {
|
void tint_symbol_1(uvec3 GlobalInvocationID) {
|
||||||
ivec2 size = textureSize(src_1, 0);
|
uvec2 size = uvec2(textureSize(src_1, 0));
|
||||||
ivec2 dstTexCoord = ivec2(GlobalInvocationID.xy);
|
uvec2 dstTexCoord = GlobalInvocationID.xy;
|
||||||
ivec2 srcTexCoord = dstTexCoord;
|
uvec2 srcTexCoord = dstTexCoord;
|
||||||
if ((uniforms.dstTextureFlipY == 1u)) {
|
if ((uniforms.dstTextureFlipY == 1u)) {
|
||||||
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
|
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1u);
|
||||||
}
|
}
|
||||||
vec4 srcColor = texelFetch(src_1, srcTexCoord, 0);
|
vec4 srcColor = texelFetch(src_1, ivec2(srcTexCoord), int(0u));
|
||||||
vec4 dstColor = texelFetch(dst_1, dstTexCoord, 0);
|
vec4 dstColor = texelFetch(dst_1, ivec2(dstTexCoord), int(0u));
|
||||||
bool success = true;
|
bool success = true;
|
||||||
uvec4 srcColorBits = uvec4(0u, 0u, 0u, 0u);
|
uvec4 srcColorBits = uvec4(0u, 0u, 0u, 0u);
|
||||||
uvec4 dstColorBits = uvec4(dstColor);
|
uvec4 dstColorBits = uvec4(dstColor);
|
||||||
|
|
|
@ -30,14 +30,14 @@ uint ConvertToFp16FloatValue(float fp32) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_2, const constant Uniforms* const tint_symbol_3, texture2d<float, access::sample> tint_symbol_4, device OutputBuf* const tint_symbol_5) {
|
void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_2, const constant Uniforms* const tint_symbol_3, texture2d<float, access::sample> tint_symbol_4, device OutputBuf* const tint_symbol_5) {
|
||||||
int2 size = int2(tint_symbol_2.get_width(), tint_symbol_2.get_height());
|
uint2 size = uint2(tint_symbol_2.get_width(), tint_symbol_2.get_height());
|
||||||
int2 dstTexCoord = int2(uint3(GlobalInvocationID).xy);
|
uint2 dstTexCoord = uint3(GlobalInvocationID).xy;
|
||||||
int2 srcTexCoord = dstTexCoord;
|
uint2 srcTexCoord = dstTexCoord;
|
||||||
if (((*(tint_symbol_3)).dstTextureFlipY == 1u)) {
|
if (((*(tint_symbol_3)).dstTextureFlipY == 1u)) {
|
||||||
srcTexCoord[1] = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(size[1]) - as_type<uint>(dstTexCoord[1])))) - as_type<uint>(1)));
|
srcTexCoord[1] = ((size[1] - dstTexCoord[1]) - 1u);
|
||||||
}
|
}
|
||||||
float4 srcColor = tint_symbol_2.read(uint2(srcTexCoord), 0);
|
float4 srcColor = tint_symbol_2.read(uint2(srcTexCoord), 0u);
|
||||||
float4 dstColor = tint_symbol_4.read(uint2(dstTexCoord), 0);
|
float4 dstColor = tint_symbol_4.read(uint2(dstTexCoord), 0u);
|
||||||
bool success = true;
|
bool success = true;
|
||||||
uint4 srcColorBits = 0u;
|
uint4 srcColorBits = 0u;
|
||||||
uint4 dstColorBits = uint4(dstColor);
|
uint4 dstColorBits = uint4(dstColor);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
; Bound: 138
|
; Bound: 133
|
||||||
; Schema: 0
|
; Schema: 0
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -73,33 +73,29 @@
|
||||||
%uint_1 = OpConstant %uint 1
|
%uint_1 = OpConstant %uint 1
|
||||||
%void = OpTypeVoid
|
%void = OpTypeVoid
|
||||||
%22 = OpTypeFunction %void %v3uint
|
%22 = OpTypeFunction %void %v3uint
|
||||||
%int = OpTypeInt 32 1
|
|
||||||
%v2int = OpTypeVector %int 2
|
|
||||||
%int_0 = OpConstant %int 0
|
|
||||||
%_ptr_Function_v2int = OpTypePointer Function %v2int
|
|
||||||
%34 = OpConstantNull %v2int
|
|
||||||
%v2uint = OpTypeVector %uint 2
|
%v2uint = OpTypeVector %uint 2
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%int_0 = OpConstant %int 0
|
||||||
|
%_ptr_Function_v2uint = OpTypePointer Function %v2uint
|
||||||
|
%34 = OpConstantNull %v2uint
|
||||||
%uint_0 = OpConstant %uint 0
|
%uint_0 = OpConstant %uint 0
|
||||||
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
||||||
%bool = OpTypeBool
|
%bool = OpTypeBool
|
||||||
%_ptr_Function_int = OpTypePointer Function %int
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||||
%int_1 = OpConstant %int 1
|
|
||||||
%v4float = OpTypeVector %float 4
|
%v4float = OpTypeVector %float 4
|
||||||
%62 = OpConstantNull %int
|
%59 = OpConstantNull %uint
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
%65 = OpConstantNull %v4float
|
%62 = OpConstantNull %v4float
|
||||||
%true = OpConstantTrue %bool
|
%true = OpConstantTrue %bool
|
||||||
%_ptr_Function_bool = OpTypePointer Function %bool
|
%_ptr_Function_bool = OpTypePointer Function %bool
|
||||||
%73 = OpConstantNull %bool
|
%70 = OpConstantNull %bool
|
||||||
%v4uint = OpTypeVector %uint 4
|
%v4uint = OpTypeVector %uint 4
|
||||||
%_ptr_Function_v4uint = OpTypePointer Function %v4uint
|
%_ptr_Function_v4uint = OpTypePointer Function %v4uint
|
||||||
%77 = OpConstantNull %v4uint
|
%74 = OpConstantNull %v4uint
|
||||||
%81 = OpConstantNull %uint
|
|
||||||
%_ptr_Function_uint = OpTypePointer Function %uint
|
|
||||||
%uint_3 = OpConstant %uint 3
|
%uint_3 = OpConstant %uint 3
|
||||||
%_ptr_Function_float = OpTypePointer Function %float
|
%_ptr_Function_float = OpTypePointer Function %float
|
||||||
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
|
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
|
||||||
%133 = OpTypeFunction %void
|
%128 = OpTypeFunction %void
|
||||||
%ConvertToFp16FloatValue = OpFunction %uint None %17
|
%ConvertToFp16FloatValue = OpFunction %uint None %17
|
||||||
%fp32 = OpFunctionParameter %float
|
%fp32 = OpFunctionParameter %float
|
||||||
%20 = OpLabel
|
%20 = OpLabel
|
||||||
|
@ -108,124 +104,122 @@
|
||||||
%main_inner = OpFunction %void None %22
|
%main_inner = OpFunction %void None %22
|
||||||
%GlobalInvocationID = OpFunctionParameter %v3uint
|
%GlobalInvocationID = OpFunctionParameter %v3uint
|
||||||
%26 = OpLabel
|
%26 = OpLabel
|
||||||
%size = OpVariable %_ptr_Function_v2int Function %34
|
%size = OpVariable %_ptr_Function_v2uint Function %34
|
||||||
%dstTexCoord = OpVariable %_ptr_Function_v2int Function %34
|
%dstTexCoord = OpVariable %_ptr_Function_v2uint Function %34
|
||||||
%srcTexCoord = OpVariable %_ptr_Function_v2int Function %34
|
%srcTexCoord = OpVariable %_ptr_Function_v2uint Function %34
|
||||||
%srcColor = OpVariable %_ptr_Function_v4float Function %65
|
%srcColor = OpVariable %_ptr_Function_v4float Function %62
|
||||||
%dstColor = OpVariable %_ptr_Function_v4float Function %65
|
%dstColor = OpVariable %_ptr_Function_v4float Function %62
|
||||||
%success = OpVariable %_ptr_Function_bool Function %73
|
%success = OpVariable %_ptr_Function_bool Function %70
|
||||||
%srcColorBits = OpVariable %_ptr_Function_v4uint Function %77
|
%srcColorBits = OpVariable %_ptr_Function_v4uint Function %74
|
||||||
%dstColorBits = OpVariable %_ptr_Function_v4uint Function %77
|
%dstColorBits = OpVariable %_ptr_Function_v4uint Function %74
|
||||||
%i = OpVariable %_ptr_Function_uint Function %81
|
%i = OpVariable %_ptr_Function_uint Function %59
|
||||||
%outputIndex = OpVariable %_ptr_Function_uint Function %81
|
%outputIndex = OpVariable %_ptr_Function_uint Function %59
|
||||||
%30 = OpLoad %7 %src
|
%29 = OpLoad %7 %src
|
||||||
%27 = OpImageQuerySizeLod %v2int %30 %int_0
|
%27 = OpImageQuerySizeLod %v2uint %29 %int_0
|
||||||
OpStore %size %27
|
OpStore %size %27
|
||||||
%37 = OpVectorShuffle %v2uint %GlobalInvocationID %GlobalInvocationID 0 1
|
%35 = OpVectorShuffle %v2uint %GlobalInvocationID %GlobalInvocationID 0 1
|
||||||
%35 = OpBitcast %v2int %37
|
|
||||||
OpStore %dstTexCoord %35
|
OpStore %dstTexCoord %35
|
||||||
%39 = OpLoad %v2int %dstTexCoord
|
%37 = OpLoad %v2uint %dstTexCoord
|
||||||
OpStore %srcTexCoord %39
|
OpStore %srcTexCoord %37
|
||||||
%43 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
|
%41 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0
|
||||||
%44 = OpLoad %uint %43
|
%42 = OpLoad %uint %41
|
||||||
%45 = OpIEqual %bool %44 %uint_1
|
%43 = OpIEqual %bool %42 %uint_1
|
||||||
OpSelectionMerge %47 None
|
OpSelectionMerge %45 None
|
||||||
OpBranchConditional %45 %48 %47
|
OpBranchConditional %43 %46 %45
|
||||||
%48 = OpLabel
|
%46 = OpLabel
|
||||||
%50 = OpAccessChain %_ptr_Function_int %srcTexCoord %uint_1
|
%48 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1
|
||||||
%51 = OpAccessChain %_ptr_Function_int %size %uint_1
|
%49 = OpAccessChain %_ptr_Function_uint %size %uint_1
|
||||||
%52 = OpLoad %int %51
|
%50 = OpLoad %uint %49
|
||||||
%53 = OpAccessChain %_ptr_Function_int %dstTexCoord %uint_1
|
%51 = OpAccessChain %_ptr_Function_uint %dstTexCoord %uint_1
|
||||||
%54 = OpLoad %int %53
|
%52 = OpLoad %uint %51
|
||||||
%55 = OpISub %int %52 %54
|
%53 = OpISub %uint %50 %52
|
||||||
%57 = OpISub %int %55 %int_1
|
%54 = OpISub %uint %53 %uint_1
|
||||||
OpStore %50 %57
|
OpStore %48 %54
|
||||||
OpBranch %47
|
OpBranch %45
|
||||||
%47 = OpLabel
|
%45 = OpLabel
|
||||||
%60 = OpLoad %7 %src
|
%57 = OpLoad %7 %src
|
||||||
%61 = OpLoad %v2int %srcTexCoord
|
%58 = OpLoad %v2uint %srcTexCoord
|
||||||
%58 = OpImageFetch %v4float %60 %61 Lod %62
|
%55 = OpImageFetch %v4float %57 %58 Lod %59
|
||||||
OpStore %srcColor %58
|
OpStore %srcColor %55
|
||||||
%67 = OpLoad %7 %dst
|
%64 = OpLoad %7 %dst
|
||||||
%68 = OpLoad %v2int %dstTexCoord
|
%65 = OpLoad %v2uint %dstTexCoord
|
||||||
%66 = OpImageFetch %v4float %67 %68 Lod %62
|
%63 = OpImageFetch %v4float %64 %65 Lod %59
|
||||||
OpStore %dstColor %66
|
OpStore %dstColor %63
|
||||||
OpStore %success %true
|
OpStore %success %true
|
||||||
%79 = OpLoad %v4float %dstColor
|
%76 = OpLoad %v4float %dstColor
|
||||||
%78 = OpConvertFToU %v4uint %79
|
%75 = OpConvertFToU %v4uint %76
|
||||||
OpStore %dstColorBits %78
|
OpStore %dstColorBits %75
|
||||||
OpStore %i %81
|
OpStore %i %59
|
||||||
OpBranch %84
|
OpBranch %79
|
||||||
%84 = OpLabel
|
%79 = OpLabel
|
||||||
OpLoopMerge %85 %86 None
|
OpLoopMerge %80 %81 None
|
||||||
OpBranch %87
|
OpBranch %82
|
||||||
%87 = OpLabel
|
%82 = OpLabel
|
||||||
%89 = OpLoad %uint %i
|
%84 = OpLoad %uint %i
|
||||||
%91 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3
|
%86 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3
|
||||||
%92 = OpLoad %uint %91
|
%87 = OpLoad %uint %86
|
||||||
%93 = OpULessThan %bool %89 %92
|
%88 = OpULessThan %bool %84 %87
|
||||||
%88 = OpLogicalNot %bool %93
|
%83 = OpLogicalNot %bool %88
|
||||||
OpSelectionMerge %94 None
|
OpSelectionMerge %89 None
|
||||||
OpBranchConditional %88 %95 %94
|
OpBranchConditional %83 %90 %89
|
||||||
%95 = OpLabel
|
%90 = OpLabel
|
||||||
OpBranch %85
|
OpBranch %80
|
||||||
%94 = OpLabel
|
%89 = OpLabel
|
||||||
%97 = OpLoad %uint %i
|
%92 = OpLoad %uint %i
|
||||||
%99 = OpAccessChain %_ptr_Function_float %srcColor %97
|
%94 = OpAccessChain %_ptr_Function_float %srcColor %92
|
||||||
%100 = OpLoad %float %99
|
%95 = OpLoad %float %94
|
||||||
%96 = OpFunctionCall %uint %ConvertToFp16FloatValue %100
|
%91 = OpFunctionCall %uint %ConvertToFp16FloatValue %95
|
||||||
|
%96 = OpLoad %uint %i
|
||||||
|
%97 = OpAccessChain %_ptr_Function_uint %srcColorBits %96
|
||||||
|
OpStore %97 %91
|
||||||
|
%98 = OpLoad %bool %success
|
||||||
|
OpSelectionMerge %99 None
|
||||||
|
OpBranchConditional %98 %100 %99
|
||||||
|
%100 = OpLabel
|
||||||
%101 = OpLoad %uint %i
|
%101 = OpLoad %uint %i
|
||||||
%102 = OpAccessChain %_ptr_Function_uint %srcColorBits %101
|
%102 = OpAccessChain %_ptr_Function_uint %srcColorBits %101
|
||||||
OpStore %102 %96
|
%103 = OpLoad %uint %102
|
||||||
%103 = OpLoad %bool %success
|
%104 = OpLoad %uint %i
|
||||||
OpSelectionMerge %104 None
|
%105 = OpAccessChain %_ptr_Function_uint %dstColorBits %104
|
||||||
OpBranchConditional %103 %105 %104
|
%106 = OpLoad %uint %105
|
||||||
%105 = OpLabel
|
%107 = OpIEqual %bool %103 %106
|
||||||
%106 = OpLoad %uint %i
|
OpBranch %99
|
||||||
%107 = OpAccessChain %_ptr_Function_uint %srcColorBits %106
|
%99 = OpLabel
|
||||||
%108 = OpLoad %uint %107
|
%108 = OpPhi %bool %98 %89 %107 %100
|
||||||
|
OpStore %success %108
|
||||||
|
OpBranch %81
|
||||||
|
%81 = OpLabel
|
||||||
%109 = OpLoad %uint %i
|
%109 = OpLoad %uint %i
|
||||||
%110 = OpAccessChain %_ptr_Function_uint %dstColorBits %109
|
%110 = OpIAdd %uint %109 %uint_1
|
||||||
%111 = OpLoad %uint %110
|
OpStore %i %110
|
||||||
%112 = OpIEqual %bool %108 %111
|
OpBranch %79
|
||||||
OpBranch %104
|
%80 = OpLabel
|
||||||
%104 = OpLabel
|
%111 = OpCompositeExtract %uint %GlobalInvocationID 1
|
||||||
%113 = OpPhi %bool %103 %94 %112 %105
|
%113 = OpAccessChain %_ptr_Function_uint %size %uint_0
|
||||||
OpStore %success %113
|
%114 = OpLoad %uint %113
|
||||||
OpBranch %86
|
%115 = OpIMul %uint %111 %114
|
||||||
%86 = OpLabel
|
%116 = OpCompositeExtract %uint %GlobalInvocationID 0
|
||||||
%114 = OpLoad %uint %i
|
%117 = OpIAdd %uint %115 %116
|
||||||
%115 = OpIAdd %uint %114 %uint_1
|
OpStore %outputIndex %117
|
||||||
OpStore %i %115
|
%119 = OpLoad %bool %success
|
||||||
OpBranch %84
|
OpSelectionMerge %120 None
|
||||||
%85 = OpLabel
|
OpBranchConditional %119 %121 %122
|
||||||
%116 = OpCompositeExtract %uint %GlobalInvocationID 1
|
%121 = OpLabel
|
||||||
%118 = OpAccessChain %_ptr_Function_int %size %uint_0
|
%123 = OpLoad %uint %outputIndex
|
||||||
%119 = OpLoad %int %118
|
%125 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %123
|
||||||
%117 = OpBitcast %uint %119
|
OpStore %125 %uint_1
|
||||||
%120 = OpIMul %uint %116 %117
|
OpBranch %120
|
||||||
%121 = OpCompositeExtract %uint %GlobalInvocationID 0
|
%122 = OpLabel
|
||||||
%122 = OpIAdd %uint %120 %121
|
%126 = OpLoad %uint %outputIndex
|
||||||
OpStore %outputIndex %122
|
%127 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %126
|
||||||
%124 = OpLoad %bool %success
|
OpStore %127 %59
|
||||||
OpSelectionMerge %125 None
|
OpBranch %120
|
||||||
OpBranchConditional %124 %126 %127
|
%120 = OpLabel
|
||||||
%126 = OpLabel
|
|
||||||
%128 = OpLoad %uint %outputIndex
|
|
||||||
%130 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %128
|
|
||||||
OpStore %130 %uint_1
|
|
||||||
OpBranch %125
|
|
||||||
%127 = OpLabel
|
|
||||||
%131 = OpLoad %uint %outputIndex
|
|
||||||
%132 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %131
|
|
||||||
OpStore %132 %81
|
|
||||||
OpBranch %125
|
|
||||||
%125 = OpLabel
|
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%main = OpFunction %void None %133
|
%main = OpFunction %void None %128
|
||||||
%135 = OpLabel
|
%130 = OpLabel
|
||||||
%137 = OpLoad %v3uint %GlobalInvocationID_1
|
%132 = OpLoad %v3uint %GlobalInvocationID_1
|
||||||
%136 = OpFunctionCall %void %main_inner %137
|
%131 = OpFunctionCall %void %main_inner %132
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
|
@ -23,9 +23,9 @@ fn ConvertToFp16FloatValue(fp32 : f32) -> u32 {
|
||||||
|
|
||||||
@compute @workgroup_size(1, 1, 1)
|
@compute @workgroup_size(1, 1, 1)
|
||||||
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
var size : vec2<i32> = textureDimensions(src);
|
var size = textureDimensions(src);
|
||||||
var dstTexCoord : vec2<i32> = vec2<i32>(GlobalInvocationID.xy);
|
var dstTexCoord = GlobalInvocationID.xy;
|
||||||
var srcTexCoord : vec2<i32> = dstTexCoord;
|
var srcTexCoord = dstTexCoord;
|
||||||
if ((uniforms.dstTextureFlipY == 1u)) {
|
if ((uniforms.dstTextureFlipY == 1u)) {
|
||||||
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
|
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,8 +18,8 @@ fn aboutEqual(value : f32, expect : f32) -> bool {
|
||||||
}
|
}
|
||||||
@compute @workgroup_size(1, 1, 1)
|
@compute @workgroup_size(1, 1, 1)
|
||||||
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
let srcSize : vec2<i32> = textureDimensions(src);
|
let srcSize = textureDimensions(src);
|
||||||
let dstSize : vec2<i32> = textureDimensions(dst);
|
let dstSize = textureDimensions(dst);
|
||||||
let dstTexCoord : vec2<u32> = vec2<u32>(GlobalInvocationID.xy);
|
let dstTexCoord : vec2<u32> = vec2<u32>(GlobalInvocationID.xy);
|
||||||
let nonCoveredColor : vec4<f32> =
|
let nonCoveredColor : vec4<f32> =
|
||||||
vec4<f32>(0.0, 1.0, 0.0, 1.0); // should be green
|
vec4<f32>(0.0, 1.0, 0.0, 1.0); // should be green
|
||||||
|
@ -40,7 +40,7 @@ fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
// which is flipped and need to unpack flip during the copy.
|
// which is flipped and need to unpack flip during the copy.
|
||||||
// We need to calculate the expect y coord based on this rule.
|
// We need to calculate the expect y coord based on this rule.
|
||||||
if (uniforms.dstTextureFlipY == 1u) {
|
if (uniforms.dstTextureFlipY == 1u) {
|
||||||
srcTexCoord.y = u32(srcSize.y) - srcTexCoord.y - 1u;
|
srcTexCoord.y = srcSize.y - srcTexCoord.y - 1u;
|
||||||
}
|
}
|
||||||
|
|
||||||
let srcColor : vec4<f32> = textureLoad(src, vec2<i32>(srcTexCoord), 0);
|
let srcColor : vec4<f32> = textureLoad(src, vec2<i32>(srcTexCoord), 0);
|
||||||
|
@ -60,7 +60,7 @@ fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
aboutEqual(dstColor.a, srcColor.a);
|
aboutEqual(dstColor.a, srcColor.a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let outputIndex : u32 = GlobalInvocationID.y * u32(dstSize.x) +
|
let outputIndex : u32 = GlobalInvocationID.y * dstSize.x +
|
||||||
GlobalInvocationID.x;
|
GlobalInvocationID.x;
|
||||||
if (success) {
|
if (success) {
|
||||||
output.result[outputIndex] = 1u;
|
output.result[outputIndex] = 1u;
|
||||||
|
|
|
@ -16,10 +16,10 @@ struct tint_symbol_2 {
|
||||||
void main_inner(uint3 GlobalInvocationID) {
|
void main_inner(uint3 GlobalInvocationID) {
|
||||||
int2 tint_tmp;
|
int2 tint_tmp;
|
||||||
src.GetDimensions(tint_tmp.x, tint_tmp.y);
|
src.GetDimensions(tint_tmp.x, tint_tmp.y);
|
||||||
const int2 srcSize = tint_tmp;
|
const uint2 srcSize = tint_tmp;
|
||||||
int2 tint_tmp_1;
|
int2 tint_tmp_1;
|
||||||
tint_symbol.GetDimensions(tint_tmp_1.x, tint_tmp_1.y);
|
tint_symbol.GetDimensions(tint_tmp_1.x, tint_tmp_1.y);
|
||||||
const int2 dstSize = tint_tmp_1;
|
const uint2 dstSize = tint_tmp_1;
|
||||||
const uint2 dstTexCoord = uint2(GlobalInvocationID.xy);
|
const uint2 dstTexCoord = uint2(GlobalInvocationID.xy);
|
||||||
const float4 nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
|
const float4 nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
@ -44,7 +44,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
||||||
} else {
|
} else {
|
||||||
uint2 srcTexCoord = ((dstTexCoord - uniforms[1].xy) + uniforms[0].zw);
|
uint2 srcTexCoord = ((dstTexCoord - uniforms[1].xy) + uniforms[0].zw);
|
||||||
if ((uniforms[0].x == 1u)) {
|
if ((uniforms[0].x == 1u)) {
|
||||||
srcTexCoord.y = ((uint(srcSize.y) - srcTexCoord.y) - 1u);
|
srcTexCoord.y = ((srcSize.y - srcTexCoord.y) - 1u);
|
||||||
}
|
}
|
||||||
const float4 srcColor = src.Load(int3(int2(srcTexCoord), 0));
|
const float4 srcColor = src.Load(int3(int2(srcTexCoord), 0));
|
||||||
const float4 dstColor = tint_symbol.Load(int3(int2(dstTexCoord), 0));
|
const float4 dstColor = tint_symbol.Load(int3(int2(dstTexCoord), 0));
|
||||||
|
@ -78,7 +78,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
||||||
success = tint_symbol_5;
|
success = tint_symbol_5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x);
|
const uint outputIndex = ((GlobalInvocationID.y * dstSize.x) + GlobalInvocationID.x);
|
||||||
if (success) {
|
if (success) {
|
||||||
output.Store((4u * outputIndex), asuint(1u));
|
output.Store((4u * outputIndex), asuint(1u));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -16,10 +16,10 @@ struct tint_symbol_2 {
|
||||||
void main_inner(uint3 GlobalInvocationID) {
|
void main_inner(uint3 GlobalInvocationID) {
|
||||||
int2 tint_tmp;
|
int2 tint_tmp;
|
||||||
src.GetDimensions(tint_tmp.x, tint_tmp.y);
|
src.GetDimensions(tint_tmp.x, tint_tmp.y);
|
||||||
const int2 srcSize = tint_tmp;
|
const uint2 srcSize = tint_tmp;
|
||||||
int2 tint_tmp_1;
|
int2 tint_tmp_1;
|
||||||
tint_symbol.GetDimensions(tint_tmp_1.x, tint_tmp_1.y);
|
tint_symbol.GetDimensions(tint_tmp_1.x, tint_tmp_1.y);
|
||||||
const int2 dstSize = tint_tmp_1;
|
const uint2 dstSize = tint_tmp_1;
|
||||||
const uint2 dstTexCoord = uint2(GlobalInvocationID.xy);
|
const uint2 dstTexCoord = uint2(GlobalInvocationID.xy);
|
||||||
const float4 nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
|
const float4 nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
@ -44,7 +44,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
||||||
} else {
|
} else {
|
||||||
uint2 srcTexCoord = ((dstTexCoord - uniforms[1].xy) + uniforms[0].zw);
|
uint2 srcTexCoord = ((dstTexCoord - uniforms[1].xy) + uniforms[0].zw);
|
||||||
if ((uniforms[0].x == 1u)) {
|
if ((uniforms[0].x == 1u)) {
|
||||||
srcTexCoord.y = ((uint(srcSize.y) - srcTexCoord.y) - 1u);
|
srcTexCoord.y = ((srcSize.y - srcTexCoord.y) - 1u);
|
||||||
}
|
}
|
||||||
const float4 srcColor = src.Load(int3(int2(srcTexCoord), 0));
|
const float4 srcColor = src.Load(int3(int2(srcTexCoord), 0));
|
||||||
const float4 dstColor = tint_symbol.Load(int3(int2(dstTexCoord), 0));
|
const float4 dstColor = tint_symbol.Load(int3(int2(dstTexCoord), 0));
|
||||||
|
@ -78,7 +78,7 @@ void main_inner(uint3 GlobalInvocationID) {
|
||||||
success = tint_symbol_5;
|
success = tint_symbol_5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x);
|
const uint outputIndex = ((GlobalInvocationID.y * dstSize.x) + GlobalInvocationID.x);
|
||||||
if (success) {
|
if (success) {
|
||||||
output.Store((4u * outputIndex), asuint(1u));
|
output.Store((4u * outputIndex), asuint(1u));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -19,8 +19,8 @@ bool aboutEqual(float value, float expect) {
|
||||||
uniform highp sampler2D src_1;
|
uniform highp sampler2D src_1;
|
||||||
uniform highp sampler2D dst_1;
|
uniform highp sampler2D dst_1;
|
||||||
void tint_symbol_1(uvec3 GlobalInvocationID) {
|
void tint_symbol_1(uvec3 GlobalInvocationID) {
|
||||||
ivec2 srcSize = textureSize(src_1, 0);
|
uvec2 srcSize = uvec2(textureSize(src_1, 0));
|
||||||
ivec2 dstSize = textureSize(dst_1, 0);
|
uvec2 dstSize = uvec2(textureSize(dst_1, 0));
|
||||||
uvec2 dstTexCoord = uvec2(GlobalInvocationID.xy);
|
uvec2 dstTexCoord = uvec2(GlobalInvocationID.xy);
|
||||||
vec4 nonCoveredColor = vec4(0.0f, 1.0f, 0.0f, 1.0f);
|
vec4 nonCoveredColor = vec4(0.0f, 1.0f, 0.0f, 1.0f);
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
@ -45,7 +45,7 @@ void tint_symbol_1(uvec3 GlobalInvocationID) {
|
||||||
} else {
|
} else {
|
||||||
uvec2 srcTexCoord = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin);
|
uvec2 srcTexCoord = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin);
|
||||||
if ((uniforms.dstTextureFlipY == 1u)) {
|
if ((uniforms.dstTextureFlipY == 1u)) {
|
||||||
srcTexCoord.y = ((uint(srcSize.y) - srcTexCoord.y) - 1u);
|
srcTexCoord.y = ((srcSize.y - srcTexCoord.y) - 1u);
|
||||||
}
|
}
|
||||||
vec4 srcColor = texelFetch(src_1, ivec2(srcTexCoord), 0);
|
vec4 srcColor = texelFetch(src_1, ivec2(srcTexCoord), 0);
|
||||||
vec4 dstColor = texelFetch(dst_1, ivec2(dstTexCoord), 0);
|
vec4 dstColor = texelFetch(dst_1, ivec2(dstTexCoord), 0);
|
||||||
|
@ -79,7 +79,7 @@ void tint_symbol_1(uvec3 GlobalInvocationID) {
|
||||||
success = tint_symbol_4;
|
success = tint_symbol_4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x);
|
uint outputIndex = ((GlobalInvocationID.y * dstSize.x) + GlobalInvocationID.x);
|
||||||
if (success) {
|
if (success) {
|
||||||
tint_symbol.result[outputIndex] = 1u;
|
tint_symbol.result[outputIndex] = 1u;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -31,8 +31,8 @@ bool aboutEqual(float value, float expect) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, const constant Uniforms* const tint_symbol_9, device OutputBuf* const tint_symbol_10) {
|
void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, const constant Uniforms* const tint_symbol_9, device OutputBuf* const tint_symbol_10) {
|
||||||
int2 const srcSize = int2(tint_symbol_7.get_width(), tint_symbol_7.get_height());
|
uint2 const srcSize = uint2(tint_symbol_7.get_width(), tint_symbol_7.get_height());
|
||||||
int2 const dstSize = int2(tint_symbol_8.get_width(), tint_symbol_8.get_height());
|
uint2 const dstSize = uint2(tint_symbol_8.get_width(), tint_symbol_8.get_height());
|
||||||
uint2 const dstTexCoord = uint2(uint3(GlobalInvocationID).xy);
|
uint2 const dstTexCoord = uint2(uint3(GlobalInvocationID).xy);
|
||||||
float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
|
float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
@ -41,7 +41,7 @@ void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample
|
||||||
} else {
|
} else {
|
||||||
uint2 srcTexCoord = ((dstTexCoord - (*(tint_symbol_9)).dstCopyOrigin) + (*(tint_symbol_9)).srcCopyOrigin);
|
uint2 srcTexCoord = ((dstTexCoord - (*(tint_symbol_9)).dstCopyOrigin) + (*(tint_symbol_9)).srcCopyOrigin);
|
||||||
if (((*(tint_symbol_9)).dstTextureFlipY == 1u)) {
|
if (((*(tint_symbol_9)).dstTextureFlipY == 1u)) {
|
||||||
srcTexCoord[1] = ((uint(srcSize[1]) - srcTexCoord[1]) - 1u);
|
srcTexCoord[1] = ((srcSize[1] - srcTexCoord[1]) - 1u);
|
||||||
}
|
}
|
||||||
float4 const srcColor = tint_symbol_7.read(uint2(int2(srcTexCoord)), 0);
|
float4 const srcColor = tint_symbol_7.read(uint2(int2(srcTexCoord)), 0);
|
||||||
float4 const dstColor = tint_symbol_8.read(uint2(int2(dstTexCoord)), 0);
|
float4 const dstColor = tint_symbol_8.read(uint2(int2(dstTexCoord)), 0);
|
||||||
|
@ -75,7 +75,7 @@ void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample
|
||||||
success = tint_symbol_3;
|
success = tint_symbol_3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uint const outputIndex = ((GlobalInvocationID[1] * uint(dstSize[0])) + GlobalInvocationID[0]);
|
uint const outputIndex = ((GlobalInvocationID[1] * dstSize[0]) + GlobalInvocationID[0]);
|
||||||
if (success) {
|
if (success) {
|
||||||
(*(tint_symbol_10)).result[outputIndex] = 1u;
|
(*(tint_symbol_10)).result[outputIndex] = 1u;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
; Bound: 207
|
; Bound: 205
|
||||||
; Schema: 0
|
; Schema: 0
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -78,20 +78,20 @@
|
||||||
%void = OpTypeVoid
|
%void = OpTypeVoid
|
||||||
%29 = OpTypeFunction %void %v3uint
|
%29 = OpTypeFunction %void %v3uint
|
||||||
%int = OpTypeInt 32 1
|
%int = OpTypeInt 32 1
|
||||||
%v2int = OpTypeVector %int 2
|
|
||||||
%int_0 = OpConstant %int 0
|
%int_0 = OpConstant %int 0
|
||||||
%v4float = OpTypeVector %float 4
|
%v4float = OpTypeVector %float 4
|
||||||
%44 = OpConstantNull %float
|
%43 = OpConstantNull %float
|
||||||
%float_1 = OpConstant %float 1
|
%float_1 = OpConstant %float 1
|
||||||
%46 = OpConstantComposite %v4float %44 %float_1 %44 %float_1
|
%45 = OpConstantComposite %v4float %43 %float_1 %43 %float_1
|
||||||
%true = OpConstantTrue %bool
|
%true = OpConstantTrue %bool
|
||||||
%_ptr_Function_bool = OpTypePointer Function %bool
|
%_ptr_Function_bool = OpTypePointer Function %bool
|
||||||
%50 = OpConstantNull %bool
|
%49 = OpConstantNull %bool
|
||||||
%uint_3 = OpConstant %uint 3
|
%uint_3 = OpConstant %uint 3
|
||||||
%uint_0 = OpConstant %uint 0
|
%uint_0 = OpConstant %uint 0
|
||||||
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
||||||
%uint_1 = OpConstant %uint 1
|
%uint_1 = OpConstant %uint 1
|
||||||
%uint_4 = OpConstant %uint 4
|
%uint_4 = OpConstant %uint 4
|
||||||
|
%v2int = OpTypeVector %int 2
|
||||||
%97 = OpConstantNull %int
|
%97 = OpConstantNull %int
|
||||||
%v4bool = OpTypeVector %bool 4
|
%v4bool = OpTypeVector %bool 4
|
||||||
%_ptr_Uniform_v2uint = OpTypePointer Uniform %v2uint
|
%_ptr_Uniform_v2uint = OpTypePointer Uniform %v2uint
|
||||||
|
@ -100,8 +100,8 @@
|
||||||
%111 = OpConstantNull %v2uint
|
%111 = OpConstantNull %v2uint
|
||||||
%_ptr_Function_uint = OpTypePointer Function %uint
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||||
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
|
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
|
||||||
%201 = OpConstantNull %uint
|
%199 = OpConstantNull %uint
|
||||||
%202 = OpTypeFunction %void
|
%200 = OpTypeFunction %void
|
||||||
%aboutEqual = OpFunction %bool None %18
|
%aboutEqual = OpFunction %bool None %18
|
||||||
%value = OpFunctionParameter %float
|
%value = OpFunctionParameter %float
|
||||||
%expect = OpFunctionParameter %float
|
%expect = OpFunctionParameter %float
|
||||||
|
@ -114,81 +114,81 @@
|
||||||
%main_inner = OpFunction %void None %29
|
%main_inner = OpFunction %void None %29
|
||||||
%GlobalInvocationID = OpFunctionParameter %v3uint
|
%GlobalInvocationID = OpFunctionParameter %v3uint
|
||||||
%33 = OpLabel
|
%33 = OpLabel
|
||||||
%success = OpVariable %_ptr_Function_bool Function %50
|
%success = OpVariable %_ptr_Function_bool Function %49
|
||||||
%srcTexCoord = OpVariable %_ptr_Function_v2uint Function %111
|
%srcTexCoord = OpVariable %_ptr_Function_v2uint Function %111
|
||||||
%tint_symbol_1 = OpVariable %_ptr_Function_bool Function %50
|
%tint_symbol_1 = OpVariable %_ptr_Function_bool Function %49
|
||||||
%tint_symbol = OpVariable %_ptr_Function_bool Function %50
|
%tint_symbol = OpVariable %_ptr_Function_bool Function %49
|
||||||
%tint_symbol_5 = OpVariable %_ptr_Function_bool Function %50
|
%tint_symbol_5 = OpVariable %_ptr_Function_bool Function %49
|
||||||
%tint_symbol_4 = OpVariable %_ptr_Function_bool Function %50
|
%tint_symbol_4 = OpVariable %_ptr_Function_bool Function %49
|
||||||
%tint_symbol_3 = OpVariable %_ptr_Function_bool Function %50
|
%tint_symbol_3 = OpVariable %_ptr_Function_bool Function %49
|
||||||
%tint_symbol_2 = OpVariable %_ptr_Function_bool Function %50
|
%tint_symbol_2 = OpVariable %_ptr_Function_bool Function %49
|
||||||
%37 = OpLoad %7 %src
|
%35 = OpLoad %7 %src
|
||||||
%34 = OpImageQuerySizeLod %v2int %37 %int_0
|
%34 = OpImageQuerySizeLod %v2uint %35 %int_0
|
||||||
%40 = OpLoad %7 %dst
|
%39 = OpLoad %7 %dst
|
||||||
%39 = OpImageQuerySizeLod %v2int %40 %int_0
|
%38 = OpImageQuerySizeLod %v2uint %39 %int_0
|
||||||
%42 = OpVectorShuffle %v2uint %GlobalInvocationID %GlobalInvocationID 0 1
|
%41 = OpVectorShuffle %v2uint %GlobalInvocationID %GlobalInvocationID 0 1
|
||||||
OpStore %success %true
|
OpStore %success %true
|
||||||
%51 = OpCompositeExtract %uint %42 0
|
%50 = OpCompositeExtract %uint %41 0
|
||||||
%55 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %uint_0
|
%54 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %uint_0
|
||||||
%56 = OpLoad %uint %55
|
%55 = OpLoad %uint %54
|
||||||
%57 = OpULessThan %bool %51 %56
|
%56 = OpULessThan %bool %50 %55
|
||||||
OpSelectionMerge %58 None
|
OpSelectionMerge %57 None
|
||||||
OpBranchConditional %57 %58 %59
|
OpBranchConditional %56 %57 %58
|
||||||
%59 = OpLabel
|
|
||||||
%60 = OpCompositeExtract %uint %42 1
|
|
||||||
%62 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %uint_1
|
|
||||||
%63 = OpLoad %uint %62
|
|
||||||
%64 = OpULessThan %bool %60 %63
|
|
||||||
OpBranch %58
|
|
||||||
%58 = OpLabel
|
%58 = OpLabel
|
||||||
%65 = OpPhi %bool %57 %33 %64 %59
|
%59 = OpCompositeExtract %uint %41 1
|
||||||
OpSelectionMerge %66 None
|
%61 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %uint_1
|
||||||
OpBranchConditional %65 %66 %67
|
%62 = OpLoad %uint %61
|
||||||
%67 = OpLabel
|
%63 = OpULessThan %bool %59 %62
|
||||||
%68 = OpCompositeExtract %uint %42 0
|
OpBranch %57
|
||||||
%69 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %uint_0
|
%57 = OpLabel
|
||||||
%70 = OpLoad %uint %69
|
%64 = OpPhi %bool %56 %33 %63 %58
|
||||||
%72 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_4 %uint_0
|
OpSelectionMerge %65 None
|
||||||
%73 = OpLoad %uint %72
|
OpBranchConditional %64 %65 %66
|
||||||
%74 = OpIAdd %uint %70 %73
|
|
||||||
%75 = OpUGreaterThanEqual %bool %68 %74
|
|
||||||
OpBranch %66
|
|
||||||
%66 = OpLabel
|
%66 = OpLabel
|
||||||
%76 = OpPhi %bool %65 %58 %75 %67
|
%67 = OpCompositeExtract %uint %41 0
|
||||||
OpSelectionMerge %77 None
|
%68 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %uint_0
|
||||||
OpBranchConditional %76 %77 %78
|
%69 = OpLoad %uint %68
|
||||||
%78 = OpLabel
|
%71 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_4 %uint_0
|
||||||
%79 = OpCompositeExtract %uint %42 1
|
%72 = OpLoad %uint %71
|
||||||
%80 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %uint_1
|
%73 = OpIAdd %uint %69 %72
|
||||||
%81 = OpLoad %uint %80
|
%74 = OpUGreaterThanEqual %bool %67 %73
|
||||||
%82 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_4 %uint_1
|
OpBranch %65
|
||||||
%83 = OpLoad %uint %82
|
%65 = OpLabel
|
||||||
%84 = OpIAdd %uint %81 %83
|
%75 = OpPhi %bool %64 %57 %74 %66
|
||||||
%85 = OpUGreaterThanEqual %bool %79 %84
|
OpSelectionMerge %76 None
|
||||||
OpBranch %77
|
OpBranchConditional %75 %76 %77
|
||||||
%77 = OpLabel
|
%77 = OpLabel
|
||||||
%86 = OpPhi %bool %76 %66 %85 %78
|
%78 = OpCompositeExtract %uint %41 1
|
||||||
OpSelectionMerge %87 None
|
%79 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_3 %uint_1
|
||||||
OpBranchConditional %86 %88 %89
|
%80 = OpLoad %uint %79
|
||||||
%88 = OpLabel
|
%81 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_4 %uint_1
|
||||||
%90 = OpLoad %bool %success
|
%82 = OpLoad %uint %81
|
||||||
OpSelectionMerge %91 None
|
%83 = OpIAdd %uint %80 %82
|
||||||
OpBranchConditional %90 %92 %91
|
%84 = OpUGreaterThanEqual %bool %78 %83
|
||||||
%92 = OpLabel
|
OpBranch %76
|
||||||
%95 = OpLoad %7 %dst
|
%76 = OpLabel
|
||||||
%96 = OpBitcast %v2int %42
|
%85 = OpPhi %bool %75 %65 %84 %77
|
||||||
%94 = OpImageFetch %v4float %95 %96 Lod %97
|
OpSelectionMerge %86 None
|
||||||
%98 = OpFOrdEqual %v4bool %94 %46
|
OpBranchConditional %85 %87 %88
|
||||||
%93 = OpAll %bool %98
|
%87 = OpLabel
|
||||||
OpBranch %91
|
%89 = OpLoad %bool %success
|
||||||
|
OpSelectionMerge %90 None
|
||||||
|
OpBranchConditional %89 %91 %90
|
||||||
%91 = OpLabel
|
%91 = OpLabel
|
||||||
%100 = OpPhi %bool %90 %88 %93 %92
|
%94 = OpLoad %7 %dst
|
||||||
|
%95 = OpBitcast %v2int %41
|
||||||
|
%93 = OpImageFetch %v4float %94 %95 Lod %97
|
||||||
|
%98 = OpFOrdEqual %v4bool %93 %45
|
||||||
|
%92 = OpAll %bool %98
|
||||||
|
OpBranch %90
|
||||||
|
%90 = OpLabel
|
||||||
|
%100 = OpPhi %bool %89 %87 %92 %91
|
||||||
OpStore %success %100
|
OpStore %success %100
|
||||||
OpBranch %87
|
OpBranch %86
|
||||||
%89 = OpLabel
|
%88 = OpLabel
|
||||||
%102 = OpAccessChain %_ptr_Uniform_v2uint %uniforms %uint_3
|
%102 = OpAccessChain %_ptr_Uniform_v2uint %uniforms %uint_3
|
||||||
%103 = OpLoad %v2uint %102
|
%103 = OpLoad %v2uint %102
|
||||||
%104 = OpISub %v2uint %42 %103
|
%104 = OpISub %v2uint %41 %103
|
||||||
%106 = OpAccessChain %_ptr_Uniform_v2uint %uniforms %uint_2
|
%106 = OpAccessChain %_ptr_Uniform_v2uint %uniforms %uint_2
|
||||||
%107 = OpLoad %v2uint %106
|
%107 = OpLoad %v2uint %106
|
||||||
%108 = OpIAdd %v2uint %104 %107
|
%108 = OpIAdd %v2uint %104 %107
|
||||||
|
@ -200,133 +200,131 @@
|
||||||
OpBranchConditional %114 %116 %115
|
OpBranchConditional %114 %116 %115
|
||||||
%116 = OpLabel
|
%116 = OpLabel
|
||||||
%118 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1
|
%118 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1
|
||||||
%120 = OpCompositeExtract %int %34 1
|
%119 = OpCompositeExtract %uint %34 1
|
||||||
%119 = OpBitcast %uint %120
|
%120 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1
|
||||||
%121 = OpAccessChain %_ptr_Function_uint %srcTexCoord %uint_1
|
%121 = OpLoad %uint %120
|
||||||
%122 = OpLoad %uint %121
|
%122 = OpISub %uint %119 %121
|
||||||
%123 = OpISub %uint %119 %122
|
%123 = OpISub %uint %122 %uint_1
|
||||||
%124 = OpISub %uint %123 %uint_1
|
OpStore %118 %123
|
||||||
OpStore %118 %124
|
|
||||||
OpBranch %115
|
OpBranch %115
|
||||||
%115 = OpLabel
|
%115 = OpLabel
|
||||||
%126 = OpLoad %7 %src
|
%125 = OpLoad %7 %src
|
||||||
%128 = OpLoad %v2uint %srcTexCoord
|
%127 = OpLoad %v2uint %srcTexCoord
|
||||||
%127 = OpBitcast %v2int %128
|
%126 = OpBitcast %v2int %127
|
||||||
%125 = OpImageFetch %v4float %126 %127 Lod %97
|
%124 = OpImageFetch %v4float %125 %126 Lod %97
|
||||||
%130 = OpLoad %7 %dst
|
%129 = OpLoad %7 %dst
|
||||||
%131 = OpBitcast %v2int %42
|
%130 = OpBitcast %v2int %41
|
||||||
%129 = OpImageFetch %v4float %130 %131 Lod %97
|
%128 = OpImageFetch %v4float %129 %130 Lod %97
|
||||||
%132 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
|
%131 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
|
||||||
%133 = OpLoad %uint %132
|
%132 = OpLoad %uint %131
|
||||||
%134 = OpIEqual %bool %133 %uint_2
|
%133 = OpIEqual %bool %132 %uint_2
|
||||||
OpSelectionMerge %135 None
|
OpSelectionMerge %134 None
|
||||||
OpBranchConditional %134 %136 %137
|
OpBranchConditional %133 %135 %136
|
||||||
%136 = OpLabel
|
|
||||||
%138 = OpLoad %bool %success
|
|
||||||
OpStore %tint_symbol_1 %138
|
|
||||||
%140 = OpLoad %bool %tint_symbol_1
|
|
||||||
OpSelectionMerge %141 None
|
|
||||||
OpBranchConditional %140 %142 %141
|
|
||||||
%142 = OpLabel
|
|
||||||
%144 = OpCompositeExtract %float %129 0
|
|
||||||
%145 = OpCompositeExtract %float %125 0
|
|
||||||
%143 = OpFunctionCall %bool %aboutEqual %144 %145
|
|
||||||
OpStore %tint_symbol_1 %143
|
|
||||||
OpBranch %141
|
|
||||||
%141 = OpLabel
|
|
||||||
%146 = OpLoad %bool %tint_symbol_1
|
|
||||||
OpStore %tint_symbol %146
|
|
||||||
%148 = OpLoad %bool %tint_symbol
|
|
||||||
OpSelectionMerge %149 None
|
|
||||||
OpBranchConditional %148 %150 %149
|
|
||||||
%150 = OpLabel
|
|
||||||
%152 = OpCompositeExtract %float %129 1
|
|
||||||
%153 = OpCompositeExtract %float %125 1
|
|
||||||
%151 = OpFunctionCall %bool %aboutEqual %152 %153
|
|
||||||
OpStore %tint_symbol %151
|
|
||||||
OpBranch %149
|
|
||||||
%149 = OpLabel
|
|
||||||
%154 = OpLoad %bool %tint_symbol
|
|
||||||
OpStore %success %154
|
|
||||||
OpBranch %135
|
|
||||||
%137 = OpLabel
|
|
||||||
%155 = OpLoad %bool %success
|
|
||||||
OpStore %tint_symbol_5 %155
|
|
||||||
%157 = OpLoad %bool %tint_symbol_5
|
|
||||||
OpSelectionMerge %158 None
|
|
||||||
OpBranchConditional %157 %159 %158
|
|
||||||
%159 = OpLabel
|
|
||||||
%161 = OpCompositeExtract %float %129 0
|
|
||||||
%162 = OpCompositeExtract %float %125 0
|
|
||||||
%160 = OpFunctionCall %bool %aboutEqual %161 %162
|
|
||||||
OpStore %tint_symbol_5 %160
|
|
||||||
OpBranch %158
|
|
||||||
%158 = OpLabel
|
|
||||||
%163 = OpLoad %bool %tint_symbol_5
|
|
||||||
OpStore %tint_symbol_4 %163
|
|
||||||
%165 = OpLoad %bool %tint_symbol_4
|
|
||||||
OpSelectionMerge %166 None
|
|
||||||
OpBranchConditional %165 %167 %166
|
|
||||||
%167 = OpLabel
|
|
||||||
%169 = OpCompositeExtract %float %129 1
|
|
||||||
%170 = OpCompositeExtract %float %125 1
|
|
||||||
%168 = OpFunctionCall %bool %aboutEqual %169 %170
|
|
||||||
OpStore %tint_symbol_4 %168
|
|
||||||
OpBranch %166
|
|
||||||
%166 = OpLabel
|
|
||||||
%171 = OpLoad %bool %tint_symbol_4
|
|
||||||
OpStore %tint_symbol_3 %171
|
|
||||||
%173 = OpLoad %bool %tint_symbol_3
|
|
||||||
OpSelectionMerge %174 None
|
|
||||||
OpBranchConditional %173 %175 %174
|
|
||||||
%175 = OpLabel
|
|
||||||
%177 = OpCompositeExtract %float %129 2
|
|
||||||
%178 = OpCompositeExtract %float %125 2
|
|
||||||
%176 = OpFunctionCall %bool %aboutEqual %177 %178
|
|
||||||
OpStore %tint_symbol_3 %176
|
|
||||||
OpBranch %174
|
|
||||||
%174 = OpLabel
|
|
||||||
%179 = OpLoad %bool %tint_symbol_3
|
|
||||||
OpStore %tint_symbol_2 %179
|
|
||||||
%181 = OpLoad %bool %tint_symbol_2
|
|
||||||
OpSelectionMerge %182 None
|
|
||||||
OpBranchConditional %181 %183 %182
|
|
||||||
%183 = OpLabel
|
|
||||||
%185 = OpCompositeExtract %float %129 3
|
|
||||||
%186 = OpCompositeExtract %float %125 3
|
|
||||||
%184 = OpFunctionCall %bool %aboutEqual %185 %186
|
|
||||||
OpStore %tint_symbol_2 %184
|
|
||||||
OpBranch %182
|
|
||||||
%182 = OpLabel
|
|
||||||
%187 = OpLoad %bool %tint_symbol_2
|
|
||||||
OpStore %success %187
|
|
||||||
OpBranch %135
|
|
||||||
%135 = OpLabel
|
%135 = OpLabel
|
||||||
OpBranch %87
|
%137 = OpLoad %bool %success
|
||||||
%87 = OpLabel
|
OpStore %tint_symbol_1 %137
|
||||||
%188 = OpCompositeExtract %uint %GlobalInvocationID 1
|
%139 = OpLoad %bool %tint_symbol_1
|
||||||
%190 = OpCompositeExtract %int %39 0
|
OpSelectionMerge %140 None
|
||||||
%189 = OpBitcast %uint %190
|
OpBranchConditional %139 %141 %140
|
||||||
%191 = OpIMul %uint %188 %189
|
%141 = OpLabel
|
||||||
%192 = OpCompositeExtract %uint %GlobalInvocationID 0
|
%143 = OpCompositeExtract %float %128 0
|
||||||
%193 = OpIAdd %uint %191 %192
|
%144 = OpCompositeExtract %float %124 0
|
||||||
%194 = OpLoad %bool %success
|
%142 = OpFunctionCall %bool %aboutEqual %143 %144
|
||||||
OpSelectionMerge %195 None
|
OpStore %tint_symbol_1 %142
|
||||||
OpBranchConditional %194 %196 %197
|
OpBranch %140
|
||||||
%196 = OpLabel
|
%140 = OpLabel
|
||||||
%199 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %193
|
%145 = OpLoad %bool %tint_symbol_1
|
||||||
OpStore %199 %uint_1
|
OpStore %tint_symbol %145
|
||||||
OpBranch %195
|
%147 = OpLoad %bool %tint_symbol
|
||||||
%197 = OpLabel
|
OpSelectionMerge %148 None
|
||||||
%200 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %193
|
OpBranchConditional %147 %149 %148
|
||||||
OpStore %200 %201
|
%149 = OpLabel
|
||||||
OpBranch %195
|
%151 = OpCompositeExtract %float %128 1
|
||||||
|
%152 = OpCompositeExtract %float %124 1
|
||||||
|
%150 = OpFunctionCall %bool %aboutEqual %151 %152
|
||||||
|
OpStore %tint_symbol %150
|
||||||
|
OpBranch %148
|
||||||
|
%148 = OpLabel
|
||||||
|
%153 = OpLoad %bool %tint_symbol
|
||||||
|
OpStore %success %153
|
||||||
|
OpBranch %134
|
||||||
|
%136 = OpLabel
|
||||||
|
%154 = OpLoad %bool %success
|
||||||
|
OpStore %tint_symbol_5 %154
|
||||||
|
%156 = OpLoad %bool %tint_symbol_5
|
||||||
|
OpSelectionMerge %157 None
|
||||||
|
OpBranchConditional %156 %158 %157
|
||||||
|
%158 = OpLabel
|
||||||
|
%160 = OpCompositeExtract %float %128 0
|
||||||
|
%161 = OpCompositeExtract %float %124 0
|
||||||
|
%159 = OpFunctionCall %bool %aboutEqual %160 %161
|
||||||
|
OpStore %tint_symbol_5 %159
|
||||||
|
OpBranch %157
|
||||||
|
%157 = OpLabel
|
||||||
|
%162 = OpLoad %bool %tint_symbol_5
|
||||||
|
OpStore %tint_symbol_4 %162
|
||||||
|
%164 = OpLoad %bool %tint_symbol_4
|
||||||
|
OpSelectionMerge %165 None
|
||||||
|
OpBranchConditional %164 %166 %165
|
||||||
|
%166 = OpLabel
|
||||||
|
%168 = OpCompositeExtract %float %128 1
|
||||||
|
%169 = OpCompositeExtract %float %124 1
|
||||||
|
%167 = OpFunctionCall %bool %aboutEqual %168 %169
|
||||||
|
OpStore %tint_symbol_4 %167
|
||||||
|
OpBranch %165
|
||||||
|
%165 = OpLabel
|
||||||
|
%170 = OpLoad %bool %tint_symbol_4
|
||||||
|
OpStore %tint_symbol_3 %170
|
||||||
|
%172 = OpLoad %bool %tint_symbol_3
|
||||||
|
OpSelectionMerge %173 None
|
||||||
|
OpBranchConditional %172 %174 %173
|
||||||
|
%174 = OpLabel
|
||||||
|
%176 = OpCompositeExtract %float %128 2
|
||||||
|
%177 = OpCompositeExtract %float %124 2
|
||||||
|
%175 = OpFunctionCall %bool %aboutEqual %176 %177
|
||||||
|
OpStore %tint_symbol_3 %175
|
||||||
|
OpBranch %173
|
||||||
|
%173 = OpLabel
|
||||||
|
%178 = OpLoad %bool %tint_symbol_3
|
||||||
|
OpStore %tint_symbol_2 %178
|
||||||
|
%180 = OpLoad %bool %tint_symbol_2
|
||||||
|
OpSelectionMerge %181 None
|
||||||
|
OpBranchConditional %180 %182 %181
|
||||||
|
%182 = OpLabel
|
||||||
|
%184 = OpCompositeExtract %float %128 3
|
||||||
|
%185 = OpCompositeExtract %float %124 3
|
||||||
|
%183 = OpFunctionCall %bool %aboutEqual %184 %185
|
||||||
|
OpStore %tint_symbol_2 %183
|
||||||
|
OpBranch %181
|
||||||
|
%181 = OpLabel
|
||||||
|
%186 = OpLoad %bool %tint_symbol_2
|
||||||
|
OpStore %success %186
|
||||||
|
OpBranch %134
|
||||||
|
%134 = OpLabel
|
||||||
|
OpBranch %86
|
||||||
|
%86 = OpLabel
|
||||||
|
%187 = OpCompositeExtract %uint %GlobalInvocationID 1
|
||||||
|
%188 = OpCompositeExtract %uint %38 0
|
||||||
|
%189 = OpIMul %uint %187 %188
|
||||||
|
%190 = OpCompositeExtract %uint %GlobalInvocationID 0
|
||||||
|
%191 = OpIAdd %uint %189 %190
|
||||||
|
%192 = OpLoad %bool %success
|
||||||
|
OpSelectionMerge %193 None
|
||||||
|
OpBranchConditional %192 %194 %195
|
||||||
|
%194 = OpLabel
|
||||||
|
%197 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %191
|
||||||
|
OpStore %197 %uint_1
|
||||||
|
OpBranch %193
|
||||||
%195 = OpLabel
|
%195 = OpLabel
|
||||||
|
%198 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %191
|
||||||
|
OpStore %198 %199
|
||||||
|
OpBranch %193
|
||||||
|
%193 = OpLabel
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%main = OpFunction %void None %202
|
%main = OpFunction %void None %200
|
||||||
%204 = OpLabel
|
%202 = OpLabel
|
||||||
%206 = OpLoad %v3uint %GlobalInvocationID_1
|
%204 = OpLoad %v3uint %GlobalInvocationID_1
|
||||||
%205 = OpFunctionCall %void %main_inner %206
|
%203 = OpFunctionCall %void %main_inner %204
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
|
@ -24,8 +24,8 @@ fn aboutEqual(value : f32, expect : f32) -> bool {
|
||||||
|
|
||||||
@compute @workgroup_size(1, 1, 1)
|
@compute @workgroup_size(1, 1, 1)
|
||||||
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
let srcSize : vec2<i32> = textureDimensions(src);
|
let srcSize = textureDimensions(src);
|
||||||
let dstSize : vec2<i32> = textureDimensions(dst);
|
let dstSize = textureDimensions(dst);
|
||||||
let dstTexCoord : vec2<u32> = vec2<u32>(GlobalInvocationID.xy);
|
let dstTexCoord : vec2<u32> = vec2<u32>(GlobalInvocationID.xy);
|
||||||
let nonCoveredColor : vec4<f32> = vec4<f32>(0.0, 1.0, 0.0, 1.0);
|
let nonCoveredColor : vec4<f32> = vec4<f32>(0.0, 1.0, 0.0, 1.0);
|
||||||
var success : bool = true;
|
var success : bool = true;
|
||||||
|
@ -34,7 +34,7 @@ fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
} else {
|
} else {
|
||||||
var srcTexCoord : vec2<u32> = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin);
|
var srcTexCoord : vec2<u32> = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin);
|
||||||
if ((uniforms.dstTextureFlipY == 1u)) {
|
if ((uniforms.dstTextureFlipY == 1u)) {
|
||||||
srcTexCoord.y = ((u32(srcSize.y) - srcTexCoord.y) - 1u);
|
srcTexCoord.y = ((srcSize.y - srcTexCoord.y) - 1u);
|
||||||
}
|
}
|
||||||
let srcColor : vec4<f32> = textureLoad(src, vec2<i32>(srcTexCoord), 0);
|
let srcColor : vec4<f32> = textureLoad(src, vec2<i32>(srcTexCoord), 0);
|
||||||
let dstColor : vec4<f32> = textureLoad(dst, vec2<i32>(dstTexCoord), 0);
|
let dstColor : vec4<f32> = textureLoad(dst, vec2<i32>(dstTexCoord), 0);
|
||||||
|
@ -44,7 +44,7 @@ fn main(@builtin(global_invocation_id) GlobalInvocationID : vec3<u32>) {
|
||||||
success = ((((success && aboutEqual(dstColor.r, srcColor.r)) && aboutEqual(dstColor.g, srcColor.g)) && aboutEqual(dstColor.b, srcColor.b)) && aboutEqual(dstColor.a, srcColor.a));
|
success = ((((success && aboutEqual(dstColor.r, srcColor.r)) && aboutEqual(dstColor.g, srcColor.g)) && aboutEqual(dstColor.b, srcColor.b)) && aboutEqual(dstColor.a, srcColor.a));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let outputIndex : u32 = ((GlobalInvocationID.y * u32(dstSize.x)) + GlobalInvocationID.x);
|
let outputIndex : u32 = ((GlobalInvocationID.y * dstSize.x) + GlobalInvocationID.x);
|
||||||
if (success) {
|
if (success) {
|
||||||
output.result[outputIndex] = 1u;
|
output.result[outputIndex] = 1u;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
struct Params {
|
struct Params {
|
||||||
filterDim : u32,
|
filterDim : u32,
|
||||||
blockDim : u32,
|
blockDim : u32,
|
||||||
};
|
};
|
||||||
|
@ -35,16 +35,13 @@ fn main(
|
||||||
@builtin(local_invocation_id) LocalInvocationID : vec3<u32>
|
@builtin(local_invocation_id) LocalInvocationID : vec3<u32>
|
||||||
) {
|
) {
|
||||||
let filterOffset : u32 = (params.filterDim - 1u) / 2u;
|
let filterOffset : u32 = (params.filterDim - 1u) / 2u;
|
||||||
let dims : vec2<i32> = textureDimensions(inputTex, 0);
|
let dims = textureDimensions(inputTex, 0);
|
||||||
|
|
||||||
let baseIndex = vec2<i32>(
|
let baseIndex = (WorkGroupID.xy * vec2(params.blockDim, 4) + LocalInvocationID.xy * vec2(4u, 1u)) - vec2(filterOffset, 0);
|
||||||
WorkGroupID.xy * vec2<u32>(params.blockDim, 4u) +
|
|
||||||
LocalInvocationID.xy * vec2<u32>(4u, 1u)
|
|
||||||
) - vec2<i32>(i32(filterOffset), 0);
|
|
||||||
|
|
||||||
for (var r : u32 = 0u; r < 4u; r = r + 1u) {
|
for (var r : u32 = 0u; r < 4u; r = r + 1u) {
|
||||||
for (var c : u32 = 0u; c < 4u; c = c + 1u) {
|
for (var c : u32 = 0u; c < 4u; c = c + 1u) {
|
||||||
var loadIndex = baseIndex + vec2<i32>(i32(c), i32(r));
|
var loadIndex = baseIndex + vec2(c, r);
|
||||||
if (flip.value != 0u) {
|
if (flip.value != 0u) {
|
||||||
loadIndex = loadIndex.yx;
|
loadIndex = loadIndex.yx;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +56,7 @@ fn main(
|
||||||
|
|
||||||
for (var r : u32 = 0u; r < 4u; r = r + 1u) {
|
for (var r : u32 = 0u; r < 4u; r = r + 1u) {
|
||||||
for (var c : u32 = 0u; c < 4u; c = c + 1u) {
|
for (var c : u32 = 0u; c < 4u; c = c + 1u) {
|
||||||
var writeIndex = baseIndex + vec2<i32>(i32(c), i32(r));
|
var writeIndex = baseIndex + vec2(c, r);
|
||||||
if (flip.value != 0u) {
|
if (flip.value != 0u) {
|
||||||
writeIndex = writeIndex.yx;
|
writeIndex = writeIndex.yx;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,13 +28,13 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
||||||
const uint filterOffset = ((params[0].x - 1u) / 2u);
|
const uint filterOffset = ((params[0].x - 1u) / 2u);
|
||||||
int3 tint_tmp;
|
int3 tint_tmp;
|
||||||
inputTex.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
inputTex.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||||
const int2 dims = tint_tmp.xy;
|
const uint2 dims = tint_tmp.xy;
|
||||||
const int2 baseIndex = (int2(((WorkGroupID.xy * uint2(params[0].y, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u)))) - int2(int(filterOffset), 0));
|
const uint2 baseIndex = (((WorkGroupID.xy * uint2(params[0].y, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u))) - uint2(filterOffset, 0u));
|
||||||
{
|
{
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
int2 loadIndex = (baseIndex + int2(int(c), int(r)));
|
uint2 loadIndex = (baseIndex + uint2(c, r));
|
||||||
if ((flip[0].x != 0u)) {
|
if ((flip[0].x != 0u)) {
|
||||||
loadIndex = loadIndex.yx;
|
loadIndex = loadIndex.yx;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
int2 writeIndex = (baseIndex + int2(int(c), int(r)));
|
uint2 writeIndex = (baseIndex + uint2(c, r));
|
||||||
if ((flip[0].x != 0u)) {
|
if ((flip[0].x != 0u)) {
|
||||||
writeIndex = writeIndex.yx;
|
writeIndex = writeIndex.yx;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,13 +28,13 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
||||||
const uint filterOffset = ((params[0].x - 1u) / 2u);
|
const uint filterOffset = ((params[0].x - 1u) / 2u);
|
||||||
int3 tint_tmp;
|
int3 tint_tmp;
|
||||||
inputTex.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
inputTex.GetDimensions(0, tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||||
const int2 dims = tint_tmp.xy;
|
const uint2 dims = tint_tmp.xy;
|
||||||
const int2 baseIndex = (int2(((WorkGroupID.xy * uint2(params[0].y, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u)))) - int2(int(filterOffset), 0));
|
const uint2 baseIndex = (((WorkGroupID.xy * uint2(params[0].y, 4u)) + (LocalInvocationID.xy * uint2(4u, 1u))) - uint2(filterOffset, 0u));
|
||||||
{
|
{
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
int2 loadIndex = (baseIndex + int2(int(c), int(r)));
|
uint2 loadIndex = (baseIndex + uint2(c, r));
|
||||||
if ((flip[0].x != 0u)) {
|
if ((flip[0].x != 0u)) {
|
||||||
loadIndex = loadIndex.yx;
|
loadIndex = loadIndex.yx;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ void main_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocatio
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
int2 writeIndex = (baseIndex + int2(int(c), int(r)));
|
uint2 writeIndex = (baseIndex + uint2(c, r));
|
||||||
if ((flip[0].x != 0u)) {
|
if ((flip[0].x != 0u)) {
|
||||||
writeIndex = writeIndex.yx;
|
writeIndex = writeIndex.yx;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,13 +29,13 @@ void tint_symbol(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_invocati
|
||||||
}
|
}
|
||||||
barrier();
|
barrier();
|
||||||
uint filterOffset = ((params.filterDim - 1u) / 2u);
|
uint filterOffset = ((params.filterDim - 1u) / 2u);
|
||||||
ivec2 dims = textureSize(inputTex_1, 0);
|
uvec2 dims = uvec2(textureSize(inputTex_1, 0));
|
||||||
ivec2 baseIndex = (ivec2(((WorkGroupID.xy * uvec2(params.blockDim, 4u)) + (LocalInvocationID.xy * uvec2(4u, 1u)))) - ivec2(int(filterOffset), 0));
|
uvec2 baseIndex = (((WorkGroupID.xy * uvec2(params.blockDim, 4u)) + (LocalInvocationID.xy * uvec2(4u, 1u))) - uvec2(filterOffset, 0u));
|
||||||
{
|
{
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
ivec2 loadIndex = (baseIndex + ivec2(int(c), int(r)));
|
uvec2 loadIndex = (baseIndex + uvec2(c, r));
|
||||||
if ((flip.value != 0u)) {
|
if ((flip.value != 0u)) {
|
||||||
loadIndex = loadIndex.yx;
|
loadIndex = loadIndex.yx;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ void tint_symbol(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_invocati
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
{
|
{
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
ivec2 writeIndex = (baseIndex + ivec2(int(c), int(r)));
|
uvec2 writeIndex = (baseIndex + uvec2(c, r));
|
||||||
if ((flip.value != 0u)) {
|
if ((flip.value != 0u)) {
|
||||||
writeIndex = writeIndex.yx;
|
writeIndex = writeIndex.yx;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ void tint_symbol(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_invocati
|
||||||
acc = (acc + ((1.0f / float(params.filterDim)) * tile[r][i]));
|
acc = (acc + ((1.0f / float(params.filterDim)) * tile[r][i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
imageStore(outputTex, writeIndex, vec4(acc, 1.0f));
|
imageStore(outputTex, ivec2(writeIndex), vec4(acc, 1.0f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,13 +31,13 @@ void tint_symbol_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_in
|
||||||
}
|
}
|
||||||
threadgroup_barrier(mem_flags::mem_threadgroup);
|
threadgroup_barrier(mem_flags::mem_threadgroup);
|
||||||
uint const filterOffset = (((*(tint_symbol_2)).filterDim - 1u) / 2u);
|
uint const filterOffset = (((*(tint_symbol_2)).filterDim - 1u) / 2u);
|
||||||
int2 const dims = int2(tint_symbol_3.get_width(0), tint_symbol_3.get_height(0));
|
uint2 const dims = uint2(tint_symbol_3.get_width(0), tint_symbol_3.get_height(0));
|
||||||
int2 const baseIndex = as_type<int2>((as_type<uint2>(int2(int2(((uint3(WorkGroupID).xy * uint2((*(tint_symbol_2)).blockDim, 4u)) + (uint3(LocalInvocationID).xy * uint2(4u, 1u)))))) - as_type<uint2>(int2(int2(int(filterOffset), 0)))));
|
uint2 const baseIndex = (((uint3(WorkGroupID).xy * uint2((*(tint_symbol_2)).blockDim, 4u)) + (uint3(LocalInvocationID).xy * uint2(4u, 1u))) - uint2(filterOffset, 0u));
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
int2 loadIndex = as_type<int2>((as_type<uint2>(int2(baseIndex)) + as_type<uint2>(int2(int2(int(c), int(r))))));
|
uint2 loadIndex = (baseIndex + uint2(c, r));
|
||||||
if (((*(tint_symbol_4)).value != 0u)) {
|
if (((*(tint_symbol_4)).value != 0u)) {
|
||||||
loadIndex = int2(loadIndex).yx;
|
loadIndex = uint2(loadIndex).yx;
|
||||||
}
|
}
|
||||||
(*(tint_symbol_1))[r][((4u * LocalInvocationID[0]) + c)] = float4(tint_symbol_3.sample(tint_symbol_5, ((float2(loadIndex) + float2(0.25f)) / float2(dims)), level(0.0f))).rgb;
|
(*(tint_symbol_1))[r][((4u * LocalInvocationID[0]) + c)] = float4(tint_symbol_3.sample(tint_symbol_5, ((float2(loadIndex) + float2(0.25f)) / float2(dims)), level(0.0f))).rgb;
|
||||||
}
|
}
|
||||||
|
@ -45,9 +45,9 @@ void tint_symbol_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_in
|
||||||
threadgroup_barrier(mem_flags::mem_threadgroup);
|
threadgroup_barrier(mem_flags::mem_threadgroup);
|
||||||
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
int2 writeIndex = as_type<int2>((as_type<uint2>(int2(baseIndex)) + as_type<uint2>(int2(int2(int(c), int(r))))));
|
uint2 writeIndex = (baseIndex + uint2(c, r));
|
||||||
if (((*(tint_symbol_4)).value != 0u)) {
|
if (((*(tint_symbol_4)).value != 0u)) {
|
||||||
writeIndex = int2(writeIndex).yx;
|
writeIndex = uint2(writeIndex).yx;
|
||||||
}
|
}
|
||||||
uint const center = ((4u * LocalInvocationID[0]) + c);
|
uint const center = ((4u * LocalInvocationID[0]) + c);
|
||||||
if ((((center >= filterOffset) && (center < (256u - filterOffset))) && all((writeIndex < dims)))) {
|
if ((((center >= filterOffset) && (center < (256u - filterOffset))) && all((writeIndex < dims)))) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
; Bound: 258
|
; Bound: 251
|
||||||
; Schema: 0
|
; Schema: 0
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
OpCapability ImageQuery
|
OpCapability ImageQuery
|
||||||
|
@ -104,23 +104,22 @@
|
||||||
%uint_0 = OpConstant %uint 0
|
%uint_0 = OpConstant %uint 0
|
||||||
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
||||||
%uint_1 = OpConstant %uint 1
|
%uint_1 = OpConstant %uint 1
|
||||||
%int = OpTypeInt 32 1
|
|
||||||
%v2int = OpTypeVector %int 2
|
|
||||||
%76 = OpConstantNull %int
|
|
||||||
%v2uint = OpTypeVector %uint 2
|
%v2uint = OpTypeVector %uint 2
|
||||||
%85 = OpConstantComposite %v2uint %uint_4 %uint_1
|
%int = OpTypeInt 32 1
|
||||||
%_ptr_Function_v2int = OpTypePointer Function %v2int
|
%76 = OpConstantNull %int
|
||||||
%119 = OpConstantNull %v2int
|
%83 = OpConstantComposite %v2uint %uint_4 %uint_1
|
||||||
|
%_ptr_Function_v2uint = OpTypePointer Function %v2uint
|
||||||
|
%114 = OpConstantNull %v2uint
|
||||||
%v4float = OpTypeVector %float 4
|
%v4float = OpTypeVector %float 4
|
||||||
%137 = OpTypeSampledImage %16
|
%132 = OpTypeSampledImage %16
|
||||||
%v2float = OpTypeVector %float 2
|
%v2float = OpTypeVector %float 2
|
||||||
%float_0_25 = OpConstant %float 0.25
|
%float_0_25 = OpConstant %float 0.25
|
||||||
%143 = OpConstantComposite %v2float %float_0_25 %float_0_25
|
%138 = OpConstantComposite %v2float %float_0_25 %float_0_25
|
||||||
%147 = OpConstantNull %float
|
%142 = OpConstantNull %float
|
||||||
%v2bool = OpTypeVector %bool 2
|
%v2bool = OpTypeVector %bool 2
|
||||||
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
||||||
%float_1 = OpConstant %float 1
|
%float_1 = OpConstant %float 1
|
||||||
%251 = OpTypeFunction %void
|
%244 = OpTypeFunction %void
|
||||||
%main_inner = OpFunction %void None %31
|
%main_inner = OpFunction %void None %31
|
||||||
%WorkGroupID = OpFunctionParameter %v3uint
|
%WorkGroupID = OpFunctionParameter %v3uint
|
||||||
%LocalInvocationID = OpFunctionParameter %v3uint
|
%LocalInvocationID = OpFunctionParameter %v3uint
|
||||||
|
@ -129,10 +128,10 @@
|
||||||
%idx = OpVariable %_ptr_Function_uint Function %40
|
%idx = OpVariable %_ptr_Function_uint Function %40
|
||||||
%r = OpVariable %_ptr_Function_uint Function %40
|
%r = OpVariable %_ptr_Function_uint Function %40
|
||||||
%c = OpVariable %_ptr_Function_uint Function %40
|
%c = OpVariable %_ptr_Function_uint Function %40
|
||||||
%loadIndex = OpVariable %_ptr_Function_v2int Function %119
|
%loadIndex = OpVariable %_ptr_Function_v2uint Function %114
|
||||||
%r_0 = OpVariable %_ptr_Function_uint Function %40
|
%r_0 = OpVariable %_ptr_Function_uint Function %40
|
||||||
%c_0 = OpVariable %_ptr_Function_uint Function %40
|
%c_0 = OpVariable %_ptr_Function_uint Function %40
|
||||||
%writeIndex = OpVariable %_ptr_Function_v2int Function %119
|
%writeIndex = OpVariable %_ptr_Function_v2uint Function %114
|
||||||
%acc = OpVariable %_ptr_Function_v3float Function %58
|
%acc = OpVariable %_ptr_Function_v3float Function %58
|
||||||
%f = OpVariable %_ptr_Function_uint Function %40
|
%f = OpVariable %_ptr_Function_uint Function %40
|
||||||
%i = OpVariable %_ptr_Function_uint Function %40
|
%i = OpVariable %_ptr_Function_uint Function %40
|
||||||
|
@ -168,240 +167,234 @@
|
||||||
%68 = OpLoad %uint %67
|
%68 = OpLoad %uint %67
|
||||||
%70 = OpISub %uint %68 %uint_1
|
%70 = OpISub %uint %68 %uint_1
|
||||||
%71 = OpUDiv %uint %70 %uint_2
|
%71 = OpUDiv %uint %70 %uint_2
|
||||||
%75 = OpLoad %16 %inputTex
|
%74 = OpLoad %16 %inputTex
|
||||||
%72 = OpImageQuerySizeLod %v2int %75 %76
|
%72 = OpImageQuerySizeLod %v2uint %74 %76
|
||||||
%79 = OpVectorShuffle %v2uint %WorkGroupID %WorkGroupID 0 1
|
%77 = OpVectorShuffle %v2uint %WorkGroupID %WorkGroupID 0 1
|
||||||
%80 = OpAccessChain %_ptr_Uniform_uint %params %uint_1
|
%78 = OpAccessChain %_ptr_Uniform_uint %params %uint_1
|
||||||
%81 = OpLoad %uint %80
|
%79 = OpLoad %uint %78
|
||||||
%82 = OpCompositeConstruct %v2uint %81 %uint_4
|
%80 = OpCompositeConstruct %v2uint %79 %uint_4
|
||||||
%83 = OpIMul %v2uint %79 %82
|
%81 = OpIMul %v2uint %77 %80
|
||||||
%84 = OpVectorShuffle %v2uint %LocalInvocationID %LocalInvocationID 0 1
|
%82 = OpVectorShuffle %v2uint %LocalInvocationID %LocalInvocationID 0 1
|
||||||
%86 = OpIMul %v2uint %84 %85
|
%84 = OpIMul %v2uint %82 %83
|
||||||
%87 = OpIAdd %v2uint %83 %86
|
%85 = OpIAdd %v2uint %81 %84
|
||||||
%77 = OpBitcast %v2int %87
|
%86 = OpCompositeConstruct %v2uint %71 %40
|
||||||
%88 = OpBitcast %int %71
|
%87 = OpISub %v2uint %85 %86
|
||||||
%89 = OpCompositeConstruct %v2int %88 %76
|
|
||||||
%90 = OpISub %v2int %77 %89
|
|
||||||
OpStore %r %40
|
OpStore %r %40
|
||||||
|
OpBranch %89
|
||||||
|
%89 = OpLabel
|
||||||
|
OpLoopMerge %90 %91 None
|
||||||
OpBranch %92
|
OpBranch %92
|
||||||
%92 = OpLabel
|
%92 = OpLabel
|
||||||
OpLoopMerge %93 %94 None
|
%94 = OpLoad %uint %r
|
||||||
OpBranch %95
|
%95 = OpULessThan %bool %94 %uint_4
|
||||||
%95 = OpLabel
|
%93 = OpLogicalNot %bool %95
|
||||||
%97 = OpLoad %uint %r
|
OpSelectionMerge %96 None
|
||||||
%98 = OpULessThan %bool %97 %uint_4
|
OpBranchConditional %93 %97 %96
|
||||||
%96 = OpLogicalNot %bool %98
|
%97 = OpLabel
|
||||||
OpSelectionMerge %99 None
|
OpBranch %90
|
||||||
OpBranchConditional %96 %100 %99
|
%96 = OpLabel
|
||||||
%100 = OpLabel
|
|
||||||
OpBranch %93
|
|
||||||
%99 = OpLabel
|
|
||||||
OpStore %c %40
|
OpStore %c %40
|
||||||
|
OpBranch %99
|
||||||
|
%99 = OpLabel
|
||||||
|
OpLoopMerge %100 %101 None
|
||||||
OpBranch %102
|
OpBranch %102
|
||||||
%102 = OpLabel
|
%102 = OpLabel
|
||||||
OpLoopMerge %103 %104 None
|
%104 = OpLoad %uint %c
|
||||||
OpBranch %105
|
%105 = OpULessThan %bool %104 %uint_4
|
||||||
%105 = OpLabel
|
%103 = OpLogicalNot %bool %105
|
||||||
%107 = OpLoad %uint %c
|
OpSelectionMerge %106 None
|
||||||
%108 = OpULessThan %bool %107 %uint_4
|
OpBranchConditional %103 %107 %106
|
||||||
%106 = OpLogicalNot %bool %108
|
%107 = OpLabel
|
||||||
OpSelectionMerge %109 None
|
OpBranch %100
|
||||||
OpBranchConditional %106 %110 %109
|
%106 = OpLabel
|
||||||
%110 = OpLabel
|
%108 = OpLoad %uint %c
|
||||||
OpBranch %103
|
%109 = OpLoad %uint %r
|
||||||
%109 = OpLabel
|
%110 = OpCompositeConstruct %v2uint %108 %109
|
||||||
%112 = OpLoad %uint %c
|
%111 = OpIAdd %v2uint %87 %110
|
||||||
%111 = OpBitcast %int %112
|
OpStore %loadIndex %111
|
||||||
%114 = OpLoad %uint %r
|
%115 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0
|
||||||
%113 = OpBitcast %int %114
|
%116 = OpLoad %uint %115
|
||||||
%115 = OpCompositeConstruct %v2int %111 %113
|
%117 = OpINotEqual %bool %116 %40
|
||||||
%116 = OpIAdd %v2int %90 %115
|
OpSelectionMerge %118 None
|
||||||
OpStore %loadIndex %116
|
OpBranchConditional %117 %119 %118
|
||||||
%120 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0
|
%119 = OpLabel
|
||||||
%121 = OpLoad %uint %120
|
%120 = OpLoad %v2uint %loadIndex
|
||||||
%122 = OpINotEqual %bool %121 %40
|
%121 = OpVectorShuffle %v2uint %120 %120 1 0
|
||||||
OpSelectionMerge %123 None
|
OpStore %loadIndex %121
|
||||||
OpBranchConditional %122 %124 %123
|
OpBranch %118
|
||||||
%124 = OpLabel
|
%118 = OpLabel
|
||||||
%125 = OpLoad %v2int %loadIndex
|
%122 = OpLoad %uint %r
|
||||||
%126 = OpVectorShuffle %v2int %125 %125 1 0
|
%123 = OpCompositeExtract %uint %LocalInvocationID 0
|
||||||
OpStore %loadIndex %126
|
%124 = OpIMul %uint %uint_4 %123
|
||||||
OpBranch %123
|
%125 = OpLoad %uint %c
|
||||||
%123 = OpLabel
|
%126 = OpIAdd %uint %124 %125
|
||||||
%127 = OpLoad %uint %r
|
%127 = OpAccessChain %_ptr_Workgroup_v3float %tile %122 %126
|
||||||
%128 = OpCompositeExtract %uint %LocalInvocationID 0
|
%130 = OpLoad %10 %samp
|
||||||
%129 = OpIMul %uint %uint_4 %128
|
%131 = OpLoad %16 %inputTex
|
||||||
%130 = OpLoad %uint %c
|
%133 = OpSampledImage %132 %131 %130
|
||||||
%131 = OpIAdd %uint %129 %130
|
%136 = OpLoad %v2uint %loadIndex
|
||||||
%132 = OpAccessChain %_ptr_Workgroup_v3float %tile %127 %131
|
%134 = OpConvertUToF %v2float %136
|
||||||
%135 = OpLoad %10 %samp
|
%139 = OpFAdd %v2float %134 %138
|
||||||
%136 = OpLoad %16 %inputTex
|
%140 = OpConvertUToF %v2float %72
|
||||||
%138 = OpSampledImage %137 %136 %135
|
%141 = OpFDiv %v2float %139 %140
|
||||||
%141 = OpLoad %v2int %loadIndex
|
%128 = OpImageSampleExplicitLod %v4float %133 %141 Lod %142
|
||||||
%139 = OpConvertSToF %v2float %141
|
%143 = OpVectorShuffle %v3float %128 %128 0 1 2
|
||||||
%144 = OpFAdd %v2float %139 %143
|
OpStore %127 %143
|
||||||
%145 = OpConvertSToF %v2float %72
|
OpBranch %101
|
||||||
%146 = OpFDiv %v2float %144 %145
|
%101 = OpLabel
|
||||||
%133 = OpImageSampleExplicitLod %v4float %138 %146 Lod %147
|
%144 = OpLoad %uint %c
|
||||||
%148 = OpVectorShuffle %v3float %133 %133 0 1 2
|
%145 = OpIAdd %uint %144 %uint_1
|
||||||
OpStore %132 %148
|
OpStore %c %145
|
||||||
OpBranch %104
|
OpBranch %99
|
||||||
%104 = OpLabel
|
%100 = OpLabel
|
||||||
%149 = OpLoad %uint %c
|
OpBranch %91
|
||||||
%150 = OpIAdd %uint %149 %uint_1
|
%91 = OpLabel
|
||||||
OpStore %c %150
|
%146 = OpLoad %uint %r
|
||||||
OpBranch %102
|
%147 = OpIAdd %uint %146 %uint_1
|
||||||
%103 = OpLabel
|
OpStore %r %147
|
||||||
OpBranch %94
|
OpBranch %89
|
||||||
%94 = OpLabel
|
%90 = OpLabel
|
||||||
%151 = OpLoad %uint %r
|
|
||||||
%152 = OpIAdd %uint %151 %uint_1
|
|
||||||
OpStore %r %152
|
|
||||||
OpBranch %92
|
|
||||||
%93 = OpLabel
|
|
||||||
OpControlBarrier %uint_2 %uint_2 %uint_264
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||||||
OpStore %r_0 %40
|
OpStore %r_0 %40
|
||||||
OpBranch %155
|
OpBranch %150
|
||||||
%155 = OpLabel
|
%150 = OpLabel
|
||||||
OpLoopMerge %156 %157 None
|
OpLoopMerge %151 %152 None
|
||||||
OpBranch %158
|
OpBranch %153
|
||||||
|
%153 = OpLabel
|
||||||
|
%155 = OpLoad %uint %r_0
|
||||||
|
%156 = OpULessThan %bool %155 %uint_4
|
||||||
|
%154 = OpLogicalNot %bool %156
|
||||||
|
OpSelectionMerge %157 None
|
||||||
|
OpBranchConditional %154 %158 %157
|
||||||
%158 = OpLabel
|
%158 = OpLabel
|
||||||
%160 = OpLoad %uint %r_0
|
OpBranch %151
|
||||||
%161 = OpULessThan %bool %160 %uint_4
|
%157 = OpLabel
|
||||||
%159 = OpLogicalNot %bool %161
|
|
||||||
OpSelectionMerge %162 None
|
|
||||||
OpBranchConditional %159 %163 %162
|
|
||||||
%163 = OpLabel
|
|
||||||
OpBranch %156
|
|
||||||
%162 = OpLabel
|
|
||||||
OpStore %c_0 %40
|
OpStore %c_0 %40
|
||||||
OpBranch %165
|
OpBranch %160
|
||||||
%165 = OpLabel
|
%160 = OpLabel
|
||||||
OpLoopMerge %166 %167 None
|
OpLoopMerge %161 %162 None
|
||||||
OpBranch %168
|
OpBranch %163
|
||||||
|
%163 = OpLabel
|
||||||
|
%165 = OpLoad %uint %c_0
|
||||||
|
%166 = OpULessThan %bool %165 %uint_4
|
||||||
|
%164 = OpLogicalNot %bool %166
|
||||||
|
OpSelectionMerge %167 None
|
||||||
|
OpBranchConditional %164 %168 %167
|
||||||
%168 = OpLabel
|
%168 = OpLabel
|
||||||
%170 = OpLoad %uint %c_0
|
OpBranch %161
|
||||||
%171 = OpULessThan %bool %170 %uint_4
|
%167 = OpLabel
|
||||||
%169 = OpLogicalNot %bool %171
|
%169 = OpLoad %uint %c_0
|
||||||
OpSelectionMerge %172 None
|
%170 = OpLoad %uint %r_0
|
||||||
OpBranchConditional %169 %173 %172
|
%171 = OpCompositeConstruct %v2uint %169 %170
|
||||||
%173 = OpLabel
|
%172 = OpIAdd %v2uint %87 %171
|
||||||
OpBranch %166
|
OpStore %writeIndex %172
|
||||||
%172 = OpLabel
|
%174 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0
|
||||||
%175 = OpLoad %uint %c_0
|
%175 = OpLoad %uint %174
|
||||||
%174 = OpBitcast %int %175
|
%176 = OpINotEqual %bool %175 %40
|
||||||
%177 = OpLoad %uint %r_0
|
OpSelectionMerge %177 None
|
||||||
%176 = OpBitcast %int %177
|
OpBranchConditional %176 %178 %177
|
||||||
%178 = OpCompositeConstruct %v2int %174 %176
|
%178 = OpLabel
|
||||||
%179 = OpIAdd %v2int %90 %178
|
%179 = OpLoad %v2uint %writeIndex
|
||||||
OpStore %writeIndex %179
|
%180 = OpVectorShuffle %v2uint %179 %179 1 0
|
||||||
%181 = OpAccessChain %_ptr_Uniform_uint %flip %uint_0
|
OpStore %writeIndex %180
|
||||||
%182 = OpLoad %uint %181
|
OpBranch %177
|
||||||
%183 = OpINotEqual %bool %182 %40
|
%177 = OpLabel
|
||||||
OpSelectionMerge %184 None
|
%181 = OpCompositeExtract %uint %LocalInvocationID 0
|
||||||
OpBranchConditional %183 %185 %184
|
%182 = OpIMul %uint %uint_4 %181
|
||||||
%185 = OpLabel
|
%183 = OpLoad %uint %c_0
|
||||||
%186 = OpLoad %v2int %writeIndex
|
%184 = OpIAdd %uint %182 %183
|
||||||
%187 = OpVectorShuffle %v2int %186 %186 1 0
|
%185 = OpUGreaterThanEqual %bool %184 %71
|
||||||
OpStore %writeIndex %187
|
OpSelectionMerge %186 None
|
||||||
OpBranch %184
|
OpBranchConditional %185 %187 %186
|
||||||
%184 = OpLabel
|
%187 = OpLabel
|
||||||
%188 = OpCompositeExtract %uint %LocalInvocationID 0
|
%188 = OpISub %uint %uint_256 %71
|
||||||
%189 = OpIMul %uint %uint_4 %188
|
%189 = OpULessThan %bool %184 %188
|
||||||
%190 = OpLoad %uint %c_0
|
OpBranch %186
|
||||||
%191 = OpIAdd %uint %189 %190
|
%186 = OpLabel
|
||||||
%192 = OpUGreaterThanEqual %bool %191 %71
|
%190 = OpPhi %bool %185 %177 %189 %187
|
||||||
OpSelectionMerge %193 None
|
OpSelectionMerge %191 None
|
||||||
OpBranchConditional %192 %194 %193
|
OpBranchConditional %190 %192 %191
|
||||||
%194 = OpLabel
|
%192 = OpLabel
|
||||||
%195 = OpISub %uint %uint_256 %71
|
%194 = OpLoad %v2uint %writeIndex
|
||||||
%196 = OpULessThan %bool %191 %195
|
%195 = OpULessThan %v2bool %194 %72
|
||||||
OpBranch %193
|
%193 = OpAll %bool %195
|
||||||
%193 = OpLabel
|
OpBranch %191
|
||||||
%197 = OpPhi %bool %192 %184 %196 %194
|
%191 = OpLabel
|
||||||
|
%197 = OpPhi %bool %190 %186 %193 %192
|
||||||
OpSelectionMerge %198 None
|
OpSelectionMerge %198 None
|
||||||
OpBranchConditional %197 %199 %198
|
OpBranchConditional %197 %199 %198
|
||||||
%199 = OpLabel
|
%199 = OpLabel
|
||||||
%201 = OpLoad %v2int %writeIndex
|
|
||||||
%202 = OpSLessThan %v2bool %201 %72
|
|
||||||
%200 = OpAll %bool %202
|
|
||||||
OpBranch %198
|
|
||||||
%198 = OpLabel
|
|
||||||
%204 = OpPhi %bool %197 %193 %200 %199
|
|
||||||
OpSelectionMerge %205 None
|
|
||||||
OpBranchConditional %204 %206 %205
|
|
||||||
%206 = OpLabel
|
|
||||||
OpStore %acc %58
|
OpStore %acc %58
|
||||||
OpStore %f %40
|
OpStore %f %40
|
||||||
OpBranch %210
|
OpBranch %203
|
||||||
%210 = OpLabel
|
%203 = OpLabel
|
||||||
OpLoopMerge %211 %212 None
|
OpLoopMerge %204 %205 None
|
||||||
OpBranch %213
|
OpBranch %206
|
||||||
|
%206 = OpLabel
|
||||||
|
%208 = OpLoad %uint %f
|
||||||
|
%209 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
|
||||||
|
%210 = OpLoad %uint %209
|
||||||
|
%211 = OpULessThan %bool %208 %210
|
||||||
|
%207 = OpLogicalNot %bool %211
|
||||||
|
OpSelectionMerge %212 None
|
||||||
|
OpBranchConditional %207 %213 %212
|
||||||
%213 = OpLabel
|
%213 = OpLabel
|
||||||
%215 = OpLoad %uint %f
|
OpBranch %204
|
||||||
%216 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
|
|
||||||
%217 = OpLoad %uint %216
|
|
||||||
%218 = OpULessThan %bool %215 %217
|
|
||||||
%214 = OpLogicalNot %bool %218
|
|
||||||
OpSelectionMerge %219 None
|
|
||||||
OpBranchConditional %214 %220 %219
|
|
||||||
%220 = OpLabel
|
|
||||||
OpBranch %211
|
|
||||||
%219 = OpLabel
|
|
||||||
%221 = OpLoad %uint %f
|
|
||||||
%222 = OpIAdd %uint %191 %221
|
|
||||||
%223 = OpISub %uint %222 %71
|
|
||||||
OpStore %i %223
|
|
||||||
%225 = OpLoad %v3float %acc
|
|
||||||
%228 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
|
|
||||||
%229 = OpLoad %uint %228
|
|
||||||
%227 = OpConvertUToF %float %229
|
|
||||||
%230 = OpFDiv %float %float_1 %227
|
|
||||||
%231 = OpLoad %uint %r_0
|
|
||||||
%232 = OpLoad %uint %i
|
|
||||||
%233 = OpAccessChain %_ptr_Workgroup_v3float %tile %231 %232
|
|
||||||
%234 = OpLoad %v3float %233
|
|
||||||
%235 = OpVectorTimesScalar %v3float %234 %230
|
|
||||||
%236 = OpFAdd %v3float %225 %235
|
|
||||||
OpStore %acc %236
|
|
||||||
OpBranch %212
|
|
||||||
%212 = OpLabel
|
%212 = OpLabel
|
||||||
%237 = OpLoad %uint %f
|
%214 = OpLoad %uint %f
|
||||||
%238 = OpIAdd %uint %237 %uint_1
|
%215 = OpIAdd %uint %184 %214
|
||||||
OpStore %f %238
|
%216 = OpISub %uint %215 %71
|
||||||
OpBranch %210
|
OpStore %i %216
|
||||||
%211 = OpLabel
|
%218 = OpLoad %v3float %acc
|
||||||
%240 = OpLoad %20 %outputTex
|
%221 = OpAccessChain %_ptr_Uniform_uint %params %uint_0
|
||||||
%241 = OpLoad %v2int %writeIndex
|
%222 = OpLoad %uint %221
|
||||||
%242 = OpLoad %v3float %acc
|
%220 = OpConvertUToF %float %222
|
||||||
%243 = OpCompositeExtract %float %242 0
|
%223 = OpFDiv %float %float_1 %220
|
||||||
%244 = OpCompositeExtract %float %242 1
|
%224 = OpLoad %uint %r_0
|
||||||
%245 = OpCompositeExtract %float %242 2
|
%225 = OpLoad %uint %i
|
||||||
%246 = OpCompositeConstruct %v4float %243 %244 %245 %float_1
|
%226 = OpAccessChain %_ptr_Workgroup_v3float %tile %224 %225
|
||||||
OpImageWrite %240 %241 %246
|
%227 = OpLoad %v3float %226
|
||||||
|
%228 = OpVectorTimesScalar %v3float %227 %223
|
||||||
|
%229 = OpFAdd %v3float %218 %228
|
||||||
|
OpStore %acc %229
|
||||||
OpBranch %205
|
OpBranch %205
|
||||||
%205 = OpLabel
|
%205 = OpLabel
|
||||||
OpBranch %167
|
%230 = OpLoad %uint %f
|
||||||
%167 = OpLabel
|
%231 = OpIAdd %uint %230 %uint_1
|
||||||
%247 = OpLoad %uint %c_0
|
OpStore %f %231
|
||||||
%248 = OpIAdd %uint %247 %uint_1
|
OpBranch %203
|
||||||
OpStore %c_0 %248
|
%204 = OpLabel
|
||||||
OpBranch %165
|
%233 = OpLoad %20 %outputTex
|
||||||
%166 = OpLabel
|
%234 = OpLoad %v2uint %writeIndex
|
||||||
OpBranch %157
|
%235 = OpLoad %v3float %acc
|
||||||
%157 = OpLabel
|
%236 = OpCompositeExtract %float %235 0
|
||||||
%249 = OpLoad %uint %r_0
|
%237 = OpCompositeExtract %float %235 1
|
||||||
%250 = OpIAdd %uint %249 %uint_1
|
%238 = OpCompositeExtract %float %235 2
|
||||||
OpStore %r_0 %250
|
%239 = OpCompositeConstruct %v4float %236 %237 %238 %float_1
|
||||||
OpBranch %155
|
OpImageWrite %233 %234 %239
|
||||||
%156 = OpLabel
|
OpBranch %198
|
||||||
|
%198 = OpLabel
|
||||||
|
OpBranch %162
|
||||||
|
%162 = OpLabel
|
||||||
|
%240 = OpLoad %uint %c_0
|
||||||
|
%241 = OpIAdd %uint %240 %uint_1
|
||||||
|
OpStore %c_0 %241
|
||||||
|
OpBranch %160
|
||||||
|
%161 = OpLabel
|
||||||
|
OpBranch %152
|
||||||
|
%152 = OpLabel
|
||||||
|
%242 = OpLoad %uint %r_0
|
||||||
|
%243 = OpIAdd %uint %242 %uint_1
|
||||||
|
OpStore %r_0 %243
|
||||||
|
OpBranch %150
|
||||||
|
%151 = OpLabel
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%main = OpFunction %void None %251
|
%main = OpFunction %void None %244
|
||||||
%253 = OpLabel
|
%246 = OpLabel
|
||||||
%255 = OpLoad %v3uint %WorkGroupID_1
|
%248 = OpLoad %v3uint %WorkGroupID_1
|
||||||
%256 = OpLoad %v3uint %LocalInvocationID_1
|
%249 = OpLoad %v3uint %LocalInvocationID_1
|
||||||
%257 = OpLoad %uint %local_invocation_index_1
|
%250 = OpLoad %uint %local_invocation_index_1
|
||||||
%254 = OpFunctionCall %void %main_inner %255 %256 %257
|
%247 = OpFunctionCall %void %main_inner %248 %249 %250
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
|
@ -22,11 +22,11 @@ var<workgroup> tile : array<array<vec3<f32>, 256>, 4>;
|
||||||
@compute @workgroup_size(64, 1, 1)
|
@compute @workgroup_size(64, 1, 1)
|
||||||
fn main(@builtin(workgroup_id) WorkGroupID : vec3<u32>, @builtin(local_invocation_id) LocalInvocationID : vec3<u32>) {
|
fn main(@builtin(workgroup_id) WorkGroupID : vec3<u32>, @builtin(local_invocation_id) LocalInvocationID : vec3<u32>) {
|
||||||
let filterOffset : u32 = ((params.filterDim - 1u) / 2u);
|
let filterOffset : u32 = ((params.filterDim - 1u) / 2u);
|
||||||
let dims : vec2<i32> = textureDimensions(inputTex, 0);
|
let dims = textureDimensions(inputTex, 0);
|
||||||
let baseIndex = (vec2<i32>(((WorkGroupID.xy * vec2<u32>(params.blockDim, 4u)) + (LocalInvocationID.xy * vec2<u32>(4u, 1u)))) - vec2<i32>(i32(filterOffset), 0));
|
let baseIndex = (((WorkGroupID.xy * vec2(params.blockDim, 4)) + (LocalInvocationID.xy * vec2(4u, 1u))) - vec2(filterOffset, 0));
|
||||||
for(var r : u32 = 0u; (r < 4u); r = (r + 1u)) {
|
for(var r : u32 = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
for(var c : u32 = 0u; (c < 4u); c = (c + 1u)) {
|
for(var c : u32 = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
var loadIndex = (baseIndex + vec2<i32>(i32(c), i32(r)));
|
var loadIndex = (baseIndex + vec2(c, r));
|
||||||
if ((flip.value != 0u)) {
|
if ((flip.value != 0u)) {
|
||||||
loadIndex = loadIndex.yx;
|
loadIndex = loadIndex.yx;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ fn main(@builtin(workgroup_id) WorkGroupID : vec3<u32>, @builtin(local_invocatio
|
||||||
workgroupBarrier();
|
workgroupBarrier();
|
||||||
for(var r : u32 = 0u; (r < 4u); r = (r + 1u)) {
|
for(var r : u32 = 0u; (r < 4u); r = (r + 1u)) {
|
||||||
for(var c : u32 = 0u; (c < 4u); c = (c + 1u)) {
|
for(var c : u32 = 0u; (c < 4u); c = (c + 1u)) {
|
||||||
var writeIndex = (baseIndex + vec2<i32>(i32(c), i32(r)));
|
var writeIndex = (baseIndex + vec2(c, r));
|
||||||
if ((flip.value != 0u)) {
|
if ((flip.value != 0u)) {
|
||||||
writeIndex = writeIndex.yx;
|
writeIndex = writeIndex.yx;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
// Copyright 2021 The Tint Authors.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// File generated by tools/src/cmd/gen
|
|
||||||
// using the template:
|
|
||||||
// test/tint/builtins/gen/gen.wgsl.tmpl
|
|
||||||
//
|
|
||||||
// Do not modify this file directly
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@group(1) @binding(0) var arg_0: texture_1d<f32>;
|
|
||||||
|
|
||||||
// fn textureDimensions(texture: texture_1d<f32>) -> i32
|
|
||||||
fn textureDimensions_002b2a() {
|
|
||||||
var res: i32 = textureDimensions(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@vertex
|
|
||||||
fn vertex_main() -> @builtin(position) vec4<f32> {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@fragment
|
|
||||||
fn fragment_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
}
|
|
||||||
|
|
||||||
@compute @workgroup_size(1)
|
|
||||||
fn compute_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
Texture1D<float4> arg_0 : register(t0, space1);
|
|
||||||
|
|
||||||
void textureDimensions_002b2a() {
|
|
||||||
int tint_tmp;
|
|
||||||
arg_0.GetDimensions(tint_tmp);
|
|
||||||
int res = tint_tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
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() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
Texture1D<float4> arg_0 : register(t0, space1);
|
|
||||||
|
|
||||||
void textureDimensions_002b2a() {
|
|
||||||
int tint_tmp;
|
|
||||||
arg_0.GetDimensions(tint_tmp);
|
|
||||||
int res = tint_tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
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() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,75 +0,0 @@
|
||||||
SKIP: FAILED
|
|
||||||
|
|
||||||
#version 310 es
|
|
||||||
|
|
||||||
uniform highp sampler1D arg_0_1;
|
|
||||||
void textureDimensions_002b2a() {
|
|
||||||
int res = textureSize(arg_0_1, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 vertex_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
Error parsing GLSL shader:
|
|
||||||
ERROR: 0:3: 'sampler1D' : Reserved word.
|
|
||||||
ERROR: 0:3: '' : compilation terminated
|
|
||||||
ERROR: 2 compilation errors. No code generated.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#version 310 es
|
|
||||||
precision mediump float;
|
|
||||||
|
|
||||||
uniform highp sampler1D arg_0_1;
|
|
||||||
void textureDimensions_002b2a() {
|
|
||||||
int res = textureSize(arg_0_1, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fragment_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
fragment_main();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Error parsing GLSL shader:
|
|
||||||
ERROR: 0:4: 'sampler1D' : Reserved word.
|
|
||||||
ERROR: 0:4: '' : compilation terminated
|
|
||||||
ERROR: 2 compilation errors. No code generated.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#version 310 es
|
|
||||||
|
|
||||||
uniform highp sampler1D arg_0_1;
|
|
||||||
void textureDimensions_002b2a() {
|
|
||||||
int res = textureSize(arg_0_1, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
}
|
|
||||||
|
|
||||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
||||||
void main() {
|
|
||||||
compute_main();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Error parsing GLSL shader:
|
|
||||||
ERROR: 0:3: 'sampler1D' : Reserved word.
|
|
||||||
ERROR: 0:3: '' : compilation terminated
|
|
||||||
ERROR: 2 compilation errors. No code generated.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
void textureDimensions_002b2a(texture1d<float, access::sample> tint_symbol_1) {
|
|
||||||
int res = int(tint_symbol_1.get_width(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value [[position]];
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner(texture1d<float, access::sample> tint_symbol_2) {
|
|
||||||
textureDimensions_002b2a(tint_symbol_2);
|
|
||||||
return float4(0.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex tint_symbol vertex_main(texture1d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
|
|
||||||
float4 const inner_result = vertex_main_inner(tint_symbol_3);
|
|
||||||
tint_symbol wrapper_result = {};
|
|
||||||
wrapper_result.value = inner_result;
|
|
||||||
return wrapper_result;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment void fragment_main(texture1d<float, access::sample> tint_symbol_4 [[texture(0)]]) {
|
|
||||||
textureDimensions_002b2a(tint_symbol_4);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
kernel void compute_main(texture1d<float, access::sample> tint_symbol_5 [[texture(0)]]) {
|
|
||||||
textureDimensions_002b2a(tint_symbol_5);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,76 +0,0 @@
|
||||||
; SPIR-V
|
|
||||||
; Version: 1.3
|
|
||||||
; Generator: Google Tint Compiler; 0
|
|
||||||
; Bound: 37
|
|
||||||
; Schema: 0
|
|
||||||
OpCapability Shader
|
|
||||||
OpCapability Sampled1D
|
|
||||||
OpCapability ImageQuery
|
|
||||||
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 %arg_0 "arg_0"
|
|
||||||
OpName %textureDimensions_002b2a "textureDimensions_002b2a"
|
|
||||||
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
|
|
||||||
OpDecorate %arg_0 DescriptorSet 1
|
|
||||||
OpDecorate %arg_0 Binding 0
|
|
||||||
%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
|
|
||||||
%11 = OpTypeImage %float 1D 0 0 0 1 Unknown
|
|
||||||
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
|
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
|
||||||
%void = OpTypeVoid
|
|
||||||
%12 = OpTypeFunction %void
|
|
||||||
%int = OpTypeInt 32 1
|
|
||||||
%int_0 = OpConstant %int 0
|
|
||||||
%_ptr_Function_int = OpTypePointer Function %int
|
|
||||||
%22 = OpConstantNull %int
|
|
||||||
%23 = OpTypeFunction %v4float
|
|
||||||
%float_1 = OpConstant %float 1
|
|
||||||
%textureDimensions_002b2a = OpFunction %void None %12
|
|
||||||
%15 = OpLabel
|
|
||||||
%res = OpVariable %_ptr_Function_int Function %22
|
|
||||||
%18 = OpLoad %11 %arg_0
|
|
||||||
%16 = OpImageQuerySizeLod %int %18 %int_0
|
|
||||||
OpStore %res %16
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main_inner = OpFunction %v4float None %23
|
|
||||||
%25 = OpLabel
|
|
||||||
%26 = OpFunctionCall %void %textureDimensions_002b2a
|
|
||||||
OpReturnValue %5
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main = OpFunction %void None %12
|
|
||||||
%28 = OpLabel
|
|
||||||
%29 = OpFunctionCall %v4float %vertex_main_inner
|
|
||||||
OpStore %value %29
|
|
||||||
OpStore %vertex_point_size %float_1
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%fragment_main = OpFunction %void None %12
|
|
||||||
%32 = OpLabel
|
|
||||||
%33 = OpFunctionCall %void %textureDimensions_002b2a
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%compute_main = OpFunction %void None %12
|
|
||||||
%35 = OpLabel
|
|
||||||
%36 = OpFunctionCall %void %textureDimensions_002b2a
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
|
@ -1,21 +0,0 @@
|
||||||
@group(1) @binding(0) var arg_0 : texture_1d<f32>;
|
|
||||||
|
|
||||||
fn textureDimensions_002b2a() {
|
|
||||||
var res : i32 = textureDimensions(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@vertex
|
|
||||||
fn vertex_main() -> @builtin(position) vec4<f32> {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@fragment
|
|
||||||
fn fragment_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
}
|
|
||||||
|
|
||||||
@compute @workgroup_size(1)
|
|
||||||
fn compute_main() {
|
|
||||||
textureDimensions_002b2a();
|
|
||||||
}
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Copyright 2022 The Tint Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// File generated by tools/src/cmd/gen
|
||||||
|
// using the template:
|
||||||
|
// test/tint/builtins/gen/gen.wgsl.tmpl
|
||||||
|
//
|
||||||
|
// Do not modify this file directly
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@group(1) @binding(0) var arg_0: texture_multisampled_2d<i32>;
|
||||||
|
|
||||||
|
// fn textureDimensions(texture: texture_multisampled_2d<i32>) -> vec2<u32>
|
||||||
|
fn textureDimensions_00348c() {
|
||||||
|
var res: vec2<u32> = textureDimensions(arg_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@vertex
|
||||||
|
fn vertex_main() -> @builtin(position) vec4<f32> {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
return vec4<f32>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@fragment
|
||||||
|
fn fragment_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn compute_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
Texture2DMS<int4> arg_0 : register(t0, space1);
|
||||||
|
|
||||||
|
void textureDimensions_00348c() {
|
||||||
|
int3 tint_tmp;
|
||||||
|
arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||||
|
uint2 res = tint_tmp.xy;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
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() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
Texture2DMS<int4> arg_0 : register(t0, space1);
|
||||||
|
|
||||||
|
void textureDimensions_00348c() {
|
||||||
|
int3 tint_tmp;
|
||||||
|
arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
||||||
|
uint2 res = tint_tmp.xy;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
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() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
uniform highp isampler2DMS arg_0_1;
|
||||||
|
void textureDimensions_00348c() {
|
||||||
|
uvec2 res = uvec2(textureSize(arg_0_1));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 vertex_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
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;
|
||||||
|
|
||||||
|
uniform highp isampler2DMS arg_0_1;
|
||||||
|
void textureDimensions_00348c() {
|
||||||
|
uvec2 res = uvec2(textureSize(arg_0_1));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
}
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
fragment_main();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
uniform highp isampler2DMS arg_0_1;
|
||||||
|
void textureDimensions_00348c() {
|
||||||
|
uvec2 res = uvec2(textureSize(arg_0_1));
|
||||||
|
}
|
||||||
|
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
}
|
||||||
|
|
||||||
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||||
|
void main() {
|
||||||
|
compute_main();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
void textureDimensions_00348c(texture2d_ms<int, access::read> tint_symbol_1) {
|
||||||
|
uint2 res = uint2(tint_symbol_1.get_width(), tint_symbol_1.get_height());
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value [[position]];
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner(texture2d_ms<int, access::read> tint_symbol_2) {
|
||||||
|
textureDimensions_00348c(tint_symbol_2);
|
||||||
|
return float4(0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
vertex tint_symbol vertex_main(texture2d_ms<int, access::read> tint_symbol_3 [[texture(0)]]) {
|
||||||
|
float4 const inner_result = vertex_main_inner(tint_symbol_3);
|
||||||
|
tint_symbol wrapper_result = {};
|
||||||
|
wrapper_result.value = inner_result;
|
||||||
|
return wrapper_result;
|
||||||
|
}
|
||||||
|
|
||||||
|
fragment void fragment_main(texture2d_ms<int, access::read> tint_symbol_4 [[texture(0)]]) {
|
||||||
|
textureDimensions_00348c(tint_symbol_4);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
kernel void compute_main(texture2d_ms<int, access::read> tint_symbol_5 [[texture(0)]]) {
|
||||||
|
textureDimensions_00348c(tint_symbol_5);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 38
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpCapability ImageQuery
|
||||||
|
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 %arg_0 "arg_0"
|
||||||
|
OpName %textureDimensions_00348c "textureDimensions_00348c"
|
||||||
|
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
|
||||||
|
OpDecorate %arg_0 DescriptorSet 1
|
||||||
|
OpDecorate %arg_0 Binding 0
|
||||||
|
%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
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%11 = OpTypeImage %int 2D 0 0 1 1 Unknown
|
||||||
|
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
|
||||||
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%13 = OpTypeFunction %void
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%v2uint = OpTypeVector %uint 2
|
||||||
|
%_ptr_Function_v2uint = OpTypePointer Function %v2uint
|
||||||
|
%23 = OpConstantNull %v2uint
|
||||||
|
%24 = OpTypeFunction %v4float
|
||||||
|
%float_1 = OpConstant %float 1
|
||||||
|
%textureDimensions_00348c = OpFunction %void None %13
|
||||||
|
%16 = OpLabel
|
||||||
|
%res = OpVariable %_ptr_Function_v2uint Function %23
|
||||||
|
%20 = OpLoad %11 %arg_0
|
||||||
|
%17 = OpImageQuerySize %v2uint %20
|
||||||
|
OpStore %res %17
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%vertex_main_inner = OpFunction %v4float None %24
|
||||||
|
%26 = OpLabel
|
||||||
|
%27 = OpFunctionCall %void %textureDimensions_00348c
|
||||||
|
OpReturnValue %5
|
||||||
|
OpFunctionEnd
|
||||||
|
%vertex_main = OpFunction %void None %13
|
||||||
|
%29 = OpLabel
|
||||||
|
%30 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
|
OpStore %value %30
|
||||||
|
OpStore %vertex_point_size %float_1
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%fragment_main = OpFunction %void None %13
|
||||||
|
%33 = OpLabel
|
||||||
|
%34 = OpFunctionCall %void %textureDimensions_00348c
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%compute_main = OpFunction %void None %13
|
||||||
|
%36 = OpLabel
|
||||||
|
%37 = OpFunctionCall %void %textureDimensions_00348c
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,21 @@
|
||||||
|
@group(1) @binding(0) var arg_0 : texture_multisampled_2d<i32>;
|
||||||
|
|
||||||
|
fn textureDimensions_00348c() {
|
||||||
|
var res : vec2<u32> = textureDimensions(arg_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@vertex
|
||||||
|
fn vertex_main() -> @builtin(position) vec4<f32> {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
return vec4<f32>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@fragment
|
||||||
|
fn fragment_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn compute_main() {
|
||||||
|
textureDimensions_00348c();
|
||||||
|
}
|
|
@ -1,44 +0,0 @@
|
||||||
// Copyright 2021 The Tint Authors.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// File generated by tools/src/cmd/gen
|
|
||||||
// using the template:
|
|
||||||
// test/tint/builtins/gen/gen.wgsl.tmpl
|
|
||||||
//
|
|
||||||
// Do not modify this file directly
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@group(1) @binding(0) var arg_0: texture_storage_2d_array<r32sint, write>;
|
|
||||||
|
|
||||||
// fn textureDimensions(texture: texture_storage_2d_array<r32sint, write>) -> vec2<i32>
|
|
||||||
fn textureDimensions_012b82() {
|
|
||||||
var res: vec2<i32> = textureDimensions(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@vertex
|
|
||||||
fn vertex_main() -> @builtin(position) vec4<f32> {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@fragment
|
|
||||||
fn fragment_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
}
|
|
||||||
|
|
||||||
@compute @workgroup_size(1)
|
|
||||||
fn compute_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
RWTexture2DArray<int4> arg_0 : register(u0, space1);
|
|
||||||
|
|
||||||
void textureDimensions_012b82() {
|
|
||||||
int3 tint_tmp;
|
|
||||||
arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
|
||||||
int2 res = tint_tmp.xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
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() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
RWTexture2DArray<int4> arg_0 : register(u0, space1);
|
|
||||||
|
|
||||||
void textureDimensions_012b82() {
|
|
||||||
int3 tint_tmp;
|
|
||||||
arg_0.GetDimensions(tint_tmp.x, tint_tmp.y, tint_tmp.z);
|
|
||||||
int2 res = tint_tmp.xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
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() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
#version 310 es
|
|
||||||
|
|
||||||
layout(r32i) uniform highp writeonly iimage2DArray arg_0;
|
|
||||||
void textureDimensions_012b82() {
|
|
||||||
ivec2 res = imageSize(arg_0).xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 vertex_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
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;
|
|
||||||
|
|
||||||
layout(r32i) uniform highp writeonly iimage2DArray arg_0;
|
|
||||||
void textureDimensions_012b82() {
|
|
||||||
ivec2 res = imageSize(arg_0).xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fragment_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
fragment_main();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#version 310 es
|
|
||||||
|
|
||||||
layout(r32i) uniform highp writeonly iimage2DArray arg_0;
|
|
||||||
void textureDimensions_012b82() {
|
|
||||||
ivec2 res = imageSize(arg_0).xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
}
|
|
||||||
|
|
||||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
||||||
void main() {
|
|
||||||
compute_main();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
void textureDimensions_012b82(texture2d_array<int, access::write> tint_symbol_1) {
|
|
||||||
int2 res = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height());
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value [[position]];
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner(texture2d_array<int, access::write> tint_symbol_2) {
|
|
||||||
textureDimensions_012b82(tint_symbol_2);
|
|
||||||
return float4(0.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex tint_symbol vertex_main(texture2d_array<int, access::write> tint_symbol_3 [[texture(0)]]) {
|
|
||||||
float4 const inner_result = vertex_main_inner(tint_symbol_3);
|
|
||||||
tint_symbol wrapper_result = {};
|
|
||||||
wrapper_result.value = inner_result;
|
|
||||||
return wrapper_result;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment void fragment_main(texture2d_array<int, access::write> tint_symbol_4 [[texture(0)]]) {
|
|
||||||
textureDimensions_012b82(tint_symbol_4);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
kernel void compute_main(texture2d_array<int, access::write> tint_symbol_5 [[texture(0)]]) {
|
|
||||||
textureDimensions_012b82(tint_symbol_5);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
; SPIR-V
|
|
||||||
; Version: 1.3
|
|
||||||
; Generator: Google Tint Compiler; 0
|
|
||||||
; Bound: 39
|
|
||||||
; Schema: 0
|
|
||||||
OpCapability Shader
|
|
||||||
OpCapability ImageQuery
|
|
||||||
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 %arg_0 "arg_0"
|
|
||||||
OpName %textureDimensions_012b82 "textureDimensions_012b82"
|
|
||||||
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
|
|
||||||
OpDecorate %arg_0 NonReadable
|
|
||||||
OpDecorate %arg_0 DescriptorSet 1
|
|
||||||
OpDecorate %arg_0 Binding 0
|
|
||||||
%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
|
|
||||||
%int = OpTypeInt 32 1
|
|
||||||
%11 = OpTypeImage %int 2D 0 1 0 2 R32i
|
|
||||||
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
|
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
|
||||||
%void = OpTypeVoid
|
|
||||||
%13 = OpTypeFunction %void
|
|
||||||
%v2int = OpTypeVector %int 2
|
|
||||||
%v3int = OpTypeVector %int 3
|
|
||||||
%_ptr_Function_v2int = OpTypePointer Function %v2int
|
|
||||||
%24 = OpConstantNull %v2int
|
|
||||||
%25 = OpTypeFunction %v4float
|
|
||||||
%float_1 = OpConstant %float 1
|
|
||||||
%textureDimensions_012b82 = OpFunction %void None %13
|
|
||||||
%16 = OpLabel
|
|
||||||
%res = OpVariable %_ptr_Function_v2int Function %24
|
|
||||||
%21 = OpLoad %11 %arg_0
|
|
||||||
%19 = OpImageQuerySize %v3int %21
|
|
||||||
%17 = OpVectorShuffle %v2int %19 %19 0 1
|
|
||||||
OpStore %res %17
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main_inner = OpFunction %v4float None %25
|
|
||||||
%27 = OpLabel
|
|
||||||
%28 = OpFunctionCall %void %textureDimensions_012b82
|
|
||||||
OpReturnValue %5
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main = OpFunction %void None %13
|
|
||||||
%30 = OpLabel
|
|
||||||
%31 = OpFunctionCall %v4float %vertex_main_inner
|
|
||||||
OpStore %value %31
|
|
||||||
OpStore %vertex_point_size %float_1
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%fragment_main = OpFunction %void None %13
|
|
||||||
%34 = OpLabel
|
|
||||||
%35 = OpFunctionCall %void %textureDimensions_012b82
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%compute_main = OpFunction %void None %13
|
|
||||||
%37 = OpLabel
|
|
||||||
%38 = OpFunctionCall %void %textureDimensions_012b82
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
|
@ -1,21 +0,0 @@
|
||||||
@group(1) @binding(0) var arg_0 : texture_storage_2d_array<r32sint, write>;
|
|
||||||
|
|
||||||
fn textureDimensions_012b82() {
|
|
||||||
var res : vec2<i32> = textureDimensions(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@vertex
|
|
||||||
fn vertex_main() -> @builtin(position) vec4<f32> {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@fragment
|
|
||||||
fn fragment_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
}
|
|
||||||
|
|
||||||
@compute @workgroup_size(1)
|
|
||||||
fn compute_main() {
|
|
||||||
textureDimensions_012b82();
|
|
||||||
}
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Copyright 2022 The Tint Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// File generated by tools/src/cmd/gen
|
||||||
|
// using the template:
|
||||||
|
// test/tint/builtins/gen/gen.wgsl.tmpl
|
||||||
|
//
|
||||||
|
// Do not modify this file directly
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@group(1) @binding(0) var arg_0: texture_1d<i32>;
|
||||||
|
|
||||||
|
// fn textureDimensions(texture: texture_1d<i32>, level: u32) -> u32
|
||||||
|
fn textureDimensions_022903() {
|
||||||
|
var res: u32 = textureDimensions(arg_0, 1u);
|
||||||
|
}
|
||||||
|
|
||||||
|
@vertex
|
||||||
|
fn vertex_main() -> @builtin(position) vec4<f32> {
|
||||||
|
textureDimensions_022903();
|
||||||
|
return vec4<f32>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@fragment
|
||||||
|
fn fragment_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn compute_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
Texture1D<int4> arg_0 : register(t0, space1);
|
||||||
|
|
||||||
|
void textureDimensions_022903() {
|
||||||
|
int2 tint_tmp;
|
||||||
|
arg_0.GetDimensions(1u, tint_tmp.x, tint_tmp.y);
|
||||||
|
uint res = tint_tmp.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
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() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
Texture1D<int4> arg_0 : register(t0, space1);
|
||||||
|
|
||||||
|
void textureDimensions_022903() {
|
||||||
|
int2 tint_tmp;
|
||||||
|
arg_0.GetDimensions(1u, tint_tmp.x, tint_tmp.y);
|
||||||
|
uint res = tint_tmp.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
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() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
uniform highp isampler1D arg_0_1;
|
||||||
|
void textureDimensions_022903() {
|
||||||
|
uint res = uint(textureSize(arg_0_1, int(1u)));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 vertex_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
Error parsing GLSL shader:
|
||||||
|
ERROR: 0:3: 'isampler1D' : Reserved word.
|
||||||
|
ERROR: 0:3: '' : compilation terminated
|
||||||
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#version 310 es
|
||||||
|
precision mediump float;
|
||||||
|
|
||||||
|
uniform highp isampler1D arg_0_1;
|
||||||
|
void textureDimensions_022903() {
|
||||||
|
uint res = uint(textureSize(arg_0_1, int(1u)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
}
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
fragment_main();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Error parsing GLSL shader:
|
||||||
|
ERROR: 0:4: 'isampler1D' : Reserved word.
|
||||||
|
ERROR: 0:4: '' : compilation terminated
|
||||||
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
uniform highp isampler1D arg_0_1;
|
||||||
|
void textureDimensions_022903() {
|
||||||
|
uint res = uint(textureSize(arg_0_1, int(1u)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
}
|
||||||
|
|
||||||
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||||
|
void main() {
|
||||||
|
compute_main();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Error parsing GLSL shader:
|
||||||
|
ERROR: 0:3: 'isampler1D' : Reserved word.
|
||||||
|
ERROR: 0:3: '' : compilation terminated
|
||||||
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
void textureDimensions_022903(texture1d<int, access::sample> tint_symbol_1) {
|
||||||
|
uint res = tint_symbol_1.get_width(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value [[position]];
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner(texture1d<int, access::sample> tint_symbol_2) {
|
||||||
|
textureDimensions_022903(tint_symbol_2);
|
||||||
|
return float4(0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
vertex tint_symbol vertex_main(texture1d<int, access::sample> tint_symbol_3 [[texture(0)]]) {
|
||||||
|
float4 const inner_result = vertex_main_inner(tint_symbol_3);
|
||||||
|
tint_symbol wrapper_result = {};
|
||||||
|
wrapper_result.value = inner_result;
|
||||||
|
return wrapper_result;
|
||||||
|
}
|
||||||
|
|
||||||
|
fragment void fragment_main(texture1d<int, access::sample> tint_symbol_4 [[texture(0)]]) {
|
||||||
|
textureDimensions_022903(tint_symbol_4);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
kernel void compute_main(texture1d<int, access::sample> tint_symbol_5 [[texture(0)]]) {
|
||||||
|
textureDimensions_022903(tint_symbol_5);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 38
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpCapability Sampled1D
|
||||||
|
OpCapability ImageQuery
|
||||||
|
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 %arg_0 "arg_0"
|
||||||
|
OpName %textureDimensions_022903 "textureDimensions_022903"
|
||||||
|
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
|
||||||
|
OpDecorate %arg_0 DescriptorSet 1
|
||||||
|
OpDecorate %arg_0 Binding 0
|
||||||
|
%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
|
||||||
|
%int = OpTypeInt 32 1
|
||||||
|
%11 = OpTypeImage %int 1D 0 0 0 1 Unknown
|
||||||
|
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
|
||||||
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%13 = OpTypeFunction %void
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%uint_1 = OpConstant %uint 1
|
||||||
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||||
|
%23 = OpConstantNull %uint
|
||||||
|
%24 = OpTypeFunction %v4float
|
||||||
|
%float_1 = OpConstant %float 1
|
||||||
|
%textureDimensions_022903 = OpFunction %void None %13
|
||||||
|
%16 = OpLabel
|
||||||
|
%res = OpVariable %_ptr_Function_uint Function %23
|
||||||
|
%19 = OpLoad %11 %arg_0
|
||||||
|
%17 = OpImageQuerySizeLod %uint %19 %uint_1
|
||||||
|
OpStore %res %17
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%vertex_main_inner = OpFunction %v4float None %24
|
||||||
|
%26 = OpLabel
|
||||||
|
%27 = OpFunctionCall %void %textureDimensions_022903
|
||||||
|
OpReturnValue %5
|
||||||
|
OpFunctionEnd
|
||||||
|
%vertex_main = OpFunction %void None %13
|
||||||
|
%29 = OpLabel
|
||||||
|
%30 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
|
OpStore %value %30
|
||||||
|
OpStore %vertex_point_size %float_1
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%fragment_main = OpFunction %void None %13
|
||||||
|
%33 = OpLabel
|
||||||
|
%34 = OpFunctionCall %void %textureDimensions_022903
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%compute_main = OpFunction %void None %13
|
||||||
|
%36 = OpLabel
|
||||||
|
%37 = OpFunctionCall %void %textureDimensions_022903
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,21 @@
|
||||||
|
@group(1) @binding(0) var arg_0 : texture_1d<i32>;
|
||||||
|
|
||||||
|
fn textureDimensions_022903() {
|
||||||
|
var res : u32 = textureDimensions(arg_0, 1u);
|
||||||
|
}
|
||||||
|
|
||||||
|
@vertex
|
||||||
|
fn vertex_main() -> @builtin(position) vec4<f32> {
|
||||||
|
textureDimensions_022903();
|
||||||
|
return vec4<f32>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@fragment
|
||||||
|
fn fragment_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn compute_main() {
|
||||||
|
textureDimensions_022903();
|
||||||
|
}
|
|
@ -1,44 +0,0 @@
|
||||||
// Copyright 2021 The Tint Authors.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// File generated by tools/src/cmd/gen
|
|
||||||
// using the template:
|
|
||||||
// test/tint/builtins/gen/gen.wgsl.tmpl
|
|
||||||
//
|
|
||||||
// Do not modify this file directly
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@group(1) @binding(0) var arg_0: texture_storage_1d<rgba16sint, write>;
|
|
||||||
|
|
||||||
// fn textureDimensions(texture: texture_storage_1d<rgba16sint, write>) -> i32
|
|
||||||
fn textureDimensions_08753d() {
|
|
||||||
var res: i32 = textureDimensions(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@vertex
|
|
||||||
fn vertex_main() -> @builtin(position) vec4<f32> {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@fragment
|
|
||||||
fn fragment_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
}
|
|
||||||
|
|
||||||
@compute @workgroup_size(1)
|
|
||||||
fn compute_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
RWTexture1D<int4> arg_0 : register(u0, space1);
|
|
||||||
|
|
||||||
void textureDimensions_08753d() {
|
|
||||||
int tint_tmp;
|
|
||||||
arg_0.GetDimensions(tint_tmp);
|
|
||||||
int res = tint_tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
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() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
RWTexture1D<int4> arg_0 : register(u0, space1);
|
|
||||||
|
|
||||||
void textureDimensions_08753d() {
|
|
||||||
int tint_tmp;
|
|
||||||
arg_0.GetDimensions(tint_tmp);
|
|
||||||
int res = tint_tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
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() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
SKIP: FAILED
|
|
||||||
|
|
||||||
#version 310 es
|
|
||||||
|
|
||||||
layout(rgba16i) uniform highp writeonly iimage1D arg_0;
|
|
||||||
void textureDimensions_08753d() {
|
|
||||||
int res = imageSize(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 vertex_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
Error parsing GLSL shader:
|
|
||||||
ERROR: 0:3: 'iimage1D' : Reserved word.
|
|
||||||
WARNING: 0:3: 'layout' : useless application of layout qualifier
|
|
||||||
ERROR: 0:3: '' : compilation terminated
|
|
||||||
ERROR: 2 compilation errors. No code generated.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#version 310 es
|
|
||||||
precision mediump float;
|
|
||||||
|
|
||||||
layout(rgba16i) uniform highp writeonly iimage1D arg_0;
|
|
||||||
void textureDimensions_08753d() {
|
|
||||||
int res = imageSize(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fragment_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
fragment_main();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Error parsing GLSL shader:
|
|
||||||
ERROR: 0:4: 'iimage1D' : Reserved word.
|
|
||||||
WARNING: 0:4: 'layout' : useless application of layout qualifier
|
|
||||||
ERROR: 0:4: '' : compilation terminated
|
|
||||||
ERROR: 2 compilation errors. No code generated.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#version 310 es
|
|
||||||
|
|
||||||
layout(rgba16i) uniform highp writeonly iimage1D arg_0;
|
|
||||||
void textureDimensions_08753d() {
|
|
||||||
int res = imageSize(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
}
|
|
||||||
|
|
||||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
||||||
void main() {
|
|
||||||
compute_main();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Error parsing GLSL shader:
|
|
||||||
ERROR: 0:3: 'iimage1D' : Reserved word.
|
|
||||||
WARNING: 0:3: 'layout' : useless application of layout qualifier
|
|
||||||
ERROR: 0:3: '' : compilation terminated
|
|
||||||
ERROR: 2 compilation errors. No code generated.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
void textureDimensions_08753d(texture1d<int, access::write> tint_symbol_1) {
|
|
||||||
int res = int(tint_symbol_1.get_width(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value [[position]];
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner(texture1d<int, access::write> tint_symbol_2) {
|
|
||||||
textureDimensions_08753d(tint_symbol_2);
|
|
||||||
return float4(0.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex tint_symbol vertex_main(texture1d<int, access::write> tint_symbol_3 [[texture(0)]]) {
|
|
||||||
float4 const inner_result = vertex_main_inner(tint_symbol_3);
|
|
||||||
tint_symbol wrapper_result = {};
|
|
||||||
wrapper_result.value = inner_result;
|
|
||||||
return wrapper_result;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment void fragment_main(texture1d<int, access::write> tint_symbol_4 [[texture(0)]]) {
|
|
||||||
textureDimensions_08753d(tint_symbol_4);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
kernel void compute_main(texture1d<int, access::write> tint_symbol_5 [[texture(0)]]) {
|
|
||||||
textureDimensions_08753d(tint_symbol_5);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,76 +0,0 @@
|
||||||
; SPIR-V
|
|
||||||
; Version: 1.3
|
|
||||||
; Generator: Google Tint Compiler; 0
|
|
||||||
; Bound: 36
|
|
||||||
; Schema: 0
|
|
||||||
OpCapability Shader
|
|
||||||
OpCapability Image1D
|
|
||||||
OpCapability ImageQuery
|
|
||||||
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 %arg_0 "arg_0"
|
|
||||||
OpName %textureDimensions_08753d "textureDimensions_08753d"
|
|
||||||
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
|
|
||||||
OpDecorate %arg_0 NonReadable
|
|
||||||
OpDecorate %arg_0 DescriptorSet 1
|
|
||||||
OpDecorate %arg_0 Binding 0
|
|
||||||
%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
|
|
||||||
%int = OpTypeInt 32 1
|
|
||||||
%11 = OpTypeImage %int 1D 0 0 0 2 Rgba16i
|
|
||||||
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
|
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
|
||||||
%void = OpTypeVoid
|
|
||||||
%13 = OpTypeFunction %void
|
|
||||||
%_ptr_Function_int = OpTypePointer Function %int
|
|
||||||
%21 = OpConstantNull %int
|
|
||||||
%22 = OpTypeFunction %v4float
|
|
||||||
%float_1 = OpConstant %float 1
|
|
||||||
%textureDimensions_08753d = OpFunction %void None %13
|
|
||||||
%16 = OpLabel
|
|
||||||
%res = OpVariable %_ptr_Function_int Function %21
|
|
||||||
%18 = OpLoad %11 %arg_0
|
|
||||||
%17 = OpImageQuerySize %int %18
|
|
||||||
OpStore %res %17
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main_inner = OpFunction %v4float None %22
|
|
||||||
%24 = OpLabel
|
|
||||||
%25 = OpFunctionCall %void %textureDimensions_08753d
|
|
||||||
OpReturnValue %5
|
|
||||||
OpFunctionEnd
|
|
||||||
%vertex_main = OpFunction %void None %13
|
|
||||||
%27 = OpLabel
|
|
||||||
%28 = OpFunctionCall %v4float %vertex_main_inner
|
|
||||||
OpStore %value %28
|
|
||||||
OpStore %vertex_point_size %float_1
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%fragment_main = OpFunction %void None %13
|
|
||||||
%31 = OpLabel
|
|
||||||
%32 = OpFunctionCall %void %textureDimensions_08753d
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
||||||
%compute_main = OpFunction %void None %13
|
|
||||||
%34 = OpLabel
|
|
||||||
%35 = OpFunctionCall %void %textureDimensions_08753d
|
|
||||||
OpReturn
|
|
||||||
OpFunctionEnd
|
|
|
@ -1,21 +0,0 @@
|
||||||
@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba16sint, write>;
|
|
||||||
|
|
||||||
fn textureDimensions_08753d() {
|
|
||||||
var res : i32 = textureDimensions(arg_0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@vertex
|
|
||||||
fn vertex_main() -> @builtin(position) vec4<f32> {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@fragment
|
|
||||||
fn fragment_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
}
|
|
||||||
|
|
||||||
@compute @workgroup_size(1)
|
|
||||||
fn compute_main() {
|
|
||||||
textureDimensions_08753d();
|
|
||||||
}
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Copyright 2022 The Tint Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// File generated by tools/src/cmd/gen
|
||||||
|
// using the template:
|
||||||
|
// test/tint/builtins/gen/gen.wgsl.tmpl
|
||||||
|
//
|
||||||
|
// Do not modify this file directly
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@group(1) @binding(0) var arg_0: texture_3d<f32>;
|
||||||
|
|
||||||
|
// fn textureDimensions(texture: texture_3d<f32>, level: u32) -> vec3<u32>
|
||||||
|
fn textureDimensions_0890c6() {
|
||||||
|
var res: vec3<u32> = textureDimensions(arg_0, 1u);
|
||||||
|
}
|
||||||
|
|
||||||
|
@vertex
|
||||||
|
fn vertex_main() -> @builtin(position) vec4<f32> {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
return vec4<f32>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@fragment
|
||||||
|
fn fragment_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn compute_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
Texture3D<float4> arg_0 : register(t0, space1);
|
||||||
|
|
||||||
|
void textureDimensions_0890c6() {
|
||||||
|
int4 tint_tmp;
|
||||||
|
arg_0.GetDimensions(1u, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
|
||||||
|
uint3 res = tint_tmp.xyz;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
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() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
Texture3D<float4> arg_0 : register(t0, space1);
|
||||||
|
|
||||||
|
void textureDimensions_0890c6() {
|
||||||
|
int4 tint_tmp;
|
||||||
|
arg_0.GetDimensions(1u, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
|
||||||
|
uint3 res = tint_tmp.xyz;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
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() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
uniform highp sampler3D arg_0_1;
|
||||||
|
void textureDimensions_0890c6() {
|
||||||
|
uvec3 res = uvec3(textureSize(arg_0_1, int(1u)));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 vertex_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
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;
|
||||||
|
|
||||||
|
uniform highp sampler3D arg_0_1;
|
||||||
|
void textureDimensions_0890c6() {
|
||||||
|
uvec3 res = uvec3(textureSize(arg_0_1, int(1u)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
}
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
fragment_main();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
uniform highp sampler3D arg_0_1;
|
||||||
|
void textureDimensions_0890c6() {
|
||||||
|
uvec3 res = uvec3(textureSize(arg_0_1, int(1u)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
}
|
||||||
|
|
||||||
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||||
|
void main() {
|
||||||
|
compute_main();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
void textureDimensions_0890c6(texture3d<float, access::sample> tint_symbol_1) {
|
||||||
|
uint3 res = uint3(tint_symbol_1.get_width(1u), tint_symbol_1.get_height(1u), tint_symbol_1.get_depth(1u));
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value [[position]];
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner(texture3d<float, access::sample> tint_symbol_2) {
|
||||||
|
textureDimensions_0890c6(tint_symbol_2);
|
||||||
|
return float4(0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
vertex tint_symbol vertex_main(texture3d<float, access::sample> tint_symbol_3 [[texture(0)]]) {
|
||||||
|
float4 const inner_result = vertex_main_inner(tint_symbol_3);
|
||||||
|
tint_symbol wrapper_result = {};
|
||||||
|
wrapper_result.value = inner_result;
|
||||||
|
return wrapper_result;
|
||||||
|
}
|
||||||
|
|
||||||
|
fragment void fragment_main(texture3d<float, access::sample> tint_symbol_4 [[texture(0)]]) {
|
||||||
|
textureDimensions_0890c6(tint_symbol_4);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
kernel void compute_main(texture3d<float, access::sample> tint_symbol_5 [[texture(0)]]) {
|
||||||
|
textureDimensions_0890c6(tint_symbol_5);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 38
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpCapability ImageQuery
|
||||||
|
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 %arg_0 "arg_0"
|
||||||
|
OpName %textureDimensions_0890c6 "textureDimensions_0890c6"
|
||||||
|
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
|
||||||
|
OpDecorate %arg_0 DescriptorSet 1
|
||||||
|
OpDecorate %arg_0 Binding 0
|
||||||
|
%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
|
||||||
|
%11 = OpTypeImage %float 3D 0 0 0 1 Unknown
|
||||||
|
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
|
||||||
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%12 = OpTypeFunction %void
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%v3uint = OpTypeVector %uint 3
|
||||||
|
%uint_1 = OpConstant %uint 1
|
||||||
|
%_ptr_Function_v3uint = OpTypePointer Function %v3uint
|
||||||
|
%23 = OpConstantNull %v3uint
|
||||||
|
%24 = OpTypeFunction %v4float
|
||||||
|
%float_1 = OpConstant %float 1
|
||||||
|
%textureDimensions_0890c6 = OpFunction %void None %12
|
||||||
|
%15 = OpLabel
|
||||||
|
%res = OpVariable %_ptr_Function_v3uint Function %23
|
||||||
|
%19 = OpLoad %11 %arg_0
|
||||||
|
%16 = OpImageQuerySizeLod %v3uint %19 %uint_1
|
||||||
|
OpStore %res %16
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%vertex_main_inner = OpFunction %v4float None %24
|
||||||
|
%26 = OpLabel
|
||||||
|
%27 = OpFunctionCall %void %textureDimensions_0890c6
|
||||||
|
OpReturnValue %5
|
||||||
|
OpFunctionEnd
|
||||||
|
%vertex_main = OpFunction %void None %12
|
||||||
|
%29 = OpLabel
|
||||||
|
%30 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
|
OpStore %value %30
|
||||||
|
OpStore %vertex_point_size %float_1
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%fragment_main = OpFunction %void None %12
|
||||||
|
%33 = OpLabel
|
||||||
|
%34 = OpFunctionCall %void %textureDimensions_0890c6
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%compute_main = OpFunction %void None %12
|
||||||
|
%36 = OpLabel
|
||||||
|
%37 = OpFunctionCall %void %textureDimensions_0890c6
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,21 @@
|
||||||
|
@group(1) @binding(0) var arg_0 : texture_3d<f32>;
|
||||||
|
|
||||||
|
fn textureDimensions_0890c6() {
|
||||||
|
var res : vec3<u32> = textureDimensions(arg_0, 1u);
|
||||||
|
}
|
||||||
|
|
||||||
|
@vertex
|
||||||
|
fn vertex_main() -> @builtin(position) vec4<f32> {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
return vec4<f32>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@fragment
|
||||||
|
fn fragment_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn compute_main() {
|
||||||
|
textureDimensions_0890c6();
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Copyright 2022 The Tint Authors.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// File generated by tools/src/cmd/gen
|
||||||
|
// using the template:
|
||||||
|
// test/tint/builtins/gen/gen.wgsl.tmpl
|
||||||
|
//
|
||||||
|
// Do not modify this file directly
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@group(1) @binding(0) var arg_0: texture_storage_1d<rgba32uint, write>;
|
||||||
|
|
||||||
|
// fn textureDimensions(texture: texture_storage_1d<rgba32uint, write>) -> u32
|
||||||
|
fn textureDimensions_09140b() {
|
||||||
|
var res: u32 = textureDimensions(arg_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@vertex
|
||||||
|
fn vertex_main() -> @builtin(position) vec4<f32> {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
return vec4<f32>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@fragment
|
||||||
|
fn fragment_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn compute_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
RWTexture1D<uint4> arg_0 : register(u0, space1);
|
||||||
|
|
||||||
|
void textureDimensions_09140b() {
|
||||||
|
int tint_tmp;
|
||||||
|
arg_0.GetDimensions(tint_tmp);
|
||||||
|
uint res = tint_tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
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() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
RWTexture1D<uint4> arg_0 : register(u0, space1);
|
||||||
|
|
||||||
|
void textureDimensions_09140b() {
|
||||||
|
int tint_tmp;
|
||||||
|
arg_0.GetDimensions(tint_tmp);
|
||||||
|
uint res = tint_tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value : SV_Position;
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
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() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
[numthreads(1, 1, 1)]
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
return;
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
SKIP: FAILED
|
||||||
|
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
|
||||||
|
void textureDimensions_09140b() {
|
||||||
|
uint res = uint(imageSize(arg_0));
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 vertex_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
Error parsing GLSL shader:
|
||||||
|
ERROR: 0:3: 'uimage1D' : Reserved word.
|
||||||
|
WARNING: 0:3: 'layout' : useless application of layout qualifier
|
||||||
|
ERROR: 0:3: '' : compilation terminated
|
||||||
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#version 310 es
|
||||||
|
precision mediump float;
|
||||||
|
|
||||||
|
layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
|
||||||
|
void textureDimensions_09140b() {
|
||||||
|
uint res = uint(imageSize(arg_0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
}
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
fragment_main();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Error parsing GLSL shader:
|
||||||
|
ERROR: 0:4: 'uimage1D' : Reserved word.
|
||||||
|
WARNING: 0:4: 'layout' : useless application of layout qualifier
|
||||||
|
ERROR: 0:4: '' : compilation terminated
|
||||||
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#version 310 es
|
||||||
|
|
||||||
|
layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
|
||||||
|
void textureDimensions_09140b() {
|
||||||
|
uint res = uint(imageSize(arg_0));
|
||||||
|
}
|
||||||
|
|
||||||
|
void compute_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
}
|
||||||
|
|
||||||
|
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
||||||
|
void main() {
|
||||||
|
compute_main();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Error parsing GLSL shader:
|
||||||
|
ERROR: 0:3: 'uimage1D' : Reserved word.
|
||||||
|
WARNING: 0:3: 'layout' : useless application of layout qualifier
|
||||||
|
ERROR: 0:3: '' : compilation terminated
|
||||||
|
ERROR: 2 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
|
||||||
|
using namespace metal;
|
||||||
|
void textureDimensions_09140b(texture1d<uint, access::write> tint_symbol_1) {
|
||||||
|
uint res = tint_symbol_1.get_width(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct tint_symbol {
|
||||||
|
float4 value [[position]];
|
||||||
|
};
|
||||||
|
|
||||||
|
float4 vertex_main_inner(texture1d<uint, access::write> tint_symbol_2) {
|
||||||
|
textureDimensions_09140b(tint_symbol_2);
|
||||||
|
return float4(0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
vertex tint_symbol vertex_main(texture1d<uint, access::write> tint_symbol_3 [[texture(0)]]) {
|
||||||
|
float4 const inner_result = vertex_main_inner(tint_symbol_3);
|
||||||
|
tint_symbol wrapper_result = {};
|
||||||
|
wrapper_result.value = inner_result;
|
||||||
|
return wrapper_result;
|
||||||
|
}
|
||||||
|
|
||||||
|
fragment void fragment_main(texture1d<uint, access::write> tint_symbol_4 [[texture(0)]]) {
|
||||||
|
textureDimensions_09140b(tint_symbol_4);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
kernel void compute_main(texture1d<uint, access::write> tint_symbol_5 [[texture(0)]]) {
|
||||||
|
textureDimensions_09140b(tint_symbol_5);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
; SPIR-V
|
||||||
|
; Version: 1.3
|
||||||
|
; Generator: Google Tint Compiler; 0
|
||||||
|
; Bound: 36
|
||||||
|
; Schema: 0
|
||||||
|
OpCapability Shader
|
||||||
|
OpCapability Image1D
|
||||||
|
OpCapability ImageQuery
|
||||||
|
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 %arg_0 "arg_0"
|
||||||
|
OpName %textureDimensions_09140b "textureDimensions_09140b"
|
||||||
|
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
|
||||||
|
OpDecorate %arg_0 NonReadable
|
||||||
|
OpDecorate %arg_0 DescriptorSet 1
|
||||||
|
OpDecorate %arg_0 Binding 0
|
||||||
|
%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
|
||||||
|
%uint = OpTypeInt 32 0
|
||||||
|
%11 = OpTypeImage %uint 1D 0 0 0 2 Rgba32ui
|
||||||
|
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
|
||||||
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
%void = OpTypeVoid
|
||||||
|
%13 = OpTypeFunction %void
|
||||||
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||||||
|
%21 = OpConstantNull %uint
|
||||||
|
%22 = OpTypeFunction %v4float
|
||||||
|
%float_1 = OpConstant %float 1
|
||||||
|
%textureDimensions_09140b = OpFunction %void None %13
|
||||||
|
%16 = OpLabel
|
||||||
|
%res = OpVariable %_ptr_Function_uint Function %21
|
||||||
|
%18 = OpLoad %11 %arg_0
|
||||||
|
%17 = OpImageQuerySize %uint %18
|
||||||
|
OpStore %res %17
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%vertex_main_inner = OpFunction %v4float None %22
|
||||||
|
%24 = OpLabel
|
||||||
|
%25 = OpFunctionCall %void %textureDimensions_09140b
|
||||||
|
OpReturnValue %5
|
||||||
|
OpFunctionEnd
|
||||||
|
%vertex_main = OpFunction %void None %13
|
||||||
|
%27 = OpLabel
|
||||||
|
%28 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
|
OpStore %value %28
|
||||||
|
OpStore %vertex_point_size %float_1
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%fragment_main = OpFunction %void None %13
|
||||||
|
%31 = OpLabel
|
||||||
|
%32 = OpFunctionCall %void %textureDimensions_09140b
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
%compute_main = OpFunction %void None %13
|
||||||
|
%34 = OpLabel
|
||||||
|
%35 = OpFunctionCall %void %textureDimensions_09140b
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
|
@ -0,0 +1,21 @@
|
||||||
|
@group(1) @binding(0) var arg_0 : texture_storage_1d<rgba32uint, write>;
|
||||||
|
|
||||||
|
fn textureDimensions_09140b() {
|
||||||
|
var res : u32 = textureDimensions(arg_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@vertex
|
||||||
|
fn vertex_main() -> @builtin(position) vec4<f32> {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
return vec4<f32>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@fragment
|
||||||
|
fn fragment_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
}
|
||||||
|
|
||||||
|
@compute @workgroup_size(1)
|
||||||
|
fn compute_main() {
|
||||||
|
textureDimensions_09140b();
|
||||||
|
}
|
|
@ -1,44 +0,0 @@
|
||||||
// Copyright 2022 The Tint Authors.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// File generated by tools/src/cmd/gen
|
|
||||||
// using the template:
|
|
||||||
// test/tint/builtins/gen/gen.wgsl.tmpl
|
|
||||||
//
|
|
||||||
// Do not modify this file directly
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@group(1) @binding(0) var arg_0: texture_depth_2d_array;
|
|
||||||
|
|
||||||
// fn textureDimensions(texture: texture_depth_2d_array, level: u32) -> vec2<i32>
|
|
||||||
fn textureDimensions_0a1ce8() {
|
|
||||||
var res: vec2<i32> = textureDimensions(arg_0, 1u);
|
|
||||||
}
|
|
||||||
|
|
||||||
@vertex
|
|
||||||
fn vertex_main() -> @builtin(position) vec4<f32> {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
return vec4<f32>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@fragment
|
|
||||||
fn fragment_main() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
}
|
|
||||||
|
|
||||||
@compute @workgroup_size(1)
|
|
||||||
fn compute_main() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
Texture2DArray arg_0 : register(t0, space1);
|
|
||||||
|
|
||||||
void textureDimensions_0a1ce8() {
|
|
||||||
int4 tint_tmp;
|
|
||||||
arg_0.GetDimensions(1u, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
|
|
||||||
int2 res = tint_tmp.xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
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() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
Texture2DArray arg_0 : register(t0, space1);
|
|
||||||
|
|
||||||
void textureDimensions_0a1ce8() {
|
|
||||||
int4 tint_tmp;
|
|
||||||
arg_0.GetDimensions(1u, tint_tmp.x, tint_tmp.y, tint_tmp.z, tint_tmp.w);
|
|
||||||
int2 res = tint_tmp.xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value : SV_Position;
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
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() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
[numthreads(1, 1, 1)]
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
#version 310 es
|
|
||||||
|
|
||||||
uniform highp sampler2DArray arg_0_1;
|
|
||||||
void textureDimensions_0a1ce8() {
|
|
||||||
ivec2 res = textureSize(arg_0_1, int(1u)).xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 vertex_main() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
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;
|
|
||||||
|
|
||||||
uniform highp sampler2DArray arg_0_1;
|
|
||||||
void textureDimensions_0a1ce8() {
|
|
||||||
ivec2 res = textureSize(arg_0_1, int(1u)).xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fragment_main() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
}
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
fragment_main();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#version 310 es
|
|
||||||
|
|
||||||
uniform highp sampler2DArray arg_0_1;
|
|
||||||
void textureDimensions_0a1ce8() {
|
|
||||||
ivec2 res = textureSize(arg_0_1, int(1u)).xy;
|
|
||||||
}
|
|
||||||
|
|
||||||
void compute_main() {
|
|
||||||
textureDimensions_0a1ce8();
|
|
||||||
}
|
|
||||||
|
|
||||||
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
||||||
void main() {
|
|
||||||
compute_main();
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
#include <metal_stdlib>
|
|
||||||
|
|
||||||
using namespace metal;
|
|
||||||
void textureDimensions_0a1ce8(depth2d_array<float, access::sample> tint_symbol_1) {
|
|
||||||
int2 res = int2(tint_symbol_1.get_width(1u), tint_symbol_1.get_height(1u));
|
|
||||||
}
|
|
||||||
|
|
||||||
struct tint_symbol {
|
|
||||||
float4 value [[position]];
|
|
||||||
};
|
|
||||||
|
|
||||||
float4 vertex_main_inner(depth2d_array<float, access::sample> tint_symbol_2) {
|
|
||||||
textureDimensions_0a1ce8(tint_symbol_2);
|
|
||||||
return float4(0.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
vertex tint_symbol vertex_main(depth2d_array<float, access::sample> tint_symbol_3 [[texture(0)]]) {
|
|
||||||
float4 const inner_result = vertex_main_inner(tint_symbol_3);
|
|
||||||
tint_symbol wrapper_result = {};
|
|
||||||
wrapper_result.value = inner_result;
|
|
||||||
return wrapper_result;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragment void fragment_main(depth2d_array<float, access::sample> tint_symbol_4 [[texture(0)]]) {
|
|
||||||
textureDimensions_0a1ce8(tint_symbol_4);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
kernel void compute_main(depth2d_array<float, access::sample> tint_symbol_5 [[texture(0)]]) {
|
|
||||||
textureDimensions_0a1ce8(tint_symbol_5);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue