From WebUI, 11 Hours ago, written in Plain Text.
This paste will shuffle off the mortal coil in 12 Hours.
Embed
  1. /*
  2.  * Trigger multiple sampler views for the same texture resource.
  3.  
  4.  */
  5.  
  6. #include "piglit-util-gl.h"
  7.  
  8. PIGLIT_GL_TEST_CONFIG_BEGIN
  9. config.supports_gl_core_version = 33;
  10. config.window_width = 64;
  11. config.window_height = 64;
  12. PIGLIT_GL_TEST_CONFIG_END
  13.  
  14. static GLuint tex, prog;
  15. GLuint sampler_decode;
  16. GLuint sampler_skip;
  17.  
  18. static const char *vs =
  19. "#version 330\n"
  20. "in vec4 piglit_vertex;"
  21. "void main(){ gl_Position = piglit_vertex; }";
  22.  
  23. static const char *fs =
  24. "#version 330\n"
  25. "uniform sampler2D t0;\n"
  26. "uniform sampler2D t1;\n"
  27. "out vec4 c;\n"
  28. "void main(){\n"
  29. "    vec4 a = texture(t0, vec2(0.5));\n"
  30. "    vec4 b = texture(t1, vec2(0.5));\n"
  31. "    c = mix(a, b, 0.5);\n"
  32. "}";
  33.  
  34. void piglit_init(int argc, char **argv)
  35. {
  36.     prog = piglit_build_simple_program(vs, fs);
  37.     glUseProgram(prog);
  38.  
  39.     glUniform1i(glGetUniformLocation(prog, "t0"), 0);
  40.     glUniform1i(glGetUniformLocation(prog, "t1"), 1);
  41.  
  42.     glGenSamplers(1, &sampler_decode);
  43.     glSamplerParameteri(sampler_decode,
  44.                         GL_TEXTURE_SRGB_DECODE_EXT,
  45.                         GL_DECODE_EXT);
  46.  
  47.     glGenSamplers(1, &sampler_skip);
  48.     glSamplerParameteri(sampler_skip,
  49.                         GL_TEXTURE_SRGB_DECODE_EXT,
  50.                         GL_SKIP_DECODE_EXT);
  51.  
  52.     /* create texture A */
  53.     glGenTextures(1, &tex);
  54.  
  55.     glActiveTexture(GL_TEXTURE0);
  56.     glBindTexture(GL_TEXTURE_2D, tex);
  57.     glBindSampler(0, sampler_decode);
  58.  
  59.     glActiveTexture(GL_TEXTURE1);
  60.     glBindTexture(GL_TEXTURE_2D, tex);
  61.     glBindSampler(1, sampler_skip);
  62.  
  63.     uint32_t px = 0xff00ffff;
  64.  
  65.     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8,
  66.                  1, 1, 0,
  67.                  GL_RGBA, GL_UNSIGNED_BYTE,
  68.                  &px);
  69.  
  70.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  71.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  72.  
  73.     glBindTexture(GL_TEXTURE_2D, tex);
  74. }
  75.  
  76. enum piglit_result piglit_display(void)
  77. {
  78.     glClear(GL_COLOR_BUFFER_BIT);
  79.  
  80.     /* draw */
  81.     piglit_draw_rect(-1, -1, 2, 1);
  82.  
  83.     piglit_present_results();
  84.     return PIGLIT_PASS;
  85. }