Commit fa0db6cc by shrekshao Committed by Commit Bot

Use string literal style for shader string in WebGLCompatibilityTest

Bug: None Change-Id: I75255cfda3793c539ac8a6ee2c50b8526bfc9286 Reviewed-on: https://chromium-review.googlesource.com/c/1493113 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@google.com>
parent c87e0053
...@@ -87,34 +87,34 @@ class WebGLCompatibilityTest : public ANGLETest ...@@ -87,34 +87,34 @@ class WebGLCompatibilityTest : public ANGLETest
ASSERT_GL_NO_ERROR(); ASSERT_GL_NO_ERROR();
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec4 position;\n" R"(attribute vec4 position;
"varying vec2 texcoord;\n" varying vec2 texcoord;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(position.xy, 0.0, 1.0);\n" gl_Position = vec4(position.xy, 0.0, 1.0);
" texcoord = (position.xy * 0.5) + 0.5;\n" texcoord = (position.xy * 0.5) + 0.5;
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"precision mediump float;\n" R"(precision mediump float;
"uniform sampler2D tex;\n" uniform sampler2D tex;
"uniform vec4 subtractor;\n" uniform vec4 subtractor;
"varying vec2 texcoord;\n" varying vec2 texcoord;
"void main()\n" void main()
"{\n" {
" vec4 color = texture2D(tex, texcoord);\n" vec4 color = texture2D(tex, texcoord);
" if (abs(color.r - subtractor.r) +\n" if (abs(color.r - subtractor.r) +
" abs(color.g - subtractor.g) +\n" abs(color.g - subtractor.g) +
" abs(color.b - subtractor.b) +\n" abs(color.b - subtractor.b) +
" abs(color.a - subtractor.a) < 8.0)\n" abs(color.a - subtractor.a) < 8.0)
" {\n" {
" gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n" gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
" }\n" }
" else\n" else
" {\n" {
" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
" }\n" }
"}\n"; })";
ANGLE_GL_PROGRAM(samplingProgram, kVS, kFS); ANGLE_GL_PROGRAM(samplingProgram, kVS, kFS);
glUseProgram(samplingProgram.get()); glUseProgram(samplingProgram.get());
...@@ -217,16 +217,16 @@ class WebGLCompatibilityTest : public ANGLETest ...@@ -217,16 +217,16 @@ class WebGLCompatibilityTest : public ANGLETest
void TestExtFloatBlend(bool shouldBlend) void TestExtFloatBlend(bool shouldBlend)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"void main()\n" R"(void main()
"{\n" {
" gl_Position = vec4(0, 0, 0, 1);\n" gl_Position = vec4(0, 0, 0, 1);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"void main()\n" R"(void main()
"{\n" {
" gl_FragColor = vec4(0, 1, 0, 1);\n" gl_FragColor = vec4(0, 1, 0, 1);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
glUseProgram(program); glUseProgram(program);
...@@ -364,8 +364,8 @@ TEST_P(WebGLCompatibilityTest, EnableExtensionStandardDerivitives) ...@@ -364,8 +364,8 @@ TEST_P(WebGLCompatibilityTest, EnableExtensionStandardDerivitives)
EXPECT_FALSE(extensionEnabled("GL_OES_standard_derivatives")); EXPECT_FALSE(extensionEnabled("GL_OES_standard_derivatives"));
constexpr char kFS[] = constexpr char kFS[] =
"#extension GL_OES_standard_derivatives : require\n" R"(#extension GL_OES_standard_derivatives : require
"void main() { gl_FragColor = vec4(dFdx(vec2(1.0, 1.0)).x, 1, 0, 1); }\n"; void main() { gl_FragColor = vec4(dFdx(vec2(1.0, 1.0)).x, 1, 0, 1); })";
ASSERT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFS)); ASSERT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFS));
if (extensionRequestable("GL_OES_standard_derivatives")) if (extensionRequestable("GL_OES_standard_derivatives"))
...@@ -386,12 +386,12 @@ TEST_P(WebGLCompatibilityTest, EnableExtensionTextureLOD) ...@@ -386,12 +386,12 @@ TEST_P(WebGLCompatibilityTest, EnableExtensionTextureLOD)
EXPECT_FALSE(extensionEnabled("GL_EXT_shader_texture_lod")); EXPECT_FALSE(extensionEnabled("GL_EXT_shader_texture_lod"));
constexpr char kFS[] = constexpr char kFS[] =
"#extension GL_EXT_shader_texture_lod : require\n" R"(#extension GL_EXT_shader_texture_lod : require
"uniform sampler2D u_texture;\n" uniform sampler2D u_texture;
"void main() {\n" void main() {
" gl_FragColor = texture2DGradEXT(u_texture, vec2(0.0, 0.0), vec2(0.0, 0.0), vec2(0.0, " gl_FragColor = texture2DGradEXT(u_texture, vec2(0.0, 0.0), vec2(0.0, 0.0), vec2(0.0,
"0.0));\n" 0.0));
"}\n"; })";
ASSERT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFS)); ASSERT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFS));
if (extensionRequestable("GL_EXT_shader_texture_lod")) if (extensionRequestable("GL_EXT_shader_texture_lod"))
...@@ -412,11 +412,11 @@ TEST_P(WebGLCompatibilityTest, EnableExtensionFragDepth) ...@@ -412,11 +412,11 @@ TEST_P(WebGLCompatibilityTest, EnableExtensionFragDepth)
EXPECT_FALSE(extensionEnabled("GL_EXT_frag_depth")); EXPECT_FALSE(extensionEnabled("GL_EXT_frag_depth"));
constexpr char kFS[] = constexpr char kFS[] =
"#extension GL_EXT_frag_depth : require\n" R"(#extension GL_EXT_frag_depth : require
"void main() {\n" void main() {
" gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n" gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
" gl_FragDepthEXT = 1.0;\n" gl_FragDepthEXT = 1.0;
"}\n"; })";
ASSERT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFS)); ASSERT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFS));
if (extensionRequestable("GL_EXT_frag_depth")) if (extensionRequestable("GL_EXT_frag_depth"))
...@@ -479,24 +479,24 @@ TEST_P(WebGLCompatibilityTest, EnableExtensionEGLImage) ...@@ -479,24 +479,24 @@ TEST_P(WebGLCompatibilityTest, EnableExtensionEGLImage)
EXPECT_FALSE(extensionEnabled("NV_EGL_stream_consumer_external")); EXPECT_FALSE(extensionEnabled("NV_EGL_stream_consumer_external"));
constexpr char kFSES2[] = constexpr char kFSES2[] =
"#extension GL_OES_EGL_image_external : require\n" R"(#extension GL_OES_EGL_image_external : require
"precision highp float;\n" precision highp float;
"uniform samplerExternalOES sampler;\n" uniform samplerExternalOES sampler;
"void main()\n" void main()
"{\n" {
" gl_FragColor = texture2D(sampler, vec2(0, 0));\n" gl_FragColor = texture2D(sampler, vec2(0, 0));
"}"; })";
EXPECT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFSES2)); EXPECT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFSES2));
constexpr char kFSES3[] = constexpr char kFSES3[] =
"#version 300 es\n" R"(#version 300 es
"#extension GL_OES_EGL_image_external : require\n" #extension GL_OES_EGL_image_external : require
"precision highp float;\n" precision highp float;
"uniform samplerExternalOES sampler;\n" uniform samplerExternalOES sampler;
"void main()\n" void main()
"{\n" {
" gl_FragColor = texture(sampler, vec2(0, 0));\n" gl_FragColor = texture(sampler, vec2(0, 0));
"}"; })";
if (getClientMajorVersion() > 3) if (getClientMajorVersion() > 3)
{ {
EXPECT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFSES3)); EXPECT_EQ(0u, CompileShader(GL_FRAGMENT_SHADER, kFSES3));
...@@ -545,20 +545,20 @@ TEST_P(WebGLCompatibilityTest, ExtensionCompilerSpec) ...@@ -545,20 +545,20 @@ TEST_P(WebGLCompatibilityTest, ExtensionCompilerSpec)
// Use of reserved _webgl prefix should fail when the shader specification is for WebGL. // Use of reserved _webgl prefix should fail when the shader specification is for WebGL.
constexpr char kVS[] = constexpr char kVS[] =
"struct Foo {\n" R"(struct Foo {
" int _webgl_bar;\n" int _webgl_bar;
"};\n" };
"void main()\n" void main()
"{\n" {
" Foo foo = Foo(1);\n" Foo foo = Foo(1);
"}"; })";
// Default fragement shader. // Default fragement shader.
constexpr char kFS[] = constexpr char kFS[] =
"void main()\n" R"(void main()
"{\n" {
" gl_FragColor = vec4(1.0,0.0,0.0,1.0);\n" gl_FragColor = vec4(1.0,0.0,0.0,1.0);
"}"; })";
GLuint program = CompileProgram(kVS, kFS); GLuint program = CompileProgram(kVS, kFS);
EXPECT_EQ(0u, program); EXPECT_EQ(0u, program);
...@@ -1114,16 +1114,16 @@ TEST_P(WebGLCompatibilityTest, EnableProgramBinaryExtension) ...@@ -1114,16 +1114,16 @@ TEST_P(WebGLCompatibilityTest, EnableProgramBinaryExtension)
EXPECT_GL_ERROR(GL_INVALID_ENUM); EXPECT_GL_ERROR(GL_INVALID_ENUM);
constexpr char kVS[] = constexpr char kVS[] =
"void main()\n" R"(void main()
"{\n" {
" gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n" gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"precision highp float;\n" R"(precision highp float;
"void main()\n" void main()
"{\n" {
" gl_FragColor = vec4(1.0);\n" gl_FragColor = vec4(1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
glGetProgramiv(program, GL_PROGRAM_BINARY_LENGTH, &result); glGetProgramiv(program, GL_PROGRAM_BINARY_LENGTH, &result);
...@@ -1251,18 +1251,18 @@ TEST_P(WebGLCompatibilityTest, FramebufferAttachmentSizeMismatch) ...@@ -1251,18 +1251,18 @@ TEST_P(WebGLCompatibilityTest, FramebufferAttachmentSizeMismatch)
TEST_P(WebGLCompatibilityTest, ForbidsClientSideArrayBuffer) TEST_P(WebGLCompatibilityTest, ForbidsClientSideArrayBuffer)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec3 a_pos;\n" R"(attribute vec3 a_pos;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, 1.0);\n" gl_Position = vec4(a_pos, 1.0);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"precision highp float;\n" R"(precision highp float;
"void main()\n" void main()
"{\n" {
" gl_FragColor = vec4(1.0);\n" gl_FragColor = vec4(1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
...@@ -1283,18 +1283,18 @@ TEST_P(WebGLCompatibilityTest, ForbidsClientSideArrayBuffer) ...@@ -1283,18 +1283,18 @@ TEST_P(WebGLCompatibilityTest, ForbidsClientSideArrayBuffer)
TEST_P(WebGLCompatibilityTest, ForbidsClientSideElementBuffer) TEST_P(WebGLCompatibilityTest, ForbidsClientSideElementBuffer)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec3 a_pos;\n" R"(attribute vec3 a_pos;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, 1.0);\n" gl_Position = vec4(a_pos, 1.0);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"precision highp float;\n" R"(precision highp float;
"void main()\n" void main()
"{\n" {
" gl_FragColor = vec4(1.0);\n" gl_FragColor = vec4(1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
...@@ -1325,17 +1325,17 @@ TEST_P(WebGLCompatibilityTest, ForbidsClientSideElementBuffer) ...@@ -1325,17 +1325,17 @@ TEST_P(WebGLCompatibilityTest, ForbidsClientSideElementBuffer)
TEST_P(WebGLCompatibilityTest, ForbidsClientSideArrayBufferEvenNotUsedOnes) TEST_P(WebGLCompatibilityTest, ForbidsClientSideArrayBufferEvenNotUsedOnes)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"void main()\n" R"(void main()
"{\n" {
" gl_Position = vec4(1.0);\n" gl_Position = vec4(1.0);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"precision highp float;\n" R"(precision highp float;
"void main()\n" void main()
"{\n" {
" gl_FragColor = vec4(1.0);\n" gl_FragColor = vec4(1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
...@@ -1496,11 +1496,11 @@ TEST_P(WebGLCompatibilityTest, MaxStride) ...@@ -1496,11 +1496,11 @@ TEST_P(WebGLCompatibilityTest, MaxStride)
TEST_P(WebGLCompatibilityTest, DrawArraysBufferOutOfBoundsNonInstanced) TEST_P(WebGLCompatibilityTest, DrawArraysBufferOutOfBoundsNonInstanced)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute float a_pos;\n" R"(attribute float a_pos;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);\n" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
GLint posLocation = glGetAttribLocation(program.get(), "a_pos"); GLint posLocation = glGetAttribLocation(program.get(), "a_pos");
...@@ -1553,11 +1553,11 @@ TEST_P(WebGLCompatibilityTest, LargeIndexRange) ...@@ -1553,11 +1553,11 @@ TEST_P(WebGLCompatibilityTest, LargeIndexRange)
ANGLE_SKIP_TEST_IF(!ensureExtensionEnabled("GL_OES_element_index_uint")); ANGLE_SKIP_TEST_IF(!ensureExtensionEnabled("GL_OES_element_index_uint"));
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec4 a_Position;\n" R"(attribute vec4 a_Position;
"void main()\n" void main()
"{\n" {
" gl_Position = a_Position;\n" gl_Position = a_Position;
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
glUseProgram(program.get()); glUseProgram(program.get());
...@@ -1599,11 +1599,11 @@ TEST_P(WebGLCompatibilityTest, LargeIndexRange) ...@@ -1599,11 +1599,11 @@ TEST_P(WebGLCompatibilityTest, LargeIndexRange)
TEST_P(WebGLCompatibilityTest, NullIndexBuffer) TEST_P(WebGLCompatibilityTest, NullIndexBuffer)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute float a_pos;\n" R"(attribute float a_pos;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);\n" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
glUseProgram(program.get()); glUseProgram(program.get());
...@@ -1619,12 +1619,12 @@ TEST_P(WebGLCompatibilityTest, NullIndexBuffer) ...@@ -1619,12 +1619,12 @@ TEST_P(WebGLCompatibilityTest, NullIndexBuffer)
TEST_P(WebGL2CompatibilityTest, DrawArraysBufferOutOfBoundsInstanced) TEST_P(WebGL2CompatibilityTest, DrawArraysBufferOutOfBoundsInstanced)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute float a_pos;\n" R"(attribute float a_pos;
"attribute float a_w;\n" attribute float a_w;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, a_pos, a_pos, a_w);\n" gl_Position = vec4(a_pos, a_pos, a_pos, a_w);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
GLint posLocation = glGetAttribLocation(program.get(), "a_pos"); GLint posLocation = glGetAttribLocation(program.get(), "a_pos");
...@@ -1685,12 +1685,12 @@ TEST_P(WebGLCompatibilityTest, DrawArraysBufferOutOfBoundsInstancedANGLE) ...@@ -1685,12 +1685,12 @@ TEST_P(WebGLCompatibilityTest, DrawArraysBufferOutOfBoundsInstancedANGLE)
EXPECT_GL_NO_ERROR(); EXPECT_GL_NO_ERROR();
constexpr char kVS[] = constexpr char kVS[] =
"attribute float a_pos;\n" R"(attribute float a_pos;
"attribute float a_w;\n" attribute float a_w;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, a_pos, a_pos, a_w);\n" gl_Position = vec4(a_pos, a_pos, a_pos, a_w);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
GLint posLocation = glGetAttribLocation(program.get(), "a_pos"); GLint posLocation = glGetAttribLocation(program.get(), "a_pos");
...@@ -1747,11 +1747,11 @@ TEST_P(WebGLCompatibilityTest, DrawArraysBufferOutOfBoundsInstancedANGLE) ...@@ -1747,11 +1747,11 @@ TEST_P(WebGLCompatibilityTest, DrawArraysBufferOutOfBoundsInstancedANGLE)
TEST_P(WebGLCompatibilityTest, DrawElementsBufferOutOfBoundsInIndexBuffer) TEST_P(WebGLCompatibilityTest, DrawElementsBufferOutOfBoundsInIndexBuffer)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute float a_pos;\n" R"(attribute float a_pos;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);\n" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
GLint posLocation = glGetAttribLocation(program.get(), "a_pos"); GLint posLocation = glGetAttribLocation(program.get(), "a_pos");
...@@ -1800,11 +1800,11 @@ TEST_P(WebGLCompatibilityTest, DrawElementsBufferOutOfBoundsInIndexBuffer) ...@@ -1800,11 +1800,11 @@ TEST_P(WebGLCompatibilityTest, DrawElementsBufferOutOfBoundsInIndexBuffer)
TEST_P(WebGLCompatibilityTest, DrawElementsBufferOutOfBoundsInVertexBuffer) TEST_P(WebGLCompatibilityTest, DrawElementsBufferOutOfBoundsInVertexBuffer)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute float a_pos;\n" R"(attribute float a_pos;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);\n" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
GLint posLocation = glGetAttribLocation(program.get(), "a_pos"); GLint posLocation = glGetAttribLocation(program.get(), "a_pos");
...@@ -1916,25 +1916,25 @@ TEST_P(WebGLCompatibilityTest, InvalidAttributeAndUniformNames) ...@@ -1916,25 +1916,25 @@ TEST_P(WebGLCompatibilityTest, InvalidAttributeAndUniformNames)
std::string vert = "attribute float "; std::string vert = "attribute float ";
vert += validAttribName; vert += validAttribName;
vert += vert +=
";\n" R"(;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(1.0);\n" gl_Position = vec4(1.0);
"}\n"; })";
std::string frag = std::string frag =
"precision highp float;\n" R"(precision highp float;
"uniform vec4 "; uniform vec4 )";
frag += validUniformName; frag += validUniformName;
// Insert illegal characters into comments // Insert illegal characters into comments
frag += frag +=
";\n" R"(;
" // $ \" @ /*\n" // $ \" @ /*
"void main()\n" void main()
"{/*\n" {/*
" ` @ $\n" ` @ $
" */gl_FragColor = vec4(1.0);\n" */gl_FragColor = vec4(1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, vert.c_str(), frag.c_str()); ANGLE_GL_PROGRAM(program, vert.c_str(), frag.c_str());
EXPECT_GL_NO_ERROR(); EXPECT_GL_NO_ERROR();
...@@ -1965,11 +1965,11 @@ TEST_P(WebGLCompatibilityTest, InvalidAttributeAndUniformNames) ...@@ -1965,11 +1965,11 @@ TEST_P(WebGLCompatibilityTest, InvalidAttributeAndUniformNames)
const char *invalidVert[] = { const char *invalidVert[] = {
"attribute float ", "attribute float ",
invalidAttribName.c_str(), invalidAttribName.c_str(),
";\n", R"(;,
"void main()\n", void main(),
"{\n", {,
" gl_Position = vec4(1.0);\n", gl_Position = vec4(1.0);,
"}\n", })",
}; };
GLuint shader = glCreateShader(GL_VERTEX_SHADER); GLuint shader = glCreateShader(GL_VERTEX_SHADER);
...@@ -1987,21 +1987,21 @@ TEST_P(WebGLCompatibilityTest, ShaderSourceLineContinuation) ...@@ -1987,21 +1987,21 @@ TEST_P(WebGLCompatibilityTest, ShaderSourceLineContinuation)
ANGLE_SKIP_TEST_IF(getClientMajorVersion() >= 3); ANGLE_SKIP_TEST_IF(getClientMajorVersion() >= 3);
const char *validVert = const char *validVert =
"#define foo this is a test\n" R"(#define foo this is a test
"precision mediump float;\n" precision mediump float;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(1.0);\n" gl_Position = vec4(1.0);
"}\n"; })";
const char *invalidVert = const char *invalidVert =
"#define foo this \\n" R"(#define foo this \
" is a test\n" is a test
"precision mediump float;\n" precision mediump float;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(1.0);\n" gl_Position = vec4(1.0);
"}\n"; })";
GLuint shader = glCreateShader(GL_VERTEX_SHADER); GLuint shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shader, 1, &validVert, nullptr); glShaderSource(shader, 1, &validVert, nullptr);
...@@ -2016,26 +2016,26 @@ TEST_P(WebGLCompatibilityTest, ShaderSourceLineContinuation) ...@@ -2016,26 +2016,26 @@ TEST_P(WebGLCompatibilityTest, ShaderSourceLineContinuation)
TEST_P(WebGL2CompatibilityTest, ShaderSourceLineContinuation) TEST_P(WebGL2CompatibilityTest, ShaderSourceLineContinuation)
{ {
const char *validVert = const char *validVert =
"#version 300 es\n" R"(#version 300 es
"precision mediump float;\n" precision mediump float;
"\n"
"void main ()\n" void main ()
"{\n" {
" float f\\\n" float f\
"oo = 1.0;\n" oo = 1.0;
" gl_Position = vec4(foo);\n" gl_Position = vec4(foo);
"}\n"; })";
const char *invalidVert = const char *invalidVert =
"#version 300 es\n" R"(#version 300 es
"precision mediump float;\n" precision mediump float;
"\n"
"void main ()\n" void main ()
"{\n" {
" float f\\$\n" float f\$
"oo = 1.0;\n" oo = 1.0;
" gl_Position = vec4(foo);\n" gl_Position = vec4(foo);
"}\n"; })";
GLuint shader = glCreateShader(GL_VERTEX_SHADER); GLuint shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shader, 1, &validVert, nullptr); glShaderSource(shader, 1, &validVert, nullptr);
...@@ -2064,11 +2064,11 @@ TEST_P(WebGLCompatibilityTest, BindAttribLocationLimitation) ...@@ -2064,11 +2064,11 @@ TEST_P(WebGLCompatibilityTest, BindAttribLocationLimitation)
TEST_P(WebGL2CompatibilityTest, InstancedDrawZeroDivisor) TEST_P(WebGL2CompatibilityTest, InstancedDrawZeroDivisor)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute float a_pos;\n" R"(attribute float a_pos;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);\n" gl_Position = vec4(a_pos, a_pos, a_pos, 1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
...@@ -2150,23 +2150,23 @@ TEST_P(WebGLCompatibilityTest, DefaultPosition) ...@@ -2150,23 +2150,23 @@ TEST_P(WebGLCompatibilityTest, DefaultPosition)
// and green otherwise. The center of each quadrant will be red if and only if all // and green otherwise. The center of each quadrant will be red if and only if all
// four corners are red. // four corners are red.
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec3 pos;\n" R"(attribute vec3 pos;
"varying vec4 color;\n" varying vec4 color;
"void main() {\n" void main() {
" if (gl_Position == vec4(0,0,0,0)) {\n" if (gl_Position == vec4(0,0,0,0)) {
" color = vec4(1,0,0,1);\n" color = vec4(1,0,0,1);
" } else {\n" } else {
" color = vec4(0,1,0,1);\n" color = vec4(0,1,0,1);
" }\n" }
" gl_Position = vec4(pos,1);\n" gl_Position = vec4(pos,1);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"precision mediump float;\n" R"(precision mediump float;
"varying vec4 color;\n" varying vec4 color;
"void main() {\n" void main() {
" gl_FragColor = color;\n" gl_FragColor = color;
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
drawQuad(program.get(), "pos", 0.0f, 1.0f, true); drawQuad(program.get(), "pos", 0.0f, 1.0f, true);
...@@ -2181,21 +2181,21 @@ TEST_P(WebGLCompatibilityTest, DefaultPosition) ...@@ -2181,21 +2181,21 @@ TEST_P(WebGLCompatibilityTest, DefaultPosition)
TEST_P(WebGLCompatibilityTest, RenderingFeedbackLoop) TEST_P(WebGLCompatibilityTest, RenderingFeedbackLoop)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec4 a_position;\n" R"(attribute vec4 a_position;
"varying vec2 v_texCoord;\n" varying vec2 v_texCoord;
"void main() {\n" void main() {
" gl_Position = a_position;\n" gl_Position = a_position;
" v_texCoord = (a_position.xy * 0.5) + 0.5;\n" v_texCoord = (a_position.xy * 0.5) + 0.5;
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"precision mediump float;\n" R"(precision mediump float;
"varying vec2 v_texCoord;\n" varying vec2 v_texCoord;
"uniform sampler2D u_texture;\n" uniform sampler2D u_texture;
"void main() {\n" void main() {
" // Shader swizzles color channels so we can tell if the draw succeeded.\n" // Shader swizzles color channels so we can tell if the draw succeeded.
" gl_FragColor = texture2D(u_texture, v_texCoord).gbra;\n" gl_FragColor = texture2D(u_texture, v_texCoord).gbra;
"}\n"; })";
GLTexture texture; GLTexture texture;
FillTexture2D(texture.get(), 1, 1, GLColor::red, 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE); FillTexture2D(texture.get(), 1, 1, GLColor::red, 0, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE);
...@@ -2284,11 +2284,11 @@ TEST_P(WebGLCompatibilityTest, MaxDrawBuffersAttachmentPoints) ...@@ -2284,11 +2284,11 @@ TEST_P(WebGLCompatibilityTest, MaxDrawBuffersAttachmentPoints)
TEST_P(WebGLCompatibilityTest, DrawElementsOffsetRestriction) TEST_P(WebGLCompatibilityTest, DrawElementsOffsetRestriction)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec3 a_pos;\n" R"(attribute vec3 a_pos;
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(a_pos, 1.0);\n" gl_Position = vec4(a_pos, 1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl1_shaders::fs::Red());
...@@ -2373,22 +2373,22 @@ void WebGLCompatibilityTest::drawBuffersEXTFeedbackLoop(GLuint program, ...@@ -2373,22 +2373,22 @@ void WebGLCompatibilityTest::drawBuffersEXTFeedbackLoop(GLuint program,
TEST_P(WebGLCompatibilityTest, RenderingFeedbackLoopWithDrawBuffersEXT) TEST_P(WebGLCompatibilityTest, RenderingFeedbackLoopWithDrawBuffersEXT)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec4 aPosition;\n" R"(attribute vec4 aPosition;
"varying vec2 texCoord;\n" varying vec2 texCoord;
"void main() {\n" void main() {
" gl_Position = aPosition;\n" gl_Position = aPosition;
" texCoord = (aPosition.xy * 0.5) + 0.5;\n" texCoord = (aPosition.xy * 0.5) + 0.5;
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"#extension GL_EXT_draw_buffers : require\n" R"(#extension GL_EXT_draw_buffers : require
"precision mediump float;\n" precision mediump float;
"uniform sampler2D tex;\n" uniform sampler2D tex;
"varying vec2 texCoord;\n" varying vec2 texCoord;
"void main() {\n" void main() {
" gl_FragData[0] = texture2D(tex, texCoord);\n" gl_FragData[0] = texture2D(tex, texCoord);
" gl_FragData[1] = texture2D(tex, texCoord);\n" gl_FragData[1] = texture2D(tex, texCoord);
"}\n"; })";
GLsizei width = 8; GLsizei width = 8;
GLsizei height = 8; GLsizei height = 8;
...@@ -2522,24 +2522,24 @@ void WebGLCompatibilityTest::drawBuffersFeedbackLoop(GLuint program, ...@@ -2522,24 +2522,24 @@ void WebGLCompatibilityTest::drawBuffersFeedbackLoop(GLuint program,
TEST_P(WebGLCompatibilityTest, BuiltInInvariant) TEST_P(WebGLCompatibilityTest, BuiltInInvariant)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"varying vec4 v_varying;\n" R"(varying vec4 v_varying;
"void main()\n" void main()
"{\n" {
" gl_PointSize = 1.0;\n" gl_PointSize = 1.0;
" gl_Position = v_varying;\n" gl_Position = v_varying;
"}"; })";
constexpr char kFSInvariantGlFragCoord[] = constexpr char kFSInvariantGlFragCoord[] =
"invariant gl_FragCoord;\n" R"(invariant gl_FragCoord;
"void main()\n" void main()
"{\n" {
" gl_FragColor = gl_FragCoord;\n" gl_FragColor = gl_FragCoord;
"}"; })";
constexpr char kFSInvariantGlPointCoord[] = constexpr char kFSInvariantGlPointCoord[] =
"invariant gl_PointCoord;\n" R"(invariant gl_PointCoord;
"void main()\n" void main()
"{\n" {
" gl_FragColor = vec4(gl_PointCoord, 0.0, 0.0);\n" gl_FragColor = vec4(gl_PointCoord, 0.0, 0.0);
"}"; })";
GLuint program = CompileProgram(kVS, kFSInvariantGlFragCoord); GLuint program = CompileProgram(kVS, kFSInvariantGlFragCoord);
EXPECT_EQ(0u, program); EXPECT_EQ(0u, program);
...@@ -2553,18 +2553,18 @@ TEST_P(WebGLCompatibilityTest, BuiltInInvariant) ...@@ -2553,18 +2553,18 @@ TEST_P(WebGLCompatibilityTest, BuiltInInvariant)
TEST_P(WebGLCompatibilityTest, GlobalNamesConflict) TEST_P(WebGLCompatibilityTest, GlobalNamesConflict)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"attribute vec4 foo;\n" R"(attribute vec4 foo;
"void main()\n" void main()
"{\n" {
" gl_Position = foo;\n" gl_Position = foo;
"}"; })";
constexpr char kFS[] = constexpr char kFS[] =
"precision mediump float;\n" R"(precision mediump float;
"uniform vec4 foo;\n" uniform vec4 foo;
"void main()\n" void main()
"{\n" {
" gl_FragColor = foo;\n" gl_FragColor = foo;
"}"; })";
GLuint program = CompileProgram(kVS, kFS); GLuint program = CompileProgram(kVS, kFS);
EXPECT_EQ(0u, program); EXPECT_EQ(0u, program);
...@@ -2920,16 +2920,16 @@ TEST_P(WebGLCompatibilityTest, FramebufferFloatColorAttachment) ...@@ -2920,16 +2920,16 @@ TEST_P(WebGLCompatibilityTest, FramebufferFloatColorAttachment)
} }
constexpr char kVS[] = constexpr char kVS[] =
"void main()\n" R"(void main()
"{\n" {
" gl_Position = vec4(0, 0, 0, 1);\n" gl_Position = vec4(0, 0, 0, 1);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"void main()\n" R"(void main()
"{\n" {
" gl_FragColor = vec4(0, 1, 0, 1);\n" gl_FragColor = vec4(0, 1, 0, 1);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
glUseProgram(program); glUseProgram(program);
...@@ -2996,22 +2996,22 @@ TEST_P(WebGLCompatibilityTest, FramebufferFloatColorAttachmentMRT) ...@@ -2996,22 +2996,22 @@ TEST_P(WebGLCompatibilityTest, FramebufferFloatColorAttachmentMRT)
ANGLE_SKIP_TEST_IF(!ensureExtensionEnabled("GL_EXT_color_buffer_float")); ANGLE_SKIP_TEST_IF(!ensureExtensionEnabled("GL_EXT_color_buffer_float"));
constexpr char kVS[] = constexpr char kVS[] =
"#version 300 es\n" R"(#version 300 es
"void main()\n" void main()
"{\n" {
" gl_Position = vec4(0, 0, 0, 1);\n" gl_Position = vec4(0, 0, 0, 1);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"#version 300 es\n" R"(#version 300 es
"precision lowp float;\n" precision lowp float;
"layout(location = 0) out vec4 o_color0;\n" layout(location = 0) out vec4 o_color0;
"layout(location = 1) out vec4 o_color1;\n" layout(location = 1) out vec4 o_color1;
"void main()\n" void main()
"{\n" {
" o_color0 = vec4(1, 0, 0, 1);\n" o_color0 = vec4(1, 0, 0, 1);
" o_color1 = vec4(0, 1, 0, 1);\n" o_color1 = vec4(0, 1, 0, 1);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
glUseProgram(program); glUseProgram(program);
...@@ -3023,19 +3023,19 @@ TEST_P(WebGLCompatibilityTest, FramebufferFloatColorAttachmentMRT) ...@@ -3023,19 +3023,19 @@ TEST_P(WebGLCompatibilityTest, FramebufferFloatColorAttachmentMRT)
ANGLE_SKIP_TEST_IF(!ensureExtensionEnabled("GL_EXT_draw_buffers")); ANGLE_SKIP_TEST_IF(!ensureExtensionEnabled("GL_EXT_draw_buffers"));
constexpr char kVS[] = constexpr char kVS[] =
"void main()\n" R"(void main()
"{\n" {
" gl_Position = vec4(0, 0, 0, 1);\n" gl_Position = vec4(0, 0, 0, 1);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"#extension GL_EXT_draw_buffers : require\n" R"(#extension GL_EXT_draw_buffers : require
"precision lowp float;\n" precision lowp float;
"void main()\n" void main()
"{\n" {
" gl_FragData[0] = vec4(1, 0, 0, 1);\n" gl_FragData[0] = vec4(1, 0, 0, 1);
" gl_FragData[1] = vec4(0, 1, 0, 1);\n" gl_FragData[1] = vec4(0, 1, 0, 1);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
glUseProgram(program); glUseProgram(program);
...@@ -3482,23 +3482,23 @@ TEST_P(WebGLCompatibilityTest, FramebufferAttachmentConsistancy) ...@@ -3482,23 +3482,23 @@ TEST_P(WebGLCompatibilityTest, FramebufferAttachmentConsistancy)
TEST_P(WebGL2CompatibilityTest, RenderingFeedbackLoopWithDrawBuffers) TEST_P(WebGL2CompatibilityTest, RenderingFeedbackLoopWithDrawBuffers)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"#version 300 es\n" R"(#version 300 es
"in vec4 aPosition;\n" in vec4 aPosition;
"out vec2 texCoord;\n" out vec2 texCoord;
"void main() {\n" void main() {
" gl_Position = aPosition;\n" gl_Position = aPosition;
" texCoord = (aPosition.xy * 0.5) + 0.5;\n" texCoord = (aPosition.xy * 0.5) + 0.5;
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"#version 300 es\n" R"(#version 300 es
"precision mediump float;\n" precision mediump float;
"uniform sampler2D tex;\n" uniform sampler2D tex;
"in vec2 texCoord;\n" in vec2 texCoord;
"out vec4 oColor;\n" out vec4 oColor;
"void main() {\n" void main() {
" oColor = texture(tex, texCoord);\n" oColor = texture(tex, texCoord);
"}\n"; })";
GLsizei width = 8; GLsizei width = 8;
GLsizei height = 8; GLsizei height = 8;
...@@ -3541,23 +3541,23 @@ TEST_P(WebGL2CompatibilityTest, RenderingFeedbackLoopWithDrawBuffers) ...@@ -3541,23 +3541,23 @@ TEST_P(WebGL2CompatibilityTest, RenderingFeedbackLoopWithDrawBuffers)
TEST_P(WebGL2CompatibilityTest, RenderingFeedbackLoopWithDepthStencil) TEST_P(WebGL2CompatibilityTest, RenderingFeedbackLoopWithDepthStencil)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"#version 300 es\n" R"(#version 300 es
"in vec4 aPosition;\n" in vec4 aPosition;
"out vec2 texCoord;\n" out vec2 texCoord;
"void main() {\n" void main() {
" gl_Position = aPosition;\n" gl_Position = aPosition;
" texCoord = (aPosition.xy * 0.5) + 0.5;\n" texCoord = (aPosition.xy * 0.5) + 0.5;
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"#version 300 es\n" R"(#version 300 es
"precision mediump float;\n" precision mediump float;
"uniform sampler2D tex;\n" uniform sampler2D tex;
"in vec2 texCoord;\n" in vec2 texCoord;
"out vec4 oColor;\n" out vec4 oColor;
"void main() {\n" void main() {
" oColor = texture(tex, texCoord);\n" oColor = texture(tex, texCoord);
"}\n"; })";
GLsizei width = 8; GLsizei width = 8;
GLsizei height = 8; GLsizei height = 8;
...@@ -3880,22 +3880,22 @@ TEST_P(WebGL2CompatibilityTest, BlitFramebufferSameImage) ...@@ -3880,22 +3880,22 @@ TEST_P(WebGL2CompatibilityTest, BlitFramebufferSameImage)
TEST_P(WebGL2CompatibilityTest, FragmentShaderColorBufferTypeMissmatch) TEST_P(WebGL2CompatibilityTest, FragmentShaderColorBufferTypeMissmatch)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"#version 300 es\n" R"(#version 300 es
"void main() {\n" void main() {
" gl_Position = vec4(0, 0, 0, 1);\n" gl_Position = vec4(0, 0, 0, 1);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"#version 300 es\n" R"(#version 300 es
"precision mediump float;\n" precision mediump float;
"layout(location = 0) out vec4 floatOutput;\n" layout(location = 0) out vec4 floatOutput;
"layout(location = 1) out uvec4 uintOutput;\n" layout(location = 1) out uvec4 uintOutput;
"layout(location = 2) out ivec4 intOutput;\n" layout(location = 2) out ivec4 intOutput;
"void main() {\n" void main() {
" floatOutput = vec4(0, 0, 0, 1);\n" floatOutput = vec4(0, 0, 0, 1);
" uintOutput = uvec4(0, 0, 0, 1);\n" uintOutput = uvec4(0, 0, 0, 1);
" intOutput = ivec4(0, 0, 0, 1);\n" intOutput = ivec4(0, 0, 0, 1);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
glUseProgram(program.get()); glUseProgram(program.get());
...@@ -3972,21 +3972,21 @@ TEST_P(WebGL2CompatibilityTest, FragmentShaderColorBufferTypeMissmatch) ...@@ -3972,21 +3972,21 @@ TEST_P(WebGL2CompatibilityTest, FragmentShaderColorBufferTypeMissmatch)
TEST_P(WebGL2CompatibilityTest, VertexShaderAttributeTypeMismatch) TEST_P(WebGL2CompatibilityTest, VertexShaderAttributeTypeMismatch)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"#version 300 es\n" R"(#version 300 es
"in vec4 floatInput;\n" in vec4 floatInput;
"in uvec4 uintInput;\n" in uvec4 uintInput;
"in ivec4 intInput;\n" in ivec4 intInput;
"void main() {\n" void main() {
" gl_Position = vec4(floatInput.x, uintInput.x, intInput.x, 1);\n" gl_Position = vec4(floatInput.x, uintInput.x, intInput.x, 1);
"}\n"; })";
constexpr char kFS[] = constexpr char kFS[] =
"#version 300 es\n" R"(#version 300 es
"precision mediump float;\n" precision mediump float;
"out vec4 outputColor;\n" out vec4 outputColor;
"void main() {\n" void main() {
" outputColor = vec4(0, 0, 0, 1);" outputColor = vec4(0, 0, 0, 1);
"}\n"; })";
ANGLE_GL_PROGRAM(program, kVS, kFS); ANGLE_GL_PROGRAM(program, kVS, kFS);
glUseProgram(program.get()); glUseProgram(program.get());
...@@ -4148,11 +4148,11 @@ TEST_P(WebGLCompatibilityTest, DrawBuffers) ...@@ -4148,11 +4148,11 @@ TEST_P(WebGLCompatibilityTest, DrawBuffers)
// Test that when using gl_FragColor, only the first attachment is written to. // Test that when using gl_FragColor, only the first attachment is written to.
const char *fragESSL1 = const char *fragESSL1 =
"precision highp float;\n" R"(precision highp float;
"void main()\n" void main()
"{\n" {
" gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n" gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
"}\n"; })";
ANGLE_GL_PROGRAM(programESSL1, essl1_shaders::vs::Simple(), fragESSL1); ANGLE_GL_PROGRAM(programESSL1, essl1_shaders::vs::Simple(), fragESSL1);
{ {
...@@ -4196,13 +4196,13 @@ TEST_P(WebGLCompatibilityTest, DrawBuffers) ...@@ -4196,13 +4196,13 @@ TEST_P(WebGLCompatibilityTest, DrawBuffers)
positionAttrib = essl1_shaders::PositionAttrib(); positionAttrib = essl1_shaders::PositionAttrib();
writeOddOutputsVert = essl1_shaders::vs::Simple(); writeOddOutputsVert = essl1_shaders::vs::Simple();
writeOddOutputsFrag = writeOddOutputsFrag =
"#extension GL_EXT_draw_buffers : require\n" R"(#extension GL_EXT_draw_buffers : require
"precision highp float;\n" precision highp float;
"void main()\n" void main()
"{\n" {
" gl_FragData[1] = vec4(0.0, 1.0, 0.0, 1.0);\n" gl_FragData[1] = vec4(0.0, 1.0, 0.0, 1.0);
" gl_FragData[3] = vec4(0.0, 1.0, 0.0, 1.0);\n" gl_FragData[3] = vec4(0.0, 1.0, 0.0, 1.0);
"}\n"; })";
} }
else else
{ {
...@@ -4212,15 +4212,15 @@ TEST_P(WebGLCompatibilityTest, DrawBuffers) ...@@ -4212,15 +4212,15 @@ TEST_P(WebGLCompatibilityTest, DrawBuffers)
positionAttrib = essl3_shaders::PositionAttrib(); positionAttrib = essl3_shaders::PositionAttrib();
writeOddOutputsVert = essl3_shaders::vs::Simple(); writeOddOutputsVert = essl3_shaders::vs::Simple();
writeOddOutputsFrag = writeOddOutputsFrag =
"#version 300 es\n" R"(#version 300 es
"precision highp float;\n" precision highp float;
"layout(location = 1) out vec4 output1;" layout(location = 1) out vec4 output1;
"layout(location = 3) out vec4 output2;" layout(location = 3) out vec4 output2;
"void main()\n" void main()
"{\n" {
" output1 = vec4(0.0, 1.0, 0.0, 1.0);\n" output1 = vec4(0.0, 1.0, 0.0, 1.0);
" output2 = vec4(0.0, 1.0, 0.0, 1.0);\n" output2 = vec4(0.0, 1.0, 0.0, 1.0);
"}\n"; })";
} }
ANGLE_GL_PROGRAM(writeOddOutputsProgram, writeOddOutputsVert, writeOddOutputsFrag); ANGLE_GL_PROGRAM(writeOddOutputsProgram, writeOddOutputsVert, writeOddOutputsFrag);
...@@ -4500,14 +4500,14 @@ TEST_P(WebGLCompatibilityTest, EnableCompressedTextureExtensionLossyDecode) ...@@ -4500,14 +4500,14 @@ TEST_P(WebGLCompatibilityTest, EnableCompressedTextureExtensionLossyDecode)
TEST_P(WebGL2CompatibilityTest, UniformBlockPrecisionMismatch) TEST_P(WebGL2CompatibilityTest, UniformBlockPrecisionMismatch)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"#version 300 es\n" R"(#version 300 es
"uniform Block { mediump vec4 val; };\n" uniform Block { mediump vec4 val; };
"void main() { gl_Position = val; }\n"; void main() { gl_Position = val; })";
constexpr char kFS[] = constexpr char kFS[] =
"#version 300 es\n" R"(#version 300 es
"uniform Block { highp vec4 val; };\n" uniform Block { highp vec4 val; };
"out highp vec4 out_FragColor;\n" out highp vec4 out_FragColor;
"void main() { out_FragColor = val; }\n"; void main() { out_FragColor = val; })";
GLuint vs = CompileShader(GL_VERTEX_SHADER, kVS); GLuint vs = CompileShader(GL_VERTEX_SHADER, kVS);
ASSERT_NE(0u, vs); ASSERT_NE(0u, vs);
...@@ -4533,13 +4533,13 @@ TEST_P(WebGL2CompatibilityTest, UniformBlockPrecisionMismatch) ...@@ -4533,13 +4533,13 @@ TEST_P(WebGL2CompatibilityTest, UniformBlockPrecisionMismatch)
TEST_P(WebGL2CompatibilityTest, NoAttributeVertexShader) TEST_P(WebGL2CompatibilityTest, NoAttributeVertexShader)
{ {
constexpr char kVS[] = constexpr char kVS[] =
"#version 300 es\n" R"(#version 300 es
"void main()\n" void main()
"{\n" {
"\n"
" ivec2 xy = ivec2(gl_VertexID % 2, (gl_VertexID / 2 + gl_VertexID / 3) % 2);\n" ivec2 xy = ivec2(gl_VertexID % 2, (gl_VertexID / 2 + gl_VertexID / 3) % 2);
" gl_Position = vec4(vec2(xy) * 2. - 1., 0, 1);\n" gl_Position = vec4(vec2(xy) * 2. - 1., 0, 1);
"}"; })";
ANGLE_GL_PROGRAM(program, kVS, essl3_shaders::fs::Red()); ANGLE_GL_PROGRAM(program, kVS, essl3_shaders::fs::Red());
glUseProgram(program); glUseProgram(program);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment