GLSL: implement CombineSamplers transform (string version).

This transform converts all separate texture/sampler references
in a program into combined texture/samplers. This is required for GLSL,
which does not support separate texture/samplers.

As input, the transform requires a map from the unique sampler/texture
pairs previously gathered by the Resolver to strings, which will be
used as the names of the newly-generated combined samplers. Note that
binding points are unused by GLSL, and so are set to (0, 0) with
collision detection disabled.

All function signatures containing textures or samplers are rewritten,
as well as function calls and texture intrinsic calls. For texture
intrinsic calls, a placeholder sampler is used to satisfy the subsequent
Resolver pass (GLSL texture intrinsics do not require a separate sampler,
but WGSL intrinsics do). The placeholder is also used if the shader
contains only texture references (e.g., textureLoad).

Bug: tint:1366

Change-Id: Iff8407d28fdc2a8adac5cb655707a08c8553c389
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/77080
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
This commit is contained in:
Stephen White 2022-01-24 17:17:22 +00:00 committed by Tint LUCI CQ
parent 7e6989bc26
commit f9b8b6104d
397 changed files with 3347 additions and 2841 deletions

View File

@ -437,6 +437,8 @@ libtint_source_set("libtint_core_all_src") {
"transform/calculate_array_length.h",
"transform/canonicalize_entry_point_io.cc",
"transform/canonicalize_entry_point_io.h",
"transform/combine_samplers.cc",
"transform/combine_samplers.h",
"transform/decompose_memory_access.cc",
"transform/decompose_memory_access.h",
"transform/decompose_strided_matrix.cc",

View File

@ -303,6 +303,8 @@ set(TINT_LIB_SRCS
transform/binding_remapper.h
transform/calculate_array_length.cc
transform/calculate_array_length.h
transform/combine_samplers.cc
transform/combine_samplers.h
transform/canonicalize_entry_point_io.cc
transform/canonicalize_entry_point_io.h
transform/decompose_memory_access.cc
@ -976,6 +978,7 @@ if(TINT_BUILD_TESTS)
transform/binding_remapper_test.cc
transform/calculate_array_length_test.cc
transform/canonicalize_entry_point_io_test.cc
transform/combine_samplers_test.cc
transform/decompose_memory_access_test.cc
transform/decompose_strided_matrix_test.cc
transform/external_texture_transform_test.cc

View File

@ -0,0 +1,312 @@
// 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.
#include "src/transform/combine_samplers.h"
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
#include "src/sem/function.h"
#include "src/sem/statement.h"
#include "src/utils/map.h"
TINT_INSTANTIATE_TYPEINFO(tint::transform::CombineSamplers);
TINT_INSTANTIATE_TYPEINFO(tint::transform::CombineSamplers::BindingInfo);
namespace {
bool IsGlobal(const tint::sem::VariablePair& pair) {
return pair.first->Is<tint::sem::GlobalVariable>() &&
(!pair.second || pair.second->Is<tint::sem::GlobalVariable>());
}
} // namespace
namespace tint {
namespace transform {
CombineSamplers::BindingInfo::BindingInfo(const BindingMap& map)
: binding_map(map) {}
CombineSamplers::BindingInfo::BindingInfo(const BindingInfo& other) = default;
CombineSamplers::BindingInfo::~BindingInfo() = default;
/// The PIMPL state for the CombineSamplers transform
struct CombineSamplers::State {
/// The clone context
CloneContext& ctx;
/// The binding info
const BindingInfo* binding_info;
/// Map from a texture/sampler pair to the corresponding combined sampler
/// variable
using CombinedTextureSamplerMap =
std::unordered_map<sem::VariablePair, const ast::Variable*>;
/// Use sem::BindingPoint without scope.
using BindingPoint = sem::BindingPoint;
/// A map of all global texture/sampler variable pairs to the global
/// combined sampler variable that will replace it.
CombinedTextureSamplerMap global_combined_texture_samplers_;
/// A map of all texture/sampler variable pairs that contain a function
/// parameter to the combined sampler function paramter that will replace it.
std::unordered_map<const sem::Function*, CombinedTextureSamplerMap>
function_combined_texture_samplers_;
/// Placeholder global samplers used when a function contains texture-only
/// references (one comparison sampler, one regular). These are also used as
/// temporary sampler parameters to the texture intrinsics to satsify the WGSL
/// resolver, but are then ignored and removed by the GLSL writer.
const ast::Variable* placeholder_samplers_[2] = {};
/// Group and binding decorations used by all combined sampler globals.
/// Group 0 and binding 0 are used, with collisions disabled.
/// @returns the newly-created decoration list
ast::DecorationList Decorations() const {
auto decorations = ctx.dst->GroupAndBinding(0, 0);
decorations.push_back(
ctx.dst->Disable(ast::DisabledValidation::kBindingPointCollision));
return decorations;
}
/// Constructor
/// @param context the clone context
/// @param info the binding map information
State(CloneContext& context, const BindingInfo* info)
: ctx(context), binding_info(info) {}
/// Creates a combined sampler global variables.
/// (Note this is actually a Texture node at the AST level, but it will be
/// written as the corresponding sampler (eg., sampler2D) on GLSL output.)
/// @param texture_var the texture (global) variable
/// @param sampler_var the sampler (global) variable
/// @param name the default name to use (may be overridden by map lookup)
/// @returns the newly-created global variable
const ast::Variable* CreateCombinedGlobal(const sem::Variable* texture_var,
const sem::Variable* sampler_var,
std::string name) {
SamplerTexturePair bp_pair;
bp_pair.texture_binding_point =
texture_var->As<sem::GlobalVariable>()->BindingPoint();
bp_pair.sampler_binding_point =
sampler_var ? sampler_var->As<sem::GlobalVariable>()->BindingPoint()
: BindingPoint();
auto it = binding_info->binding_map.find(bp_pair);
if (it != binding_info->binding_map.end()) {
name = it->second;
}
const ast::Type* type = CreateASTTypeFor(ctx, texture_var->Type());
Symbol symbol = ctx.dst->Symbols().New(name);
return ctx.dst->Global(symbol, type, Decorations());
}
/// Creates placeholder global sampler variables.
/// @param kind the sampler kind to create for
/// @returns the newly-created global variable
const ast::Variable* CreatePlaceholder(ast::SamplerKind kind) {
const ast::Type* type = ctx.dst->ty.sampler(kind);
const char* name = kind == ast::SamplerKind::kComparisonSampler
? "placeholder_comparison_sampler"
: "placeholder_sampler";
Symbol symbol = ctx.dst->Symbols().New(name);
return ctx.dst->Global(symbol, type, Decorations());
}
/// Performs the transformation
void Run() {
auto& sem = ctx.src->Sem();
// Remove all texture and sampler global variables. These will be replaced
// by combined samplers.
for (auto* var : ctx.src->AST().GlobalVariables()) {
if (sem.Get(var->type)->IsAnyOf<sem::Texture, sem::Sampler>()) {
ctx.Remove(ctx.src->AST().GlobalDeclarations(), var);
}
}
// Rewrite all function signatures to use combined samplers, and remove
// separate textures & samplers. Create new combined globals where found.
ctx.ReplaceAll([&](const ast::Function* src) -> const ast::Function* {
if (auto* func = sem.Get(src)) {
auto pairs = func->TextureSamplerPairs();
if (pairs.empty()) {
return nullptr;
}
ast::VariableList params;
for (auto pair : func->TextureSamplerPairs()) {
const sem::Variable* texture_var = pair.first;
const sem::Variable* sampler_var = pair.second;
std::string name =
ctx.src->Symbols().NameFor(texture_var->Declaration()->symbol);
if (sampler_var) {
name += "_" + ctx.src->Symbols().NameFor(
sampler_var->Declaration()->symbol);
}
if (IsGlobal(pair)) {
// Both texture and sampler are global; add a new global variable
// to represent the combined sampler (if not already created).
utils::GetOrCreate(global_combined_texture_samplers_, pair, [&] {
return CreateCombinedGlobal(texture_var, sampler_var, name);
});
} else {
// Either texture or sampler (or both) is a function parameter;
// add a new function parameter to represent the combined sampler.
const ast::Type* type = CreateASTTypeFor(ctx, texture_var->Type());
const ast::Variable* var =
ctx.dst->Param(ctx.dst->Symbols().New(name), type);
params.push_back(var);
function_combined_texture_samplers_[func][pair] = var;
}
}
// Filter out separate textures and samplers from the original
// function signature.
for (auto* var : src->params) {
if (!sem.Get(var->type)->IsAnyOf<sem::Texture, sem::Sampler>()) {
params.push_back(ctx.Clone(var));
}
}
// Create a new function signature that differs only in the parameter
// list.
auto symbol = ctx.Clone(src->symbol);
auto* return_type = ctx.Clone(src->return_type);
auto* body = ctx.Clone(src->body);
auto decorations = ctx.Clone(src->decorations);
auto return_type_decorations = ctx.Clone(src->return_type_decorations);
return ctx.dst->create<ast::Function>(
symbol, params, return_type, body, std::move(decorations),
std::move(return_type_decorations));
}
return nullptr;
});
// Replace all function call expressions containing texture or
// sampler parameters to use the current function's combined samplers or
// the combined global samplers, as appropriate.
ctx.ReplaceAll([&](const ast::CallExpression* expr)
-> const ast::Expression* {
if (auto* call = sem.Get(expr)) {
ast::ExpressionList args;
// Replace all texture intrinsic calls.
if (auto* intrinsic = call->Target()->As<sem::Intrinsic>()) {
const auto& signature = intrinsic->Signature();
int sampler_index = signature.IndexOf(sem::ParameterUsage::kSampler);
int texture_index = signature.IndexOf(sem::ParameterUsage::kTexture);
if (texture_index == -1) {
return nullptr;
}
const sem::Expression* texture = call->Arguments()[texture_index];
const sem::Expression* sampler =
sampler_index != -1 ? call->Arguments()[sampler_index] : nullptr;
auto* texture_var = texture->As<sem::VariableUser>()->Variable();
auto* sampler_var =
sampler ? sampler->As<sem::VariableUser>()->Variable() : nullptr;
sem::VariablePair new_pair(texture_var, sampler_var);
for (auto* arg : expr->args) {
auto* type = ctx.src->TypeOf(arg)->UnwrapRef();
if (type->Is<sem::Texture>()) {
const ast::Variable* var =
IsGlobal(new_pair)
? global_combined_texture_samplers_[new_pair]
: function_combined_texture_samplers_
[call->Stmt()->Function()][new_pair];
args.push_back(ctx.dst->Expr(var->symbol));
} else if (auto* sampler_type = type->As<sem::Sampler>()) {
ast::SamplerKind kind = sampler_type->kind();
int index = (kind == ast::SamplerKind::kSampler) ? 0 : 1;
const ast::Variable*& p = placeholder_samplers_[index];
if (!p) {
p = CreatePlaceholder(kind);
}
args.push_back(ctx.dst->Expr(p->symbol));
} else {
args.push_back(ctx.Clone(arg));
}
}
return ctx.dst->Call(ctx.Clone(expr->target.name), args);
}
// Replace all function calls.
if (auto* callee = call->Target()->As<sem::Function>()) {
for (auto pair : callee->TextureSamplerPairs()) {
// Global pairs used by the callee do not require a function
// parameter at the call site.
if (IsGlobal(pair)) {
continue;
}
const sem::Variable* texture_var = pair.first;
const sem::Variable* sampler_var = pair.second;
if (auto* param = texture_var->As<sem::Parameter>()) {
const sem::Expression* texture =
call->Arguments()[param->Index()];
texture_var = texture->As<sem::VariableUser>()->Variable();
}
if (sampler_var) {
if (auto* param = sampler_var->As<sem::Parameter>()) {
const sem::Expression* sampler =
call->Arguments()[param->Index()];
sampler_var = sampler->As<sem::VariableUser>()->Variable();
}
}
sem::VariablePair new_pair(texture_var, sampler_var);
// If both texture and sampler are (now) global, pass that
// global variable to the callee. Otherwise use the caller's
// function parameter for this pair.
const ast::Variable* var =
IsGlobal(new_pair) ? global_combined_texture_samplers_[new_pair]
: function_combined_texture_samplers_
[call->Stmt()->Function()][new_pair];
auto* arg = ctx.dst->Expr(var->symbol);
args.push_back(arg);
}
// Append all of the remaining non-texture and non-sampler
// parameters.
for (auto* arg : expr->args) {
if (!ctx.src->TypeOf(arg)
->UnwrapRef()
->IsAnyOf<sem::Texture, sem::Sampler>()) {
args.push_back(ctx.Clone(arg));
}
}
return ctx.dst->Call(ctx.Clone(expr->target.name), args);
}
}
return nullptr;
});
ctx.Clone();
}
};
CombineSamplers::CombineSamplers() = default;
CombineSamplers::~CombineSamplers() = default;
void CombineSamplers::Run(CloneContext& ctx, const DataMap& inputs, DataMap&) {
auto* binding_info = inputs.Get<BindingInfo>();
if (!binding_info) {
ctx.dst->Diagnostics().add_error(
diag::System::Transform,
"missing transform data for " + std::string(TypeInfo().name));
return;
}
State(ctx, binding_info).Run();
}
} // namespace transform
} // namespace tint

View File

@ -0,0 +1,104 @@
// 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.
#ifndef SRC_TRANSFORM_COMBINE_SAMPLERS_H_
#define SRC_TRANSFORM_COMBINE_SAMPLERS_H_
#include <string>
#include <unordered_map>
#include "src/sem/sampler_texture_pair.h"
#include "src/transform/transform.h"
namespace tint {
namespace transform {
/// This transform converts all separate texture/sampler refences in a
/// program into combined texture/samplers. This is required for GLSL,
/// which does not support separate texture/samplers.
///
/// It utilizes the texture/sampler information collected by the
/// Resolver and stored on each sem::Function. For each function, all
/// separate texture/sampler parameters in the function signature are
/// removed. For each unique pair, if both texture and sampler are
/// global variables, the function passes the corresponding combined
/// global stored in global_combined_texture_samplers_ at the call
/// site. Otherwise, either the texture or sampler must be a function
/// parameter. In this case, a new parameter is added to the function
/// signature. All separate texture/sampler parameters are removed.
///
/// All texture intrinsic callsites are modified to pass the combined
/// texture/sampler as the first argument, and separate texture/sampler
/// arugments are removed.
///
/// Note that the sampler may be null, indicating that only a texture
/// reference was required (e.g., textureLoad). In this case, a
/// placeholder global sampler is used at the AST level. This will be
/// combined with the original texture to give a combined global, and
/// the placeholder removed (ignored) by the GLSL writer.
///
/// Note that the combined samplers are actually represented by a
/// Texture node at the AST level, since this contains all the
/// information needed to represent a combined sampler in GLSL
/// (dimensionality, component type, etc). The GLSL writer outputs such
/// (Tint) Textures as (GLSL) Samplers.
class CombineSamplers : public Castable<CombineSamplers, Transform> {
public:
/// A pair of binding points.
using SamplerTexturePair = sem::SamplerTexturePair;
/// A map from a sampler/texture pair to a named global.
using BindingMap = std::unordered_map<SamplerTexturePair, std::string>;
/// The client-provided mapping from separate texture and sampler binding
/// points to combined sampler binding point.
struct BindingInfo : public Castable<Data, transform::Data> {
/// Constructor
/// @param map the map of all (texture, sampler) -> (combined) pairs
explicit BindingInfo(const BindingMap& map);
/// Copy constructor
/// @param other the other BindingInfo to copy
BindingInfo(const BindingInfo& other);
/// Destructor
~BindingInfo() override;
/// A map of bindings from (texture, sampler) -> combined sampler.
BindingMap binding_map;
};
/// Constructor
CombineSamplers();
/// Destructor
~CombineSamplers() override;
protected:
/// The PIMPL state for this transform
struct State;
/// Runs the transform using the CloneContext built for transforming a
/// program. Run() is responsible for calling Clone() on the CloneContext.
/// @param ctx the CloneContext primed with the input program and
/// ProgramBuilder
/// @param inputs optional extra transform-specific input data
/// @param outputs optional extra transform-specific output data
void Run(CloneContext& ctx, const DataMap& inputs, DataMap& outputs) override;
};
} // namespace transform
} // namespace tint
#endif // SRC_TRANSFORM_COMBINE_SAMPLERS_H_

View File

@ -0,0 +1,656 @@
// 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.
#include "src/transform/combine_samplers.h"
#include <memory>
#include <utility>
#include "src/transform/test_helper.h"
namespace tint {
namespace transform {
namespace {
using CombineSamplersTest = TransformTest;
TEST_F(CombineSamplersTest, EmptyModule) {
auto* src = "";
auto* expect = "";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, SimplePair) {
auto* src = R"(
@group(0) @binding(0) var t : texture_2d<f32>;
@group(0) @binding(1) var s : sampler;
fn main() -> vec4<f32> {
return textureSample(t, s, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var t_s : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn main() -> vec4<f32> {
return textureSample(t_s, placeholder_sampler, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, SimplePairInAFunction) {
auto* src = R"(
@group(0) @binding(0) var t : texture_2d<f32>;
@group(0) @binding(1) var s : sampler;
fn sample(t : texture_2d<f32>, s : sampler, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t, s, coords);
}
fn main() -> vec4<f32> {
return sample(t, s, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn sample(t_s : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t_s, placeholder_sampler, coords);
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var t_s_1 : texture_2d<f32>;
fn main() -> vec4<f32> {
return sample(t_s_1, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, SimplePairRename) {
auto* src = R"(
@group(0) @binding(1) var t : texture_2d<f32>;
@group(2) @binding(3) var s : sampler;
fn main() -> vec4<f32> {
return textureSample(t, s, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var fuzzy : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn main() -> vec4<f32> {
return textureSample(fuzzy, placeholder_sampler, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
CombineSamplers::BindingMap map;
sem::SamplerTexturePair pair;
pair.texture_binding_point.group = 0;
pair.texture_binding_point.binding = 1;
pair.sampler_binding_point.group = 2;
pair.sampler_binding_point.binding = 3;
map[pair] = "fuzzy";
data.Add<CombineSamplers::BindingInfo>(map);
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, SimplePairRenameMiss) {
auto* src = R"(
@group(0) @binding(1) var t : texture_2d<f32>;
@group(2) @binding(3) var s : sampler;
fn main() -> vec4<f32> {
return textureSample(t, s, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var t_s : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn main() -> vec4<f32> {
return textureSample(t_s, placeholder_sampler, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
CombineSamplers::BindingMap map;
sem::SamplerTexturePair pair;
pair.texture_binding_point.group = 3;
pair.texture_binding_point.binding = 2;
pair.sampler_binding_point.group = 1;
pair.sampler_binding_point.binding = 0;
map[pair] = "fuzzy";
data.Add<CombineSamplers::BindingInfo>(map);
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, AliasedTypes) {
auto* src = R"(
type Tex2d = texture_2d<f32>;
@group(0) @binding(0) var t : Tex2d;
@group(0) @binding(1) var s : sampler;
fn sample(t : Tex2d, s : sampler, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t, s, coords);
}
fn main() -> vec4<f32> {
return sample(t, s, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
type Tex2d = texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn sample(t_s : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t_s, placeholder_sampler, coords);
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var t_s_1 : texture_2d<f32>;
fn main() -> vec4<f32> {
return sample(t_s_1, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, SimplePairInTwoFunctions) {
auto* src = R"(
@group(0) @binding(0) var t : texture_2d<f32>;
@group(0) @binding(1) var s : sampler;
fn g(t : texture_2d<f32>, s : sampler, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t, s, coords);
}
fn f(t : texture_2d<f32>, s : sampler, coords : vec2<f32>) -> vec4<f32> {
return g(t, s, coords);
}
fn main() -> vec4<f32> {
return f(t, s, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn g(t_s : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t_s, placeholder_sampler, coords);
}
fn f(t_s_1 : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return g(t_s_1, coords);
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var t_s_2 : texture_2d<f32>;
fn main() -> vec4<f32> {
return f(t_s_2, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, TwoFunctionsGenerateSamePair) {
auto* src = R"(
@group(1) @binding(0) var tex : texture_2d<f32>;
@group(1) @binding(1) var samp : sampler;
fn f() -> vec4<f32> {
return textureSample(tex, samp, vec2<f32>(1.0, 2.0));
}
fn g() -> vec4<f32> {
return textureSample(tex, samp, vec2<f32>(3.0, 4.0));
}
fn main() -> vec4<f32> {
return f() + g();
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn f() -> vec4<f32> {
return textureSample(tex_samp, placeholder_sampler, vec2<f32>(1.0, 2.0));
}
fn g() -> vec4<f32> {
return textureSample(tex_samp, placeholder_sampler, vec2<f32>(3.0, 4.0));
}
fn main() -> vec4<f32> {
return (f() + g());
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, ThreeTexturesThreeSamplers) {
auto* src = R"(
@group(0) @binding(0) var tex1 : texture_2d<f32>;
@group(0) @binding(1) var tex2 : texture_2d<f32>;
@group(0) @binding(2) var tex3 : texture_2d<f32>;
@group(1) @binding(0) var samp1 : sampler;
@group(1) @binding(1) var samp2: sampler;
@group(1) @binding(2) var samp3: sampler;
fn sample(t : texture_2d<f32>, s : sampler) -> vec4<f32> {
return textureSample(t, s, vec2<f32>(1.0, 2.0));
}
fn main() -> vec4<f32> {
return sample(tex1, samp1)
+ sample(tex1, samp2)
+ sample(tex1, samp3)
+ sample(tex2, samp1)
+ sample(tex2, samp2)
+ sample(tex2, samp3)
+ sample(tex3, samp1)
+ sample(tex3, samp2)
+ sample(tex3, samp3);
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn sample(t_s : texture_2d<f32>) -> vec4<f32> {
return textureSample(t_s, placeholder_sampler, vec2<f32>(1.0, 2.0));
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex1_samp1 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex1_samp2 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex1_samp3 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex2_samp1 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex2_samp2 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex2_samp3 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex3_samp1 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex3_samp2 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex3_samp3 : texture_2d<f32>;
fn main() -> vec4<f32> {
return ((((((((sample(tex1_samp1) + sample(tex1_samp2)) + sample(tex1_samp3)) + sample(tex2_samp1)) + sample(tex2_samp2)) + sample(tex2_samp3)) + sample(tex3_samp1)) + sample(tex3_samp2)) + sample(tex3_samp3));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, TwoFunctionsTwoTexturesDiamond) {
auto* src = R"(
@group(0) @binding(0) var tex1 : texture_2d<f32>;
@group(0) @binding(1) var tex2 : texture_2d<f32>;
@group(0) @binding(2) var samp : sampler;
fn sample(t : texture_2d<f32>, s : sampler, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t, s, coords);
}
fn f(t1 : texture_2d<f32>, t2 : texture_2d<f32>, s : sampler, coords : vec2<f32>) -> vec4<f32> {
return sample(t1, s, coords) + sample(t2, s, coords);
}
fn main() -> vec4<f32> {
return f(tex1, tex2, samp, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn sample(t_s : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t_s, placeholder_sampler, coords);
}
fn f(t1_s : texture_2d<f32>, t2_s : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return (sample(t1_s, coords) + sample(t2_s, coords));
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex1_samp : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex2_samp : texture_2d<f32>;
fn main() -> vec4<f32> {
return f(tex1_samp, tex2_samp, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, TwoFunctionsTwoSamplersDiamond) {
auto* src = R"(
@group(0) @binding(0) var tex : texture_2d<f32>;
@group(0) @binding(1) var samp1 : sampler;
@group(0) @binding(2) var samp2 : sampler;
fn sample(t : texture_2d<f32>, s : sampler, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t, s, coords);
}
fn f(t : texture_2d<f32>, s1 : sampler, s2 : sampler, coords : vec2<f32>) -> vec4<f32> {
return sample(t, s1, coords) + sample(t, s2, coords);
}
fn main() -> vec4<f32> {
return f(tex, samp1, samp2, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn sample(t_s : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t_s, placeholder_sampler, coords);
}
fn f(t_s1 : texture_2d<f32>, t_s2 : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return (sample(t_s1, coords) + sample(t_s2, coords));
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp1 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp2 : texture_2d<f32>;
fn main() -> vec4<f32> {
return f(tex_samp1, tex_samp2, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, GlobalTextureLocalSampler) {
auto* src = R"(
@group(0) @binding(0) var tex : texture_2d<f32>;
@group(0) @binding(1) var samp1 : sampler;
@group(0) @binding(2) var samp2 : sampler;
fn f(s1 : sampler, s2 : sampler, coords : vec2<f32>) -> vec4<f32> {
return textureSample(tex, s1, coords) + textureSample(tex, s2, coords);
}
fn main() -> vec4<f32> {
return f(samp1, samp2, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn f(tex_s1 : texture_2d<f32>, tex_s2 : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return (textureSample(tex_s1, placeholder_sampler, coords) + textureSample(tex_s2, placeholder_sampler, coords));
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp1 : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp2 : texture_2d<f32>;
fn main() -> vec4<f32> {
return f(tex_samp1, tex_samp2, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, LocalTextureGlobalSampler) {
auto* src = R"(
@group(0) @binding(0) var tex1 : texture_2d<f32>;
@group(0) @binding(1) var tex2 : texture_2d<f32>;
@group(0) @binding(2) var samp : sampler;
fn f(t1 : texture_2d<f32>, t2 : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return textureSample(t1, samp, coords) + textureSample(t2, samp, coords);
}
fn main() -> vec4<f32> {
return f(tex1, tex2, vec2<f32>(1.0, 2.0));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn f(t1_samp : texture_2d<f32>, t2_samp : texture_2d<f32>, coords : vec2<f32>) -> vec4<f32> {
return (textureSample(t1_samp, placeholder_sampler, coords) + textureSample(t2_samp, placeholder_sampler, coords));
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex1_samp : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex2_samp : texture_2d<f32>;
fn main() -> vec4<f32> {
return f(tex1_samp, tex2_samp, vec2<f32>(1.0, 2.0));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, TextureLoadNoSampler) {
auto* src = R"(
@group(0) @binding(0) var tex : texture_2d<f32>;
fn f(t : texture_2d<f32>, coords : vec2<i32>) -> vec4<f32> {
return textureLoad(t, coords, 0);
}
fn main() -> vec4<f32> {
return f(tex, vec2<i32>(1, 2));
}
)";
auto* expect = R"(
fn f(t_1 : texture_2d<f32>, coords : vec2<i32>) -> vec4<f32> {
return textureLoad(t_1, coords, 0);
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_1 : texture_2d<f32>;
fn main() -> vec4<f32> {
return f(tex_1, vec2<i32>(1, 2));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, TextureSampleCompare) {
auto* src = R"(
@group(0) @binding(0) var tex : texture_depth_2d;
@group(0) @binding(1) var samp : sampler_comparison;
fn main() -> vec4<f32> {
return vec4<f32>(textureSampleCompare(tex, samp, vec2<f32>(1.0, 2.0), 0.5));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp : texture_depth_2d;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_comparison_sampler : sampler_comparison;
fn main() -> vec4<f32> {
return vec4<f32>(textureSampleCompare(tex_samp, placeholder_comparison_sampler, vec2<f32>(1.0, 2.0), 0.5));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, TextureSampleCompareInAFunction) {
auto* src = R"(
@group(0) @binding(0) var tex : texture_depth_2d;
@group(0) @binding(1) var samp : sampler_comparison;
fn f(t : texture_depth_2d, s : sampler_comparison, coords : vec2<f32>) -> f32 {
return textureSampleCompare(t, s, coords, 5.0f);
}
fn main() -> vec4<f32> {
return vec4<f32>(f(tex, samp, vec2<f32>(1.0, 2.0)));
}
)";
auto* expect = R"(
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_comparison_sampler : sampler_comparison;
fn f(t_s : texture_depth_2d, coords : vec2<f32>) -> f32 {
return textureSampleCompare(t_s, placeholder_comparison_sampler, coords, 5.0);
}
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp : texture_depth_2d;
fn main() -> vec4<f32> {
return vec4<f32>(f(tex_samp, vec2<f32>(1.0, 2.0)));
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
TEST_F(CombineSamplersTest, BindingPointCollision) {
auto* src = R"(
@group(1) @binding(0) var tex : texture_2d<f32>;
@group(1) @binding(1) var samp : sampler;
@group(0) @binding(0) var<uniform> gcoords : vec2<f32>;
fn main() -> vec4<f32> {
return textureSample(tex, samp, gcoords);
}
)";
auto* expect = R"(
@group(0) @binding(0) var<uniform> gcoords : vec2<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var tex_samp : texture_2d<f32>;
@group(0) @binding(0) @internal(disable_validation__binding_point_collision) var placeholder_sampler : sampler;
fn main() -> vec4<f32> {
return textureSample(tex_samp, placeholder_sampler, gcoords);
}
)";
DataMap data;
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
auto got = Run<CombineSamplers>(src, data);
EXPECT_EQ(expect, str(got));
}
} // namespace
} // namespace transform
} // namespace tint

View File

@ -19,8 +19,10 @@
#include "src/program_builder.h"
#include "src/transform/add_empty_entry_point.h"
#include "src/transform/add_spirv_block_decoration.h"
#include "src/transform/binding_remapper.h"
#include "src/transform/calculate_array_length.h"
#include "src/transform/canonicalize_entry_point_io.h"
#include "src/transform/combine_samplers.h"
#include "src/transform/decompose_memory_access.h"
#include "src/transform/external_texture_transform.h"
#include "src/transform/fold_trivial_single_use_lets.h"
@ -73,6 +75,20 @@ Output Glsl::Run(const Program* in, const DataMap& inputs) {
data.Add<SingleEntryPoint::Config>(cfg->entry_point);
}
manager.Add<RemovePhonies>();
manager.Add<CombineSamplers>();
if (auto* binding_info = inputs.Get<CombineSamplers::BindingInfo>()) {
data.Add<CombineSamplers::BindingInfo>(*binding_info);
} else {
data.Add<CombineSamplers::BindingInfo>(CombineSamplers::BindingMap());
}
manager.Add<BindingRemapper>();
if (auto* remappings = inputs.Get<BindingRemapper::Remappings>()) {
data.Add<BindingRemapper::Remappings>(*remappings);
} else {
BindingRemapper::BindingPoints bp;
BindingRemapper::AccessControls ac;
data.Add<BindingRemapper::Remappings>(bp, ac, /* mayCollide */ true);
}
manager.Add<CalculateArrayLength>();
manager.Add<ExternalTextureTransform>();

View File

@ -14,6 +14,8 @@
#include "src/writer/glsl/generator.h"
#include "src/transform/binding_remapper.h"
#include "src/transform/combine_samplers.h"
#include "src/transform/glsl.h"
#include "src/writer/glsl/generator_impl.h"
@ -21,17 +23,25 @@ namespace tint {
namespace writer {
namespace glsl {
Options::Options() = default;
Options::~Options() = default;
Options::Options(const Options&) = default;
Result::Result() = default;
Result::~Result() = default;
Result::Result(const Result&) = default;
Result Generate(const Program* program,
const Options&,
const Options& options,
const std::string& entry_point) {
Result result;
// Run the GLSL sanitizer.
transform::DataMap data;
data.Add<transform::BindingRemapper::Remappings>(options.binding_points,
options.access_controls,
options.allow_collisions);
data.Add<transform::CombineSamplers::BindingInfo>(options.binding_map);
data.Add<transform::Glsl::Config>(entry_point);
transform::Glsl sanitizer;
auto output = sanitizer.Run(program, data);

View File

@ -17,10 +17,14 @@
#include <memory>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
#include "src/ast/access.h"
#include "src/ast/pipeline_stage.h"
#include "src/sem/binding_point.h"
#include "src/sem/sampler_texture_pair.h"
#include "src/writer/text.h"
namespace tint {
@ -34,8 +38,35 @@ namespace glsl {
// Forward declarations
class GeneratorImpl;
using BindingMap = std::unordered_map<sem::SamplerTexturePair, std::string>;
/// Configuration options used for generating GLSL.
struct Options {};
struct Options {
/// Constructor
Options();
/// Destructor
~Options();
/// Copy constructor
Options(const Options&);
/// A map of SamplerTexturePair to combined sampler names for the
/// CombineSamplers transform
BindingMap binding_map;
/// A map of old binding point to new binding point for the BindingRemapper
/// transform
std::unordered_map<sem::BindingPoint, sem::BindingPoint> binding_points;
/// A map of old binding point to new access control for the BindingRemapper
/// transform
std::unordered_map<sem::BindingPoint, ast::Access> access_controls;
/// If true, then validation will be disabled for binding point collisions
/// generated by the BindingRemapper transform
bool allow_collisions = false;
};
/// The result produced when generating GLSL.
struct Result {

View File

@ -64,41 +64,41 @@ ExpectedResult expected_texture_overload(
case ValidTextureOverload::kDimensionsStorageWO3d:
return {"imageSize"};
case ValidTextureOverload::kGather2dF32:
return R"(textureGather(tint_symbol, vec2(1.0f, 2.0f), 0))";
return R"(textureGather(tint_symbol_sampler, vec2(1.0f, 2.0f), 0))";
case ValidTextureOverload::kGather2dOffsetF32:
return R"(textureGatherOffset(tint_symbol, vec2(1.0f, 2.0f), ivec2(3, 4), 0))";
return R"(textureGatherOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), ivec2(3, 4), 0))";
case ValidTextureOverload::kGather2dArrayF32:
return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, float(3)), 0))";
return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 0))";
case ValidTextureOverload::kGather2dArrayOffsetF32:
return R"(textureGatherOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5), 0))";
return R"(textureGatherOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5), 0))";
case ValidTextureOverload::kGatherCubeF32:
return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 0))";
return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 0))";
case ValidTextureOverload::kGatherCubeArrayF32:
return R"(textureGather(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4)), 0))";
return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 0))";
case ValidTextureOverload::kGatherDepth2dF32:
return R"(textureGather(tint_symbol, vec2(1.0f, 2.0f)))";
return R"(textureGather(tint_symbol_sampler, vec2(1.0f, 2.0f)))";
case ValidTextureOverload::kGatherDepth2dOffsetF32:
return R"(textureGatherOffset(tint_symbol, vec2(1.0f, 2.0f), ivec2(3, 4)))";
return R"(textureGatherOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), ivec2(3, 4)))";
case ValidTextureOverload::kGatherDepth2dArrayF32:
return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, float(3))))";
return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3))))";
case ValidTextureOverload::kGatherDepth2dArrayOffsetF32:
return R"(textureGatherOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5)))";
return R"(textureGatherOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5)))";
case ValidTextureOverload::kGatherDepthCubeF32:
return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, 3.0f)))";
return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f)))";
case ValidTextureOverload::kGatherDepthCubeArrayF32:
return R"(textureGather(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4))))";
return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4))))";
case ValidTextureOverload::kGatherCompareDepth2dF32:
return R"(textureGather(tint_symbol, vec2(1.0f, 2.0f), 3.0f))";
return R"(textureGather(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f))";
case ValidTextureOverload::kGatherCompareDepth2dOffsetF32:
return R"(textureGatherOffset(tint_symbol, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5)))";
return R"(textureGatherOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5)))";
case ValidTextureOverload::kGatherCompareDepth2dArrayF32:
return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, float(3)), 4.0f))";
return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 4.0f))";
case ValidTextureOverload::kGatherCompareDepth2dArrayOffsetF32:
return R"(textureGatherOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), 4.0f, ivec2(5, 6)))";
return R"(textureGatherOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 4.0f, ivec2(5, 6)))";
case ValidTextureOverload::kGatherCompareDepthCubeF32:
return R"(textureGather(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f))";
return R"(textureGather(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f))";
case ValidTextureOverload::kGatherCompareDepthCubeArrayF32:
return R"(textureGather(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
return R"(textureGather(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f))";
case ValidTextureOverload::kNumLayers2dArray:
case ValidTextureOverload::kNumLayersDepth2dArray:
case ValidTextureOverload::kNumLayersCubeArray:
@ -118,151 +118,151 @@ ExpectedResult expected_texture_overload(
case ValidTextureOverload::kNumSamplesMultisampled2d:
return {"textureSamples"};
case ValidTextureOverload::kSample1dF32:
return R"(texture(tint_symbol, 1.0f);)";
return R"(texture(tint_symbol_sampler, 1.0f);)";
case ValidTextureOverload::kSample2dF32:
return R"(texture(tint_symbol, vec2(1.0f, 2.0f));)";
return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f));)";
case ValidTextureOverload::kSample2dOffsetF32:
return R"(textureOffset(tint_symbol, vec2(1.0f, 2.0f), ivec2(3, 4));)";
return R"(textureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), ivec2(3, 4));)";
case ValidTextureOverload::kSample2dArrayF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, float(3)));)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)));)";
case ValidTextureOverload::kSample2dArrayOffsetF32:
return R"(textureOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5));)";
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5));)";
case ValidTextureOverload::kSample3dF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, 3.0f));)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f));)";
case ValidTextureOverload::kSample3dOffsetF32:
return R"(textureOffset(tint_symbol, vec3(1.0f, 2.0f, 3.0f), ivec3(4, 5, 6));)";
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), ivec3(4, 5, 6));)";
case ValidTextureOverload::kSampleCubeF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, 3.0f));)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f));)";
case ValidTextureOverload::kSampleCubeArrayF32:
return R"(texture(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4)));)";
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)));)";
case ValidTextureOverload::kSampleDepth2dF32:
return R"(texture(tint_symbol, vec2(1.0f, 2.0f)).x;)";
return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f)).x;)";
case ValidTextureOverload::kSampleDepth2dOffsetF32:
return R"(textureOffset(tint_symbol, vec2(1.0f, 2.0f), ivec2(3, 4)).x;)";
return R"(textureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), ivec2(3, 4)).x;)";
case ValidTextureOverload::kSampleDepth2dArrayF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, float(3))).x;)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3))).x;)";
case ValidTextureOverload::kSampleDepth2dArrayOffsetF32:
return R"(textureOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5)).x;)";
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), ivec2(4, 5)).x;)";
case ValidTextureOverload::kSampleDepthCubeF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, 3.0f)).x;)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f)).x;)";
case ValidTextureOverload::kSampleDepthCubeArrayF32:
return R"(texture(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4))).x;)";
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4))).x;)";
case ValidTextureOverload::kSampleBias2dF32:
return R"(texture(tint_symbol, vec2(1.0f, 2.0f), 3.0f);)";
return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
case ValidTextureOverload::kSampleBias2dOffsetF32:
return R"(textureOffset(tint_symbol, vec2(1.0f, 2.0f), ivec2(4, 5), 3.0f);)";
return R"(textureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), ivec2(4, 5), 3.0f);)";
case ValidTextureOverload::kSampleBias2dArrayF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, float(4)), 3.0f);)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f);)";
case ValidTextureOverload::kSampleBias2dArrayOffsetF32:
return R"(textureOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), ivec2(5, 6), 4.0f);)";
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), ivec2(5, 6), 4.0f);)";
case ValidTextureOverload::kSampleBias3dF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
case ValidTextureOverload::kSampleBias3dOffsetF32:
return R"(textureOffset(tint_symbol, vec3(1.0f, 2.0f, 3.0f), ivec3(5, 6, 7), 4.0f);)";
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), ivec3(5, 6, 7), 4.0f);)";
case ValidTextureOverload::kSampleBiasCubeF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
case ValidTextureOverload::kSampleBiasCubeArrayF32:
return R"(texture(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(3)), 4.0f);)";
return R"(texture(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(3)), 4.0f);)";
case ValidTextureOverload::kSampleLevel2dF32:
return R"(textureLod(tint_symbol, vec2(1.0f, 2.0f), 3.0f);)";
return R"(textureLod(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
case ValidTextureOverload::kSampleLevel2dOffsetF32:
return R"(textureLodOffset(tint_symbol, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
return R"(textureLodOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
case ValidTextureOverload::kSampleLevel2dArrayF32:
return R"(textureLod(tint_symbol, vec3(1.0f, 2.0f, float(3)), 4.0f);)";
return R"(textureLod(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 4.0f);)";
case ValidTextureOverload::kSampleLevel2dArrayOffsetF32:
return R"(textureLodOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), 4.0f, ivec2(5, 6));)";
return R"(textureLodOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 4.0f, ivec2(5, 6));)";
case ValidTextureOverload::kSampleLevel3dF32:
return R"(textureLod(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
return R"(textureLod(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
case ValidTextureOverload::kSampleLevel3dOffsetF32:
return R"(textureLodOffset(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f, ivec3(5, 6, 7));)";
return R"(textureLodOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f, ivec3(5, 6, 7));)";
case ValidTextureOverload::kSampleLevelCubeF32:
return R"(textureLod(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
return R"(textureLod(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
case ValidTextureOverload::kSampleLevelCubeArrayF32:
return R"(textureLod(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
return R"(textureLod(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5.0f);)";
case ValidTextureOverload::kSampleLevelDepth2dF32:
return R"(textureLod(tint_symbol, vec2(1.0f, 2.0f), 3).x;)";
return R"(textureLod(tint_symbol_sampler, vec2(1.0f, 2.0f), 3).x;)";
case ValidTextureOverload::kSampleLevelDepth2dOffsetF32:
return R"(textureLodOffset(tint_symbol, vec2(1.0f, 2.0f), 3, ivec2(4, 5)).x;)";
return R"(textureLodOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3, ivec2(4, 5)).x;)";
case ValidTextureOverload::kSampleLevelDepth2dArrayF32:
return R"(textureLod(tint_symbol, vec3(1.0f, 2.0f, float(3)), 4).x;)";
return R"(textureLod(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 4).x;)";
case ValidTextureOverload::kSampleLevelDepth2dArrayOffsetF32:
return R"(textureLodOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), 4, ivec2(5, 6)).x;)";
return R"(textureLodOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), 4, ivec2(5, 6)).x;)";
case ValidTextureOverload::kSampleLevelDepthCubeF32:
return R"(textureLod(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4).x;)";
return R"(textureLod(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4).x;)";
case ValidTextureOverload::kSampleLevelDepthCubeArrayF32:
return R"(textureLod(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4)), 5).x;)";
return R"(textureLod(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), 5).x;)";
case ValidTextureOverload::kSampleGrad2dF32:
return R"(textureGrad(tint_symbol, vec2(1.0f, 2.0f), vec2(3.0f, 4.0f), vec2(5.0f, 6.0f));)";
return R"(textureGrad(tint_symbol_sampler, vec2(1.0f, 2.0f), vec2(3.0f, 4.0f), vec2(5.0f, 6.0f));)";
case ValidTextureOverload::kSampleGrad2dOffsetF32:
return R"(textureGradOffset(tint_symbol, vec2(1.0f, 2.0f), vec2(3.0f, 4.0f), vec2(5.0f, 6.0f), ivec2(7, 7));)";
return R"(textureGradOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), vec2(3.0f, 4.0f), vec2(5.0f, 6.0f), ivec2(7, 7));)";
case ValidTextureOverload::kSampleGrad2dArrayF32:
return R"(textureGrad(tint_symbol, vec3(1.0f, 2.0f, float(3)), vec2(4.0f, 5.0f), vec2(6.0f, 7.0f));)";
return R"(textureGrad(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), vec2(4.0f, 5.0f), vec2(6.0f, 7.0f));)";
case ValidTextureOverload::kSampleGrad2dArrayOffsetF32:
return R"(textureGradOffset(tint_symbol, vec3(1.0f, 2.0f, float(3)), vec2(4.0f, 5.0f), vec2(6.0f, 7.0f), ivec2(6, 7));)";
return R"(textureGradOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(3)), vec2(4.0f, 5.0f), vec2(6.0f, 7.0f), ivec2(6, 7));)";
case ValidTextureOverload::kSampleGrad3dF32:
return R"(textureGrad(tint_symbol, vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));)";
return R"(textureGrad(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));)";
case ValidTextureOverload::kSampleGrad3dOffsetF32:
return R"(textureGradOffset(tint_symbol, vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f), ivec3(0, 1, 2));)";
return R"(textureGradOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f), ivec3(0, 1, 2));)";
case ValidTextureOverload::kSampleGradCubeF32:
return R"(textureGrad(tint_symbol, vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));)";
return R"(textureGrad(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));)";
case ValidTextureOverload::kSampleGradCubeArrayF32:
return R"(textureGrad(tint_symbol, vec4(1.0f, 2.0f, 3.0f, float(4)), vec3(5.0f, 6.0f, 7.0f), vec3(8.0f, 9.0f, 10.0f));)";
return R"(textureGrad(tint_symbol_sampler, vec4(1.0f, 2.0f, 3.0f, float(4)), vec3(5.0f, 6.0f, 7.0f), vec3(8.0f, 9.0f, 10.0f));)";
case ValidTextureOverload::kSampleCompareDepth2dF32:
return R"(texture(tint_symbol, vec2(1.0f, 2.0f), 3.0f);)";
return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
case ValidTextureOverload::kSampleCompareDepth2dOffsetF32:
return R"(textureOffset(tint_symbol, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
return R"(textureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
case ValidTextureOverload::kSampleCompareDepth2dArrayF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, float(4)), 3.0f);)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f);)";
case ValidTextureOverload::kSampleCompareDepth2dArrayOffsetF32:
return R"(textureOffset(tint_symbol, vec3(1.0f, 2.0f, float(4)), 3.0f, ivec2(5, 6));)";
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f, ivec2(5, 6));)";
case ValidTextureOverload::kSampleCompareDepthCubeF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
case ValidTextureOverload::kSampleCompareDepthCubeArrayF32:
return R"(texture(tint_symbol, 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:
return R"(texture(tint_symbol, vec2(1.0f, 2.0f), 3.0f);)";
return R"(texture(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f);)";
case ValidTextureOverload::kSampleCompareLevelDepth2dOffsetF32:
return R"(textureOffset(tint_symbol, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
return R"(textureOffset(tint_symbol_sampler, vec2(1.0f, 2.0f), 3.0f, ivec2(4, 5));)";
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, float(4)), 3.0f);)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f);)";
case ValidTextureOverload::kSampleCompareLevelDepth2dArrayOffsetF32:
return R"(textureOffset(tint_symbol, vec3(1.0f, 2.0f, float(4)), 3.0f, ivec2(5, 6));)";
return R"(textureOffset(tint_symbol_sampler, vec3(1.0f, 2.0f, float(4)), 3.0f, ivec2(5, 6));)";
case ValidTextureOverload::kSampleCompareLevelDepthCubeF32:
return R"(texture(tint_symbol, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
return R"(texture(tint_symbol_sampler, vec3(1.0f, 2.0f, 3.0f), 4.0f);)";
case ValidTextureOverload::kSampleCompareLevelDepthCubeArrayF32:
return R"(texture(tint_symbol, 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::kLoad1dLevelU32:
case ValidTextureOverload::kLoad1dLevelI32:
return R"(texelFetch(tint_symbol, 1, 3);)";
return R"(texelFetch(tint_symbol_2, 1, 3);)";
case ValidTextureOverload::kLoad2dLevelF32:
case ValidTextureOverload::kLoad2dLevelU32:
case ValidTextureOverload::kLoad2dLevelI32:
return R"(texelFetch(tint_symbol, ivec2(1, 2), 3);)";
return R"(texelFetch(tint_symbol_2, ivec2(1, 2), 3);)";
case ValidTextureOverload::kLoad2dArrayLevelF32:
case ValidTextureOverload::kLoad2dArrayLevelU32:
case ValidTextureOverload::kLoad2dArrayLevelI32:
case ValidTextureOverload::kLoad3dLevelF32:
case ValidTextureOverload::kLoad3dLevelU32:
case ValidTextureOverload::kLoad3dLevelI32:
return R"(texelFetch(tint_symbol, ivec3(1, 2, 3), 4);)";
return R"(texelFetch(tint_symbol_2, ivec3(1, 2, 3), 4);)";
case ValidTextureOverload::kLoadDepthMultisampled2dF32:
case ValidTextureOverload::kLoadMultisampled2dF32:
case ValidTextureOverload::kLoadMultisampled2dU32:
case ValidTextureOverload::kLoadMultisampled2dI32:
return R"(texelFetch(tint_symbol, ivec2(1, 2), 3);)";
return R"(texelFetch(tint_symbol_2, ivec2(1, 2), 3);)";
case ValidTextureOverload::kLoadDepth2dLevelF32:
return R"(texelFetch(tint_symbol, ivec2(1, 2), 3).x;)";
return R"(texelFetch(tint_symbol_2, ivec2(1, 2), 3).x;)";
case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
return R"(texelFetch(tint_symbol, ivec3(1, 2, 3), 4).x;)";
return R"(texelFetch(tint_symbol_2, ivec3(1, 2, 3), 4).x;)";
case ValidTextureOverload::kStoreWO1dRgba32float:
return R"(imageStore(tint_symbol, 1, vec4(2.0f, 3.0f, 4.0f, 5.0f));)";
return R"(imageStore(tint_symbol_2, 1, vec4(2.0f, 3.0f, 4.0f, 5.0f));)";
case ValidTextureOverload::kStoreWO2dRgba32float:
return R"(imageStore(tint_symbol, ivec2(1, 2), vec4(3.0f, 4.0f, 5.0f, 6.0f));)";
return R"(imageStore(tint_symbol_2, ivec2(1, 2), vec4(3.0f, 4.0f, 5.0f, 6.0f));)";
case ValidTextureOverload::kStoreWO2dArrayRgba32float:
return R"(imageStore(tint_symbol, ivec3(1, 2, 3), vec4(4.0f, 5.0f, 6.0f, 7.0f));)";
return R"(imageStore(tint_symbol_2, ivec3(1, 2, 3), vec4(4.0f, 5.0f, 6.0f, 7.0f));)";
case ValidTextureOverload::kStoreWO3dRgba32float:
return R"(imageStore(tint_symbol, ivec3(1, 2, 3), vec4(4.0f, 5.0f, 6.0f, 7.0f));)";
return R"(imageStore(tint_symbol_2, ivec3(1, 2, 3), vec4(4.0f, 5.0f, 6.0f, 7.0f));)";
}
return "<unmatched texture overload>";
} // NOLINT - Ignore the length of this function

