ext_gpu_shader4: add compiler tests for everything
[piglit.git] / tests / spec / arb_blend_func_extended / api / builtins.c
blobf4eac95dbc6eed68cb6b5ad22ad1ff0fa982f6d8
1 /*
2 * Copyright (c) 2015 Ryan Houdek <Sonicadvance1@gmail.com>
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 * IN THE SOFTWARE.
24 #include "piglit-util-gl.h"
26 PIGLIT_GL_TEST_CONFIG_BEGIN
28 config.supports_gl_es_version = 20;
29 config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
30 config.khr_no_error_support = PIGLIT_NO_ERRORS;
32 PIGLIT_GL_TEST_CONFIG_END
34 bool compile_simple_program(const char* vs_text, const char* fs_text)
36 GLuint vs;
37 GLuint fs;
38 GLuint prog;
39 bool status;
41 prog = glCreateProgram();
43 vs = piglit_compile_shader_text_nothrow(GL_VERTEX_SHADER, vs_text);
44 fs = piglit_compile_shader_text_nothrow(GL_FRAGMENT_SHADER, fs_text);
46 if (!vs || !fs)
47 return false;
49 glAttachShader(prog, vs);
50 glAttachShader(prog, fs);
51 glLinkProgram(prog);
53 status = piglit_link_check_status(prog);
54 glDeleteProgram(prog);
55 return status;
58 enum piglit_result
59 piglit_display(void)
61 return PIGLIT_FAIL;
64 void piglit_init(int argc, char **argv)
66 bool pass = true;
67 char fs_text[256];
69 piglit_require_extension("GL_EXT_blend_func_extended");
71 static const char *vs_text =
72 "#version 100\n"
73 "void main() {\n"
74 " gl_Position = vec4(0);\n"
75 "}\n"
78 static const char *fs_template =
79 "#version 100\n"
80 "#extension GL_EXT_blend_func_extended : enable\n"
81 "void main() {\n"
82 " %s = vec4(0);\n"
83 " %s = vec4(0);\n"
84 "}\n"
87 // Tests that should pass
88 // Regular FragColor
89 snprintf(fs_text, 256, fs_template,
90 "gl_FragColor",
91 "gl_SecondaryFragColorEXT");
92 pass = compile_simple_program(vs_text, fs_text) && pass;
94 // Regular FragData
95 snprintf(fs_text, 256, fs_template,
96 "gl_FragData[0]",
97 "gl_SecondaryFragDataEXT[0]");
98 pass = compile_simple_program(vs_text, fs_text) && pass;
100 // Tests that should fail
101 // FragColor & SecondaryFragData
102 snprintf(fs_text, 256, fs_template,
103 "gl_FragColor",
104 "gl_SecondaryFragDataEXT[0]");
105 pass = !compile_simple_program(vs_text, fs_text) && pass;
107 // FragData & SecondaryFragColor
108 snprintf(fs_text, 256, fs_template,
109 "gl_FragData[0]",
110 "gl_SecondaryFragColorEXT");
111 pass = !compile_simple_program(vs_text, fs_text) && pass;
113 piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL);