mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-17 00:47:13 +00:00
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:
committed by
Tint LUCI CQ
parent
89c730dbf3
commit
bf0180bcee
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user