GLSL: only emit default precision qualifier for frag shader.

Other shader types don't need this.
Also fix code style of member var.

Bug: tint:1360
Change-Id: Ic3600ec7c6da9b85b57655fabbf1f2e44b0ea7d3
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/79640
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-02-07 18:49:46 +00:00
committed by Tint LUCI CQ
parent 89c730dbf3
commit bf0180bcee
1358 changed files with 1274 additions and 3256 deletions

View File

@@ -181,7 +181,7 @@ bool GeneratorImpl::Generate() {
TextBuffer extensions;
if (requires_oes_sample_variables) {
if (requires_oes_sample_variables_) {
extensions.Append("#extension GL_OES_sample_variables : require");
}
@@ -192,8 +192,10 @@ bool GeneratorImpl::Generate() {
helpers_insertion_point += extensions.lines.size();
}
current_buffer_->Insert("precision mediump float;", helpers_insertion_point++,
indent);
if (requires_default_precision_qualifier_) {
current_buffer_->Insert("precision mediump float;",
helpers_insertion_point++, indent);
}
if (!helpers_.lines.empty()) {
current_buffer_->Insert("", helpers_insertion_point++, indent);
@@ -1831,7 +1833,7 @@ bool GeneratorImpl::EmitIOVariable(const sem::Variable* var) {
if (auto* b = ast::GetAttribute<ast::BuiltinAttribute>(decl->attributes)) {
// Use of gl_SampleID requires the GL_OES_sample_variables extension
if (RequiresOESSampleVariables(b->builtin)) {
requires_oes_sample_variables = true;
requires_oes_sample_variables_ = true;
}
// Do not emit builtin (gl_) variables.
return true;
@@ -1906,6 +1908,10 @@ bool GeneratorImpl::EmitAttributes(std::ostream& out,
bool GeneratorImpl::EmitEntryPointFunction(const ast::Function* func) {
auto* func_sem = builder_.Sem().Get(func);
if (func->PipelineStage() == ast::PipelineStage::kFragment) {
requires_default_precision_qualifier_ = true;
}
if (func->PipelineStage() == ast::PipelineStage::kCompute) {
auto out = line();
// Emit the layout(local_size) attributes.

View File

@@ -473,7 +473,8 @@ class GeneratorImpl : public TextGenerator {
std::unordered_map<const sem::Struct*, std::string> structure_builders_;
std::unordered_map<const sem::Vector*, std::string> dynamic_vector_write_;
std::unordered_map<const sem::Vector*, std::string> int_dot_funcs_;
bool requires_oes_sample_variables = false;
bool requires_oes_sample_variables_ = false;
bool requires_default_precision_qualifier_ = false;
};
} // namespace glsl

View File

@@ -385,7 +385,6 @@ TEST_F(GlslGeneratorImplTest_Builtin, Degrees_Scalar) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
float tint_degrees(float param_0) {
return param_0 * 57.295779513082322865;
@@ -414,7 +413,6 @@ TEST_F(GlslGeneratorImplTest_Builtin, Degrees_Vector) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
vec3 tint_degrees(vec3 param_0) {
return param_0 * 57.295779513082322865;
@@ -443,7 +441,6 @@ TEST_F(GlslGeneratorImplTest_Builtin, Radians_Scalar) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
float tint_radians(float param_0) {
return param_0 * 0.017453292519943295474;
@@ -472,7 +469,6 @@ TEST_F(GlslGeneratorImplTest_Builtin, Radians_Vector) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
vec3 tint_radians(vec3 param_0) {
return param_0 * 0.017453292519943295474;
@@ -659,7 +655,6 @@ TEST_F(GlslGeneratorImplTest_Builtin, StorageBarrier) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
@@ -681,7 +676,6 @@ TEST_F(GlslGeneratorImplTest_Builtin, WorkgroupBarrier) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
@@ -699,7 +693,6 @@ TEST_F(GlslGeneratorImplTest_Builtin, DotI32) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
int tint_int_dot(ivec3 a, ivec3 b) {
return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
@@ -726,7 +719,6 @@ TEST_F(GlslGeneratorImplTest_Builtin, DotU32) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
uint tint_int_dot(uvec3 a, uvec3 b) {
return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];

View File

@@ -40,7 +40,6 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Function) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"( #version 310 es
precision mediump float;
void my_func() {
return;
@@ -78,7 +77,6 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Function_WithParams) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"( #version 310 es
precision mediump float;
void my_func(float a, int b) {
return;
@@ -786,7 +784,6 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Attribute_EntryPoint_Compute) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() {
@@ -807,7 +804,6 @@ TEST_F(GlslGeneratorImplTest_Function,
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
layout(local_size_x = 2, local_size_y = 4, local_size_z = 6) in;
void main() {
@@ -831,7 +827,6 @@ TEST_F(GlslGeneratorImplTest_Function,
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
const int width = int(2);
const int height = int(3);
@@ -858,7 +853,6 @@ TEST_F(GlslGeneratorImplTest_Function,
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
#ifndef WGSL_SPEC_CONSTANT_7
#define WGSL_SPEC_CONSTANT_7 int(2)
@@ -889,7 +883,6 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Function_WithArrayParams) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
void my_func(float a[5]) {
return;
@@ -908,7 +901,6 @@ TEST_F(GlslGeneratorImplTest_Function, Emit_Function_WithArrayReturn) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
float[5] my_func() {
return float[5](0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
@@ -974,7 +966,6 @@ TEST_F(GlslGeneratorImplTest_Function,
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
struct Data {
float d;

View File

@@ -133,7 +133,6 @@ TEST_F(GlslGeneratorImplTest_MemberAccessor, EmitExpression_MemberAccessor) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
struct Data {
float mem;

View File

@@ -29,7 +29,6 @@ TEST_F(GlslGeneratorImplTest, Generate) {
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#version 310 es
precision mediump float;
void my_func() {
}