View File

@ -307,6 +307,7 @@ tint_unittests_source_set("tint_unittests_transform_src") {
"../src/transform/binding_remapper_test.cc",
"../src/transform/calculate_array_length_test.cc",
"../src/transform/canonicalize_entry_point_io_test.cc",
"../src/transform/combine_samplers_test.cc",
"../src/transform/decompose_memory_access_test.cc",
"../src/transform/decompose_strided_matrix_test.cc",
"../src/transform/external_texture_transform_test.cc",

View File

@ -80,10 +80,6 @@ struct tint_symbol_3 {
vec2 texcoords;
vec4 position;
};
uniform highp sampler2D myTexture;
struct tint_symbol_5 {
vec2 texcoord;
};
@ -91,12 +87,15 @@ struct tint_symbol_6 {
vec4 value;
};
uniform highp sampler2D myTexture_mySampler;
vec4 fs_main_inner(vec2 texcoord) {
vec2 clampedTexcoord = clamp(texcoord, vec2(0.0f, 0.0f), vec2(1.0f, 1.0f));
if (!(all(equal(clampedTexcoord, texcoord)))) {
discard;
}
vec4 srcColor = texture(myTexture, texcoord);
vec4 srcColor = texture(myTexture_mySampler, texcoord);
return srcColor;
}

View File

@ -1,10 +1,6 @@
#version 310 es
precision mediump float;
uniform highp sampler2D randomTexture;
uniform highp sampler2D depthTexture;
struct tint_symbol_2 {
vec2 vUV;
};
@ -12,8 +8,12 @@ struct tint_symbol_3 {
vec4 value;
};
uniform highp sampler2D randomTexture_Sampler;
uniform highp sampler2D depthTexture_Sampler;
vec4 tint_symbol_inner(vec2 vUV) {
vec3 random = texture(randomTexture, vUV).rgb;
vec3 random = texture(randomTexture_Sampler, vUV).rgb;
int i = 0;
while (true) {
if ((i < 1)) {
@ -37,7 +37,7 @@ vec4 tint_symbol_inner(vec2 vUV) {
i = (i + 1);
continue;
}
float sampleDepth = texture(depthTexture, offset.xy).r;
float sampleDepth = texture(depthTexture_Sampler, offset.xy).r;
i = (i + 1);
}
return vec4(1.0f);

View File

@ -25,8 +25,6 @@ layout (binding = 1) buffer PointLights_1 {
PointLight values[];
} pointLights;
uniform highp sampler2D myTexture;
struct FragmentInput {
vec4 position;
vec4 view_position;
@ -80,7 +78,7 @@ void main() {
Error parsing GLSL shader:
ERROR: 0:66: 'color' : redefinition
ERROR: 0:64: 'color' : redefinition
ERROR: 1 compilation errors. No code generated.

View File

@ -1,16 +1,16 @@
#version 310 es
precision mediump float;
uniform highp usampler2D Src;
uniform highp writeonly uimage2D Dst;
uniform highp usampler2D Src_1;
uniform highp writeonly uimage2D Dst_1;
void main_1() {
uvec4 srcValue = uvec4(0u, 0u, 0u, 0u);
uvec4 x_18 = texelFetch(Src, ivec2(0, 0), 0);
uvec4 x_18 = texelFetch(Src_1, ivec2(0, 0), 0);
srcValue = x_18;
uint x_22 = srcValue.x;
srcValue.x = (x_22 + uint(1));
imageStore(Dst, ivec2(0, 0), srcValue);
imageStore(Dst_1, ivec2(0, 0), srcValue);
return;
}

View File

@ -1,17 +1,17 @@
#version 310 es
precision mediump float;
uniform highp usampler2D Src;
uniform highp writeonly uimage2D Dst;
uniform highp usampler2D Src_1;
uniform highp writeonly uimage2D Dst_1;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void tint_symbol() {
uvec4 srcValue = uvec4(0u, 0u, 0u, 0u);
uvec4 x_22 = texelFetch(Src, ivec2(0, 0), 0);
uvec4 x_22 = texelFetch(Src_1, ivec2(0, 0), 0);
srcValue = x_22;
uint x_24 = srcValue.x;
uint x_25 = (x_24 + 1u);
imageStore(Dst, ivec2(0, 0), srcValue.xxxx);
imageStore(Dst_1, ivec2(0, 0), srcValue.xxxx);
return;
}
void main() {

View File

@ -8,8 +8,6 @@ struct Uniforms {
uint channelCount;
};
uniform highp sampler2D src;
uniform highp sampler2D dst;
layout (binding = 2) buffer OutputBuf_1 {
uint result[];
} tint_symbol;
@ -28,15 +26,18 @@ struct tint_symbol_3 {
uvec3 GlobalInvocationID;
};
uniform highp sampler2D src_1;
uniform highp sampler2D dst_1;
void tint_symbol_1_inner(uvec3 GlobalInvocationID) {
ivec2 size = textureSize(src, 0);
ivec2 size = textureSize(src_1, 0);
ivec2 dstTexCoord = ivec2(GlobalInvocationID.xy);
ivec2 srcTexCoord = dstTexCoord;
if ((uniforms.dstTextureFlipY == 1u)) {
srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
}
vec4 srcColor = texelFetch(src, srcTexCoord, 0);
vec4 dstColor = texelFetch(dst, dstTexCoord, 0);
vec4 srcColor = texelFetch(src_1, srcTexCoord, 0);
vec4 dstColor = texelFetch(dst_1, dstTexCoord, 0);
bool success = true;
uvec4 srcColorBits = uvec4(0u, 0u, 0u, 0u);
uvec4 dstColorBits = uvec4(dstColor);

View File

@ -5,8 +5,6 @@ struct Constants {
int level;
};
uniform highp sampler2DArray myTexture;
layout (binding = 3) buffer Result_1 {
float values[];
} result;
@ -15,10 +13,12 @@ struct tint_symbol_2 {
uvec3 GlobalInvocationID;
};
uniform highp sampler2DArray myTexture_1;
void tint_symbol_inner(uvec3 GlobalInvocationID) {
uint flatIndex = ((((2u * 2u) * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x);
flatIndex = (flatIndex * 1u);
vec4 texel = texelFetch(myTexture, ivec3(ivec2(GlobalInvocationID.xy), 0), 0);
vec4 texel = texelFetch(myTexture_1, ivec3(ivec2(GlobalInvocationID.xy), 0), 0);
{
for(uint i = 0u; (i < 1u); i = (i + 1u)) {
result.values[(flatIndex + i)] = texel.r;

View File

@ -3,7 +3,6 @@ precision mediump float;
const uint width = 128u;
uniform highp sampler2D tex;
layout (binding = 1) buffer Result_1 {
float values[];
} result;
@ -12,8 +11,10 @@ struct tint_symbol_2 {
uvec3 GlobalInvocationId;
};
uniform highp sampler2D tex_1;
void tint_symbol_inner(uvec3 GlobalInvocationId) {
result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = texelFetch(tex, ivec2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0).x;
result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = texelFetch(tex_1, ivec2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0).x;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

View File

@ -9,8 +9,6 @@ struct Uniforms {
uvec2 copySize;
};
uniform highp sampler2D src;
uniform highp sampler2D dst;
layout (binding = 2) buffer OutputBuf_1 {
uint result[];
} tint_symbol;
@ -30,9 +28,12 @@ struct tint_symbol_3 {
uvec3 GlobalInvocationID;
};
uniform highp sampler2D src_1;
uniform highp sampler2D dst_1;
void tint_symbol_1_inner(uvec3 GlobalInvocationID) {
ivec2 srcSize = textureSize(src, 0);
ivec2 dstSize = textureSize(dst, 0);
ivec2 srcSize = textureSize(src_1, 0);
ivec2 dstSize = textureSize(dst_1, 0);
uvec2 dstTexCoord = uvec2(GlobalInvocationID.xy);
vec4 nonCoveredColor = vec4(0.0f, 1.0f, 0.0f, 1.0f);
bool success = true;
@ -51,7 +52,7 @@ void tint_symbol_1_inner(uvec3 GlobalInvocationID) {
if ((tint_tmp)) {
bool tint_tmp_3 = success;
if (tint_tmp_3) {
tint_tmp_3 = all(equal(texelFetch(dst, ivec2(dstTexCoord), 0), nonCoveredColor));
tint_tmp_3 = all(equal(texelFetch(dst_1, ivec2(dstTexCoord), 0), nonCoveredColor));
}
success = (tint_tmp_3);
} else {
@ -59,8 +60,8 @@ void tint_symbol_1_inner(uvec3 GlobalInvocationID) {
if ((uniforms.dstTextureFlipY == 1u)) {
srcTexCoord.y = ((uint(srcSize.y) - srcTexCoord.y) - 1u);
}
vec4 srcColor = texelFetch(src, ivec2(srcTexCoord), 0);
vec4 dstColor = texelFetch(dst, ivec2(dstTexCoord), 0);
vec4 srcColor = texelFetch(src_1, ivec2(srcTexCoord), 0);
vec4 dstColor = texelFetch(dst_1, ivec2(dstTexCoord), 0);
if ((uniforms.channelCount == 2u)) {
bool tint_tmp_5 = success;
if (tint_tmp_5) {

View File

@ -6,13 +6,10 @@ struct Params {
uint blockDim;
};
layout (binding = 1) uniform Params_1 {
uint filterDim;
uint blockDim;
} params;
uniform highp sampler2D inputTex;
uniform highp writeonly image2D outputTex;
struct Flip {
uint value;
@ -29,6 +26,11 @@ struct tint_symbol_2 {
uvec3 WorkGroupID;
};
uniform highp sampler2D inputTex_1;
uniform highp sampler2D inputTex_samp;
uniform highp writeonly image2D outputTex_1;
void tint_symbol_inner(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_invocation_index) {
{
for(uint idx = local_invocation_index; (idx < 1024u); idx = (idx + 64u)) {
@ -39,7 +41,7 @@ void tint_symbol_inner(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_in
}
memoryBarrierShared();
uint filterOffset = ((params.filterDim - 1u) / 2u);
ivec2 dims = textureSize(inputTex, 0);
ivec2 dims = textureSize(inputTex_1, 0);
ivec2 baseIndex = (ivec2(((WorkGroupID.xy * uvec2(params.blockDim, 4u)) + (LocalInvocationID.xy * uvec2(4u, 1u)))) - ivec2(int(filterOffset), 0));
{
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
@ -49,7 +51,7 @@ void tint_symbol_inner(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_in
if ((flip.value != 0u)) {
loadIndex = loadIndex.yx;
}
tile[r][((4u * LocalInvocationID.x) + c)] = textureLod(inputTex, ((vec2(loadIndex) + vec2(0.25f, 0.25f)) / vec2(dims)), 0.0f).rgb;
tile[r][((4u * LocalInvocationID.x) + c)] = textureLod(inputTex_samp, ((vec2(loadIndex) + vec2(0.25f, 0.25f)) / vec2(dims)), 0.0f).rgb;
}
}
}
@ -80,7 +82,7 @@ void tint_symbol_inner(uvec3 WorkGroupID, uvec3 LocalInvocationID, uint local_in
acc = (acc + ((1.0f / float(params.filterDim)) * tile[r][i]));
}
}
imageStore(outputTex, writeIndex, vec4(acc, 1.0f));
imageStore(outputTex_1, writeIndex, vec4(acc, 1.0f));
}
}
}

View File

@ -26,35 +26,33 @@ layout (binding = 9) uniform LeftOver_1 {
float spriteCount;
vec3 colorMul;
} x_20;
uniform highp sampler2D frameMapTexture;
vec2 tUV = vec2(0.0f, 0.0f);
uniform highp sampler2D tileMapsTexture0;
uniform highp sampler2D tileMapsTexture1;
uniform highp sampler2D animationMapTexture;
float mt = 0.0f;
uniform highp sampler2D spriteSheetTexture;
vec4 glFragColor = vec4(0.0f, 0.0f, 0.0f, 0.0f);
vec2 tileID_1 = vec2(0.0f, 0.0f);
vec2 levelUnits = vec2(0.0f, 0.0f);
vec2 stageUnits_1 = vec2(0.0f, 0.0f);
vec3 vPosition = vec3(0.0f, 0.0f, 0.0f);
vec2 vUV = vec2(0.0f, 0.0f);
uniform highp sampler2D frameMapTexture_frameMapSampler;
mat4 getFrameData_f1_(inout float frameID) {
float fX = 0.0f;
float x_15 = frameID;
float x_25 = x_20.spriteCount;
fX = (x_15 / x_25);
vec4 x_40 = texture(frameMapTexture, vec2(fX, 0.0f), 0.0f);
vec4 x_47 = texture(frameMapTexture, vec2(fX, 0.25f), 0.0f);
vec4 x_54 = texture(frameMapTexture, vec2(fX, 0.5f), 0.0f);
vec4 x_40 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.0f), 0.0f);
vec4 x_47 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.25f), 0.0f);
vec4 x_54 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.5f), 0.0f);
return mat4(vec4(x_40.x, x_40.y, x_40.z, x_40.w), vec4(x_47.x, x_47.y, x_47.z, x_47.w), vec4(x_54.x, x_54.y, x_54.z, x_54.w), vec4(vec4(0.0f, 0.0f, 0.0f, 0.0f).x, vec4(0.0f, 0.0f, 0.0f, 0.0f).y, vec4(0.0f, 0.0f, 0.0f, 0.0f).z, vec4(0.0f, 0.0f, 0.0f, 0.0f).w));
}
uniform highp sampler2D tileMapsTexture1_tileMapsSampler;
uniform highp sampler2D tileMapsTexture0_tileMapsSampler;
uniform highp sampler2D animationMapTexture_animationMapSampler;
uniform highp sampler2D spriteSheetTexture_spriteSheetSampler;
void main_1() {
vec4 color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
vec2 tileUV = vec2(0.0f, 0.0f);
@ -92,14 +90,14 @@ void main_1() {
case 1: {
vec2 x_150 = tileID;
vec2 x_154 = x_20.stageSize;
vec4 x_156 = texture(tileMapsTexture1, ((x_150 + vec2(0.5f, 0.5f)) / x_154), 0.0f);
vec4 x_156 = texture(tileMapsTexture1_tileMapsSampler, ((x_150 + vec2(0.5f, 0.5f)) / x_154), 0.0f);
frameID_1 = x_156.x;
break;
}
case 0: {
vec2 x_136 = tileID;
vec2 x_140 = x_20.stageSize;
vec4 x_142 = texture(tileMapsTexture0, ((x_136 + vec2(0.5f, 0.5f)) / x_140), 0.0f);
vec4 x_142 = texture(tileMapsTexture0_tileMapsSampler, ((x_136 + vec2(0.5f, 0.5f)) / x_140), 0.0f);
frameID_1 = x_142.x;
break;
}
@ -109,7 +107,7 @@ void main_1() {
}
float x_166 = frameID_1;
float x_169 = x_20.spriteCount;
vec4 x_172 = texture(animationMapTexture, vec2(((x_166 + 0.5f) / x_169), 0.0f), 0.0f);
vec4 x_172 = texture(animationMapTexture_animationMapSampler, vec2(((x_166 + 0.5f) / x_169), 0.0f), 0.0f);
animationData = x_172;
float x_174 = animationData.y;
if ((x_174 > 0.0f)) {
@ -127,7 +125,7 @@ void main_1() {
}
float x_208 = frameID_1;
float x_211 = x_20.spriteCount;
vec4 x_217 = texture(animationMapTexture, vec2(((x_208 + 0.5f) / x_211), (0.125f * f)), 0.0f);
vec4 x_217 = texture(animationMapTexture_animationMapSampler, vec2(((x_208 + 0.5f) / x_211), (0.125f * f)), 0.0f);
animationData = x_217;
}
}
@ -149,10 +147,10 @@ void main_1() {
tileUV = vec2(x_252.y, x_252.x);
}
if ((i == 0)) {
vec4 x_268 = texture(spriteSheetTexture, ((tileUV * frameSize) + offset_1));
vec4 x_268 = texture(spriteSheetTexture_spriteSheetSampler, ((tileUV * frameSize) + offset_1));
color = x_268;
} else {
vec4 x_279 = texture(spriteSheetTexture, ((tileUV * frameSize) + offset_1));
vec4 x_279 = texture(spriteSheetTexture_spriteSheetSampler, ((tileUV * frameSize) + offset_1));
nc = x_279;
float x_283 = color.w;
float x_285 = nc.w;
@ -229,9 +227,9 @@ void main() {
Error parsing GLSL shader:
ERROR: 0:76: 'frac' : no matching overloaded function found
ERROR: 0:76: 'assign' : cannot convert from ' const float' to ' temp mediump 2-component vector of float'
ERROR: 0:76: '' : compilation terminated
ERROR: 0:74: 'frac' : no matching overloaded function found
ERROR: 0:74: 'assign' : cannot convert from ' const float' to ' temp mediump 2-component vector of float'
ERROR: 0:74: '' : compilation terminated
ERROR: 3 compilation errors. No code generated.

View File

@ -30,8 +30,6 @@ struct Light0 {
float u_Float = 0.0f;
vec3 u_Color = vec3(0.0f, 0.0f, 0.0f);
uniform highp sampler2D TextureSamplerTexture;
vec2 vMainuv = vec2(0.0f, 0.0f);
layout (binding = 6) uniform LeftOver_1 {
mat4 u_World;
@ -48,8 +46,6 @@ vec4 v_output1 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
bool tint_symbol = false;
vec2 v_uv = vec2(0.0f, 0.0f);
vec4 v_output2 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
uniform highp sampler2D TextureSampler1Texture;
layout (binding = 5) uniform Light0_1 {
vec4 vLightData;
vec4 vLightDiffuse;
@ -178,6 +174,10 @@ lightingInfo computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_(inout vec3 v
return result;
}
uniform highp sampler2D TextureSamplerTexture_TextureSamplerSampler;
uniform highp sampler2D TextureSampler1Texture_TextureSampler1Sampler;
void main_1() {
vec4 tempTextureRead = vec4(0.0f, 0.0f, 0.0f, 0.0f);
vec3 rgb = vec3(0.0f, 0.0f, 0.0f);
@ -234,7 +234,7 @@ void main_1() {
vec3 output3 = vec3(0.0f, 0.0f, 0.0f);
u_Float = 100.0f;
u_Color = vec3(0.5f, 0.5f, 0.5f);
vec4 x_262 = texture(TextureSamplerTexture, vMainuv);
vec4 x_262 = texture(TextureSamplerTexture_TextureSamplerSampler, vMainuv);
tempTextureRead = x_262;
vec4 x_264 = tempTextureRead;
float x_273 = x_269.textureInfoName;
@ -282,7 +282,7 @@ void main_1() {
i = 0;
{
for(; (i < 15); i = (i + 1)) {
vec4 x_397 = texture(TextureSamplerTexture, (v_uv + vCurrOffset));
vec4 x_397 = texture(TextureSamplerTexture_TextureSamplerSampler, (v_uv + vCurrOffset));
currSampledHeight = x_397.w;
if ((currSampledHeight > currRayHeight)) {
delta1 = (currSampledHeight - currRayHeight);
@ -300,7 +300,7 @@ void main_1() {
}
parallaxOcclusion_0 = vCurrOffset;
uvOffset = parallaxOcclusion_0;
vec4 x_452 = texture(TextureSamplerTexture, (v_uv + uvOffset));
vec4 x_452 = texture(TextureSamplerTexture_TextureSamplerSampler, (v_uv + uvOffset));
float x_454 = x_269.u_bumpStrength;
param_8 = TBN;
param_9 = vec3(x_452.x, x_452.y, x_452.z);
@ -308,7 +308,7 @@ void main_1() {
vec3 x_461 = perturbNormal_mf33_vf3_f1_(param_8, param_9, param_10);
output4 = vec4(x_461.x, x_461.y, x_461.z, output4.w);
output6 = (v_uv + uvOffset);
vec4 x_475 = texture(TextureSampler1Texture, output6);
vec4 x_475 = texture(TextureSampler1Texture_TextureSampler1Sampler, output6);
tempTextureRead1 = x_475;
vec4 x_477 = tempTextureRead1;
rgb1 = vec3(x_477.x, x_477.y, x_477.z);
@ -397,9 +397,9 @@ void main() {
Error parsing GLSL shader:
ERROR: 0:73: 'ddx' : no matching overloaded function found
ERROR: 0:73: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float'
ERROR: 0:73: '' : compilation terminated
ERROR: 0:69: 'ddx' : no matching overloaded function found
ERROR: 0:69: 'assign' : cannot convert from ' const float' to ' temp mediump 3-component vector of float'
ERROR: 0:69: '' : compilation terminated
ERROR: 3 compilation errors. No code generated.

View File

@ -53,38 +53,6 @@ layout (binding = 1) uniform S_15 {
layout (binding = 1) uniform S_16 {
float a;
} b15;
uniform highp sampler2D t0;
uniform highp sampler2D t1;
uniform highp sampler2D t2;
uniform highp sampler2D t3;
uniform highp sampler2D t4;
uniform highp sampler2D t5;
uniform highp sampler2D t6;
uniform highp sampler2D t7;
uniform highp sampler2D t8;
uniform highp sampler2D t9;
uniform highp sampler2D t10;
uniform highp sampler2D t11;
uniform highp sampler2D t12;
uniform highp sampler2D t13;
uniform highp sampler2D t14;
uniform highp sampler2D t15;
void tint_symbol() {
return;

View File

@ -7,10 +7,6 @@ struct FragmentInput {
struct FragmentOutput {
vec4 color;
};
uniform highp sampler2D depthMap;
struct tint_symbol_3 {
vec2 vUv;
};
@ -18,8 +14,11 @@ struct tint_symbol_4 {
vec4 color;
};
uniform highp sampler2D depthMap_texSampler;
FragmentOutput tint_symbol_inner(FragmentInput fIn) {
float tint_symbol_1 = texture(depthMap, fIn.vUv).x;
float tint_symbol_1 = texture(depthMap_texSampler, fIn.vUv).x;
vec3 color = vec3(tint_symbol_1, tint_symbol_1, tint_symbol_1);
FragmentOutput fOut = FragmentOutput(vec4(0.0f, 0.0f, 0.0f, 0.0f));
fOut.color = vec4(color, 1.0f);

View File

@ -1,81 +1,33 @@
SKIP: FAILED
intrinsics/gen/ignore/2a6ac2.wgsl:29:3 warning: use of deprecated intrinsic
ignore(arg_0);
^^^^^^
#version 310 es
precision mediump float;
uniform highp sampler2DMS arg_0;
@group(1) @binding(0) var arg_0 : texture_depth_multisampled_2d;
void ignore_2a6ac2() {
arg_0;
fn ignore_2a6ac2() {
ignore(arg_0);
}
struct tint_symbol {
vec4 value;
};
vec4 vertex_main_inner() {
@stage(vertex)
fn vertex_main() -> @builtin(position) vec4<f32> {
ignore_2a6ac2();
return vec4(0.0f, 0.0f, 0.0f, 0.0f);
return vec4<f32>();
}
tint_symbol vertex_main() {
vec4 inner_result = vertex_main_inner();
tint_symbol wrapper_result = tint_symbol(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
void main() {
tint_symbol outputs;
outputs = vertex_main();
gl_Position = outputs.value;
gl_Position.y = -gl_Position.y;
}
#version 310 es
precision mediump float;
uniform highp sampler2DMS arg_0;
void ignore_2a6ac2() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
void fragment_main() {
@stage(fragment)
fn fragment_main() {
ignore_2a6ac2();
return;
}
void main() {
fragment_main();
}
#version 310 es
precision mediump float;
uniform highp sampler2DMS arg_0;
void ignore_2a6ac2() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
@stage(compute) @workgroup_size(1)
fn compute_main() {
ignore_2a6ac2();
return;
}
void main() {
compute_main();
}
Failed to generate: intrinsics/gen/ignore/2a6ac2.wgsl:29:10 error: unknown identifier: 'arg_0'
ignore(arg_0);
^^^^^

View File

@ -4,101 +4,30 @@ intrinsics/gen/ignore/5016e5.wgsl:29:3 warning: use of deprecated intrinsic
ignore(arg_0);
^^^^^^
#version 310 es
precision mediump float;
@group(1) @binding(0) var arg_0 : sampler;
void ignore_5016e5() {
arg_0;
fn ignore_5016e5() {
ignore(arg_0);
}
struct tint_symbol {
vec4 value;
};
vec4 vertex_main_inner() {
@stage(vertex)
fn vertex_main() -> @builtin(position) vec4<f32> {
ignore_5016e5();
return vec4(0.0f, 0.0f, 0.0f, 0.0f);
return vec4<f32>();
}
tint_symbol vertex_main() {
vec4 inner_result = vertex_main_inner();
tint_symbol wrapper_result = tint_symbol(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
void main() {
tint_symbol outputs;
outputs = vertex_main();
gl_Position = outputs.value;
gl_Position.y = -gl_Position.y;
}
Error parsing GLSL shader:
ERROR: 0:7: 'arg_0' : undeclared identifier
ERROR: 0:7: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
void ignore_5016e5() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
void fragment_main() {
@stage(fragment)
fn fragment_main() {
ignore_5016e5();
return;
}
void main() {
fragment_main();
}
Error parsing GLSL shader:
ERROR: 0:7: 'arg_0' : undeclared identifier
ERROR: 0:7: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
void ignore_5016e5() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
@stage(compute) @workgroup_size(1)
fn compute_main() {
ignore_5016e5();
return;
}
void main() {
compute_main();
}
Error parsing GLSL shader:
ERROR: 0:7: 'arg_0' : undeclared identifier
ERROR: 0:7: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
Failed to generate: intrinsics/gen/ignore/5016e5.wgsl:29:10 error: unknown identifier: 'arg_0'
ignore(arg_0);
^^^^^

View File

@ -1,81 +1,33 @@
SKIP: FAILED
intrinsics/gen/ignore/509355.wgsl:29:3 warning: use of deprecated intrinsic
ignore(arg_0);
^^^^^^
#version 310 es
precision mediump float;
uniform highp samplerCube arg_0;
@group(1) @binding(0) var arg_0 : texture_depth_cube;
void ignore_509355() {
arg_0;
fn ignore_509355() {
ignore(arg_0);
}
struct tint_symbol {
vec4 value;
};
vec4 vertex_main_inner() {
@stage(vertex)
fn vertex_main() -> @builtin(position) vec4<f32> {
ignore_509355();
return vec4(0.0f, 0.0f, 0.0f, 0.0f);
return vec4<f32>();
}
tint_symbol vertex_main() {
vec4 inner_result = vertex_main_inner();
tint_symbol wrapper_result = tint_symbol(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
void main() {
tint_symbol outputs;
outputs = vertex_main();
gl_Position = outputs.value;
gl_Position.y = -gl_Position.y;
}
#version 310 es
precision mediump float;
uniform highp samplerCube arg_0;
void ignore_509355() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
void fragment_main() {
@stage(fragment)
fn fragment_main() {
ignore_509355();
return;
}
void main() {
fragment_main();
}
#version 310 es
precision mediump float;
uniform highp samplerCube arg_0;
void ignore_509355() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
@stage(compute) @workgroup_size(1)
fn compute_main() {
ignore_509355();
return;
}
void main() {
compute_main();
}
Failed to generate: intrinsics/gen/ignore/509355.wgsl:29:10 error: unknown identifier: 'arg_0'
ignore(arg_0);
^^^^^

View File

@ -1,81 +1,33 @@
SKIP: FAILED
intrinsics/gen/ignore/5c9edf.wgsl:29:3 warning: use of deprecated intrinsic
ignore(arg_0);
^^^^^^
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
@group(1) @binding(0) var arg_0 : texture_external;
void ignore_5c9edf() {
arg_0;
fn ignore_5c9edf() {
ignore(arg_0);
}
struct tint_symbol {
vec4 value;
};
vec4 vertex_main_inner() {
@stage(vertex)
fn vertex_main() -> @builtin(position) vec4<f32> {
ignore_5c9edf();
return vec4(0.0f, 0.0f, 0.0f, 0.0f);
return vec4<f32>();
}
tint_symbol vertex_main() {
vec4 inner_result = vertex_main_inner();
tint_symbol wrapper_result = tint_symbol(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
void main() {
tint_symbol outputs;
outputs = vertex_main();
gl_Position = outputs.value;
gl_Position.y = -gl_Position.y;
}
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
void ignore_5c9edf() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
void fragment_main() {
@stage(fragment)
fn fragment_main() {
ignore_5c9edf();
return;
}
void main() {
fragment_main();
}
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
void ignore_5c9edf() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
@stage(compute) @workgroup_size(1)
fn compute_main() {
ignore_5c9edf();
return;
}
void main() {
compute_main();
}
Failed to generate: intrinsics/gen/ignore/5c9edf.wgsl:29:10 error: unknown identifier: 'arg_0'
ignore(arg_0);
^^^^^

View File

@ -4,101 +4,30 @@ intrinsics/gen/ignore/ad88be.wgsl:29:3 warning: use of deprecated intrinsic
ignore(arg_0);
^^^^^^
#version 310 es
precision mediump float;
uniform highp samplerCubeArray arg_0;
@group(1) @binding(0) var arg_0 : texture_depth_cube_array;
void ignore_ad88be() {
arg_0;
fn ignore_ad88be() {
ignore(arg_0);
}
struct tint_symbol {
vec4 value;
};
vec4 vertex_main_inner() {
@stage(vertex)
fn vertex_main() -> @builtin(position) vec4<f32> {
ignore_ad88be();
return vec4(0.0f, 0.0f, 0.0f, 0.0f);
return vec4<f32>();
}
tint_symbol vertex_main() {
vec4 inner_result = vertex_main_inner();
tint_symbol wrapper_result = tint_symbol(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
void main() {
tint_symbol outputs;
outputs = vertex_main();
gl_Position = outputs.value;
gl_Position.y = -gl_Position.y;
}
Error parsing GLSL shader:
ERROR: 0:4: 'samplerCubeArray' : Reserved word.
ERROR: 0:4: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp samplerCubeArray arg_0;
void ignore_ad88be() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
void fragment_main() {
@stage(fragment)
fn fragment_main() {
ignore_ad88be();
return;
}
void main() {
fragment_main();
}
Error parsing GLSL shader:
ERROR: 0:4: 'samplerCubeArray' : Reserved word.
ERROR: 0:4: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp samplerCubeArray arg_0;
void ignore_ad88be() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
@stage(compute) @workgroup_size(1)
fn compute_main() {
ignore_ad88be();
return;
}
void main() {
compute_main();
}
Error parsing GLSL shader:
ERROR: 0:4: 'samplerCubeArray' : Reserved word.
ERROR: 0:4: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
Failed to generate: intrinsics/gen/ignore/ad88be.wgsl:29:10 error: unknown identifier: 'arg_0'
ignore(arg_0);
^^^^^

View File

@ -4,101 +4,30 @@ intrinsics/gen/ignore/b469af.wgsl:29:3 warning: use of deprecated intrinsic
ignore(arg_0);
^^^^^^
#version 310 es
precision mediump float;
@group(1) @binding(0) var arg_0 : sampler_comparison;
void ignore_b469af() {
arg_0;
fn ignore_b469af() {
ignore(arg_0);
}
struct tint_symbol {
vec4 value;
};
vec4 vertex_main_inner() {
@stage(vertex)
fn vertex_main() -> @builtin(position) vec4<f32> {
ignore_b469af();
return vec4(0.0f, 0.0f, 0.0f, 0.0f);
return vec4<f32>();
}
tint_symbol vertex_main() {
vec4 inner_result = vertex_main_inner();
tint_symbol wrapper_result = tint_symbol(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
void main() {
tint_symbol outputs;
outputs = vertex_main();
gl_Position = outputs.value;
gl_Position.y = -gl_Position.y;
}
Error parsing GLSL shader:
ERROR: 0:7: 'arg_0' : undeclared identifier
ERROR: 0:7: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
void ignore_b469af() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
void fragment_main() {
@stage(fragment)
fn fragment_main() {
ignore_b469af();
return;
}
void main() {
fragment_main();
}
Error parsing GLSL shader:
ERROR: 0:7: 'arg_0' : undeclared identifier
ERROR: 0:7: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
void ignore_b469af() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
@stage(compute) @workgroup_size(1)
fn compute_main() {
ignore_b469af();
return;
}
void main() {
compute_main();
}
Error parsing GLSL shader:
ERROR: 0:7: 'arg_0' : undeclared identifier
ERROR: 0:7: '' : compilation terminated
ERROR: 2 compilation errors. No code generated.
Failed to generate: intrinsics/gen/ignore/b469af.wgsl:29:10 error: unknown identifier: 'arg_0'
ignore(arg_0);
^^^^^

View File

@ -1,81 +1,33 @@
SKIP: FAILED
intrinsics/gen/ignore/c8a0ee.wgsl:29:3 warning: use of deprecated intrinsic
ignore(arg_0);
^^^^^^
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
@group(1) @binding(0) var arg_0 : texture_depth_2d_array;
void ignore_c8a0ee() {
arg_0;
fn ignore_c8a0ee() {
ignore(arg_0);
}
struct tint_symbol {
vec4 value;
};
vec4 vertex_main_inner() {
@stage(vertex)
fn vertex_main() -> @builtin(position) vec4<f32> {
ignore_c8a0ee();
return vec4(0.0f, 0.0f, 0.0f, 0.0f);
return vec4<f32>();
}
tint_symbol vertex_main() {
vec4 inner_result = vertex_main_inner();
tint_symbol wrapper_result = tint_symbol(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
void main() {
tint_symbol outputs;
outputs = vertex_main();
gl_Position = outputs.value;
gl_Position.y = -gl_Position.y;
}
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
void ignore_c8a0ee() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
void fragment_main() {
@stage(fragment)
fn fragment_main() {
ignore_c8a0ee();
return;
}
void main() {
fragment_main();
}
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
void ignore_c8a0ee() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
@stage(compute) @workgroup_size(1)
fn compute_main() {
ignore_c8a0ee();
return;
}
void main() {
compute_main();
}
Failed to generate: intrinsics/gen/ignore/c8a0ee.wgsl:29:10 error: unknown identifier: 'arg_0'
ignore(arg_0);
^^^^^

View File

@ -1,81 +1,33 @@
SKIP: FAILED
intrinsics/gen/ignore/e0187b.wgsl:29:3 warning: use of deprecated intrinsic
ignore(arg_0);
^^^^^^
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
@group(1) @binding(0) var arg_0 : texture_depth_2d;
void ignore_e0187b() {
arg_0;
fn ignore_e0187b() {
ignore(arg_0);
}
struct tint_symbol {
vec4 value;
};
vec4 vertex_main_inner() {
@stage(vertex)
fn vertex_main() -> @builtin(position) vec4<f32> {
ignore_e0187b();
return vec4(0.0f, 0.0f, 0.0f, 0.0f);
return vec4<f32>();
}
tint_symbol vertex_main() {
vec4 inner_result = vertex_main_inner();
tint_symbol wrapper_result = tint_symbol(vec4(0.0f, 0.0f, 0.0f, 0.0f));
wrapper_result.value = inner_result;
return wrapper_result;
}
void main() {
tint_symbol outputs;
outputs = vertex_main();
gl_Position = outputs.value;
gl_Position.y = -gl_Position.y;
}
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
void ignore_e0187b() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
void fragment_main() {
@stage(fragment)
fn fragment_main() {
ignore_e0187b();
return;
}
void main() {
fragment_main();
}
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
void ignore_e0187b() {
arg_0;
}
struct tint_symbol {
vec4 value;
};
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void compute_main() {
@stage(compute) @workgroup_size(1)
fn compute_main() {
ignore_e0187b();
return;
}
void main() {
compute_main();
}
Failed to generate: intrinsics/gen/ignore/e0187b.wgsl:29:10 error: unknown identifier: 'arg_0'
ignore(arg_0);
^^^^^

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp sampler1D arg_0;
uniform highp sampler1D arg_0_1;
void textureDimensions_002b2a() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp sampler1D arg_0;
uniform highp sampler1D arg_0_1;
void textureDimensions_002b2a() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp sampler1D arg_0;
uniform highp sampler1D arg_0_1;
void textureDimensions_002b2a() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_012b82() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_012b82() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_012b82() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_08753d() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_08753d() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_08753d() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_0c4772() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_0c4772() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_0c4772() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_0cce40() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_0cce40() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_0cce40() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_0cf2ff() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_0cf2ff() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_0cf2ff() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_0d8b7e() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_0d8b7e() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_0d8b7e() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_0e32ee() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_0e32ee() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_0e32ee() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp isampler2DArray arg_0;
uniform highp isampler2DArray arg_0_1;
void textureDimensions_0f3c50() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp isampler2DArray arg_0;
uniform highp isampler2DArray arg_0_1;
void textureDimensions_0f3c50() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp isampler2DArray arg_0;
uniform highp isampler2DArray arg_0_1;
void textureDimensions_0f3c50() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp usampler2D arg_0;
uniform highp usampler2D arg_0_1;
void textureDimensions_1191a5() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler2D arg_0;
uniform highp usampler2D arg_0_1;
void textureDimensions_1191a5() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler2D arg_0;
uniform highp usampler2D arg_0_1;
void textureDimensions_1191a5() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
uniform highp sampler2D arg_0_1;
void textureDimensions_12c9bb() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
uniform highp sampler2D arg_0_1;
void textureDimensions_12c9bb() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
uniform highp sampler2D arg_0_1;
void textureDimensions_12c9bb() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_147998() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_147998() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_147998() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_16036c() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_16036c() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_16036c() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_1b71f0() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_1b71f0() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_1b71f0() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_1d6c26() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_1d6c26() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_1d6c26() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_1e9e39() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_1e9e39() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_1e9e39() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp usampler2DArray arg_0;
uniform highp usampler2DArray arg_0_1;
void textureDimensions_1f20c5() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler2DArray arg_0;
uniform highp usampler2DArray arg_0_1;
void textureDimensions_1f20c5() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler2DArray arg_0;
uniform highp usampler2DArray arg_0_1;
void textureDimensions_1f20c5() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_214dd4() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_214dd4() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_214dd4() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp isamplerCubeArray arg_0;
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_221f22() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp isamplerCubeArray arg_0;
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_221f22() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp isamplerCubeArray arg_0;
uniform highp isamplerCubeArray arg_0_1;
void textureDimensions_221f22() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp usampler2DArray arg_0;
uniform highp usampler2DArray arg_0_1;
void textureDimensions_267788() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler2DArray arg_0;
uniform highp usampler2DArray arg_0_1;
void textureDimensions_267788() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler2DArray arg_0;
uniform highp usampler2DArray arg_0_1;
void textureDimensions_267788() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp sampler3D arg_0;
uniform highp sampler3D arg_0_1;
void textureDimensions_26bdfa() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler3D arg_0;
uniform highp sampler3D arg_0_1;
void textureDimensions_26bdfa() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler3D arg_0;
uniform highp sampler3D arg_0_1;
void textureDimensions_26bdfa() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_26ef6c() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_26ef6c() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_26ef6c() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_2ad087() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_2ad087() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_2ad087() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp usampler3D arg_0;
uniform highp usampler3D arg_0_1;
void textureDimensions_2efa05() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler3D arg_0;
uniform highp usampler3D arg_0_1;
void textureDimensions_2efa05() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler3D arg_0;
uniform highp usampler3D arg_0_1;
void textureDimensions_2efa05() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_2f289f() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_2f289f() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_2f289f() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
uniform highp sampler2D arg_0_1;
void textureDimensions_2fe1cc() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
uniform highp sampler2D arg_0_1;
void textureDimensions_2fe1cc() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2D arg_0;
uniform highp sampler2D arg_0_1;
void textureDimensions_2fe1cc() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_318ecc() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_318ecc() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_318ecc() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_340d06() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_340d06() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_340d06() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_398e30() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_398e30() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_398e30() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_3a94ea() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_3a94ea() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_3a94ea() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_3aca08() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_3aca08() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_3aca08() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_3c5ad8() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_3c5ad8() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_3c5ad8() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp usamplerCubeArray arg_0;
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_4152a6() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp usamplerCubeArray arg_0;
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_4152a6() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp usamplerCubeArray arg_0;
uniform highp usamplerCubeArray arg_0_1;
void textureDimensions_4152a6() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp isampler1D arg_0;
uniform highp isampler1D arg_0_1;
void textureDimensions_423f99() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp isampler1D arg_0;
uniform highp isampler1D arg_0_1;
void textureDimensions_423f99() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp isampler1D arg_0;
uniform highp isampler1D arg_0_1;
void textureDimensions_423f99() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_4267ee() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_4267ee() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_4267ee() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_42d4e6() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_42d4e6() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_42d4e6() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_48cb89() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_48cb89() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_48cb89() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_49d274() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_49d274() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_49d274() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_4df9a8() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_4df9a8() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_4df9a8() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp samplerCubeArray arg_0;
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_50a9ee() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp samplerCubeArray arg_0;
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_50a9ee() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp samplerCubeArray arg_0;
uniform highp samplerCubeArray arg_0_1;
void textureDimensions_50a9ee() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp isampler1D arg_0;
uniform highp isampler1D arg_0_1;
void textureDimensions_52045c() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp isampler1D arg_0;
uniform highp isampler1D arg_0_1;
void textureDimensions_52045c() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp isampler1D arg_0;
uniform highp isampler1D arg_0_1;
void textureDimensions_52045c() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_55b23e() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_55b23e() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly image1D arg_0;
uniform highp writeonly image1D arg_0_1;
void textureDimensions_55b23e() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp usampler2DMS arg_0;
uniform highp usampler2DMS arg_0_1;
void textureDimensions_579629() {
ivec2 res = textureSize(arg_0);
ivec2 res = textureSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler2DMS arg_0;
uniform highp usampler2DMS arg_0_1;
void textureDimensions_579629() {
ivec2 res = textureSize(arg_0);
ivec2 res = textureSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler2DMS arg_0;
uniform highp usampler2DMS arg_0_1;
void textureDimensions_579629() {
ivec2 res = textureSize(arg_0);
ivec2 res = textureSize(arg_0_1);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_57da0b() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_57da0b() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_57da0b() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp samplerCube arg_0;
uniform highp samplerCube arg_0_1;
void textureDimensions_57e28f() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp samplerCube arg_0;
uniform highp samplerCube arg_0_1;
void textureDimensions_57e28f() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp samplerCube arg_0;
uniform highp samplerCube arg_0_1;
void textureDimensions_57e28f() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_58a515() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_58a515() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_58a515() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_5985f3() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_5985f3() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2DArray arg_0;
uniform highp writeonly iimage2DArray arg_0_1;
void textureDimensions_5985f3() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_5caa5e() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_5caa5e() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly uimage1D arg_0;
uniform highp writeonly uimage1D arg_0_1;
void textureDimensions_5caa5e() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_5e295d() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_5e295d() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2DArray arg_0;
uniform highp writeonly uimage2DArray arg_0_1;
void textureDimensions_5e295d() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_60bf54() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_60bf54() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage3D arg_0;
uniform highp writeonly iimage3D arg_0_1;
void textureDimensions_60bf54() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_63f3cf() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_63f3cf() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_63f3cf() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_68105c() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_68105c() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage2D arg_0;
uniform highp writeonly uimage2D arg_0_1;
void textureDimensions_68105c() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp isamplerCube arg_0;
uniform highp isamplerCube arg_0_1;
void textureDimensions_686ef2() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp isamplerCube arg_0;
uniform highp isamplerCube arg_0_1;
void textureDimensions_686ef2() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp isamplerCube arg_0;
uniform highp isamplerCube arg_0_1;
void textureDimensions_686ef2() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_6adac6() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_6adac6() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp writeonly iimage1D arg_0;
uniform highp writeonly iimage1D arg_0_1;
void textureDimensions_6adac6() {
int res = imageSize(arg_0);
int res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp usampler3D arg_0;
uniform highp usampler3D arg_0_1;
void textureDimensions_6ec1b4() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler3D arg_0;
uniform highp usampler3D arg_0_1;
void textureDimensions_6ec1b4() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usampler3D arg_0;
uniform highp usampler3D arg_0_1;
void textureDimensions_6ec1b4() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_6f0d79() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_6f0d79() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2DArray arg_0;
uniform highp writeonly image2DArray arg_0_1;
void textureDimensions_6f0d79() {
ivec2 res = imageSize(arg_0).xy;
ivec2 res = imageSize(arg_0_1).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_702c53() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_702c53() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image2D arg_0;
uniform highp writeonly image2D arg_0_1;
void textureDimensions_702c53() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_72e5d6() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_72e5d6() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_72e5d6() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {

View File

@ -3,10 +3,10 @@ SKIP: FAILED
#version 310 es
precision mediump float;
uniform highp usampler1D arg_0;
uniform highp usampler1D arg_0_1;
void textureDimensions_79df87() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -42,10 +42,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp usampler1D arg_0;
uniform highp usampler1D arg_0_1;
void textureDimensions_79df87() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -71,10 +71,10 @@ ERROR: 2 compilation errors. No code generated.
#version 310 es
precision mediump float;
uniform highp usampler1D arg_0;
uniform highp usampler1D arg_0_1;
void textureDimensions_79df87() {
int res = textureSize(arg_0, 0);
int res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_7bf826() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_7bf826() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_7bf826() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_7f5c2e() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_7f5c2e() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_7f5c2e() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_8028f3() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_8028f3() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly image3D arg_0;
uniform highp writeonly image3D arg_0_1;
void textureDimensions_8028f3() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_811679() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_811679() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_811679() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_820596() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_820596() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly uimage3D arg_0;
uniform highp writeonly uimage3D arg_0_1;
void textureDimensions_820596() {
ivec3 res = imageSize(arg_0);
ivec3 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_83ee5a() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_83ee5a() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp writeonly iimage2D arg_0;
uniform highp writeonly iimage2D arg_0_1;
void textureDimensions_83ee5a() {
ivec2 res = imageSize(arg_0);
ivec2 res = imageSize(arg_0_1);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_85d556() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_85d556() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler2DArray arg_0;
uniform highp sampler2DArray arg_0_1;
void textureDimensions_85d556() {
ivec2 res = textureSize(arg_0, 0).xy;
ivec2 res = textureSize(arg_0_1, 0).xy;
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp usamplerCube arg_0;
uniform highp usamplerCube arg_0_1;
void textureDimensions_88ad17() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usamplerCube arg_0;
uniform highp usamplerCube arg_0_1;
void textureDimensions_88ad17() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp usamplerCube arg_0;
uniform highp usamplerCube arg_0_1;
void textureDimensions_88ad17() {
ivec2 res = textureSize(arg_0, 0);
ivec2 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

View File

@ -1,10 +1,10 @@
#version 310 es
precision mediump float;
uniform highp sampler3D arg_0;
uniform highp sampler3D arg_0_1;
void textureDimensions_8aa4c4() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -33,10 +33,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler3D arg_0;
uniform highp sampler3D arg_0_1;
void textureDimensions_8aa4c4() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {
@ -55,10 +55,10 @@ void main() {
#version 310 es
precision mediump float;
uniform highp sampler3D arg_0;
uniform highp sampler3D arg_0_1;
void textureDimensions_8aa4c4() {
ivec3 res = textureSize(arg_0, 0);
ivec3 res = textureSize(arg_0_1, 0);
}
struct tint_symbol {

Some files were not shown because too many files have changed in this diff Show More