- /*
- * Trigger multiple sampler views for the same texture resource.
- */
- #include "piglit-util-gl.h"
- PIGLIT_GL_TEST_CONFIG_BEGIN
- config.supports_gl_core_version = 33;
- config.window_width = 64;
- config.window_height = 64;
- PIGLIT_GL_TEST_CONFIG_END
- static GLuint tex, prog;
- GLuint sampler_decode;
- GLuint sampler_skip;
- static const char *vs =
- "#version 330\n"
- "in vec4 piglit_vertex;"
- "void main(){ gl_Position = piglit_vertex; }";
- static const char *fs =
- "#version 330\n"
- "uniform sampler2D t0;\n"
- "uniform sampler2D t1;\n"
- "out vec4 c;\n"
- "void main(){\n"
- " vec4 a = texture(t0, vec2(0.5));\n"
- " vec4 b = texture(t1, vec2(0.5));\n"
- " c = mix(a, b, 0.5);\n"
- "}";
- void piglit_init(int argc, char **argv)
- {
- prog = piglit_build_simple_program(vs, fs);
- glUseProgram(prog);
- glUniform1i(glGetUniformLocation(prog, "t0"), 0);
- glUniform1i(glGetUniformLocation(prog, "t1"), 1);
- glGenSamplers(1, &sampler_decode);
- glSamplerParameteri(sampler_decode,
- GL_TEXTURE_SRGB_DECODE_EXT,
- GL_DECODE_EXT);
- glGenSamplers(1, &sampler_skip);
- glSamplerParameteri(sampler_skip,
- GL_TEXTURE_SRGB_DECODE_EXT,
- GL_SKIP_DECODE_EXT);
- /* create texture A */
- glGenTextures(1, &tex);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, tex);
- glBindSampler(0, sampler_decode);
- glActiveTexture(GL_TEXTURE1);
- glBindTexture(GL_TEXTURE_2D, tex);
- glBindSampler(1, sampler_skip);
- uint32_t px = 0xff00ffff;
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8,
- 1, 1, 0,
- GL_RGBA, GL_UNSIGNED_BYTE,
- &px);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glBindTexture(GL_TEXTURE_2D, tex);
- }
- enum piglit_result piglit_display(void)
- {
- glClear(GL_COLOR_BUFFER_BIT);
- /* draw */
- piglit_draw_rect(-1, -1, 2, 1);
- piglit_present_results();
- return PIGLIT_PASS;
- }
