Thanks for the review, I've added the tests to all.py. And good thing I
did, because from the ~40 tests the 3 with bufferSamplers didn't
actually work on my newest r600 patch version in a test run :-).

Roland

Am 03.01.2018 um 23:08 schrieb Fabian Bieler:
> I think the new tes-texture-size test should be added to all.py (in
> multiple places).
> 
> Other than that, series is
> Reviewed-by: Fabian Bieler <fabianbie...@fastmail.fm>
> 
> On 2018-01-01 06:41, srol...@vmware.com wrote:
>> From: Roland Scheidegger <srol...@vmware.com>
>>
>> This is a problem of all texturing tests, they cannot exercise the 
>> tesselation
>> stages. (But I'm too lazy to fix the others, and too lazy to hack something 
>> up
>> for tcs stage, I only need it to verify a bug/fix with r600 buffer textures.)
>> ---
>>  tests/texturing/shaders/common.c      |  3 ++
>>  tests/texturing/shaders/common.h      |  3 +-
>>  tests/texturing/shaders/textureSize.c | 76 
>> ++++++++++++++++++++++++++++++++---
>>  3 files changed, 75 insertions(+), 7 deletions(-)
>>
>> diff --git a/tests/texturing/shaders/common.c 
>> b/tests/texturing/shaders/common.c
>> index b377bbcae..bda149971 100644
>> --- a/tests/texturing/shaders/common.c
>> +++ b/tests/texturing/shaders/common.c
>> @@ -378,6 +378,9 @@ require_GL_features(enum shader_target test_stage)
>>      glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &tex_units);
>>      if (test_stage == VS && tex_units <= 0)
>>              piglit_report_result(PIGLIT_SKIP);
>> +
>> +    if (test_stage == TES)
>> +            piglit_require_extension("GL_ARB_tessellation_shader");
>>  }
>>  
>>  /**
>> diff --git a/tests/texturing/shaders/common.h 
>> b/tests/texturing/shaders/common.h
>> index 49f38e8b5..3edc68bff 100644
>> --- a/tests/texturing/shaders/common.h
>> +++ b/tests/texturing/shaders/common.h
>> @@ -91,7 +91,8 @@ enum shader_target {
>>      UNKNOWN,
>>      VS,
>>      FS,
>> -    GS
>> +    GS,
>> +    TES,
>>  };
>>  
>>  float max2(float x, float y);
>> diff --git a/tests/texturing/shaders/textureSize.c 
>> b/tests/texturing/shaders/textureSize.c
>> index 2693633fb..3035e0505 100644
>> --- a/tests/texturing/shaders/textureSize.c
>> +++ b/tests/texturing/shaders/textureSize.c
>> @@ -60,7 +60,7 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
>>      piglit_gl_process_args(&argc, argv, &config);
>>  
>>      parse_args(argc, argv);
>> -    if (test_stage == GS) {
>> +    if (test_stage == GS || test_stage == TES) {
>>              config.supports_gl_compat_version = 32;
>>              config.supports_gl_core_version = 32;
>>      } else {
>> @@ -154,7 +154,7 @@ piglit_display()
>>  
>>              glUniform1i(lod_location, l);
>>              glViewport(x, 10, 10, 10);
>> -            glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
>> +            glDrawArrays(test_stage == TES ? GL_PATCHES : GL_TRIANGLE_FAN, 
>> 0, 4);
>>  
>>              pass &= piglit_probe_rect_rgba(x, 10, 10, 10, expected_color);
>>      }
>> @@ -248,12 +248,14 @@ has_lod(void)
>>  int
>>  generate_GLSL(enum shader_target test_stage)
>>  {
>> -    int vs, gs = 0, fs;
>> +    int vs, gs = 0, tes = 0, tcs = 0, fs;
>>      int prog;
>>  
>>      static char *vs_code;
>>      static char *gs_code = NULL;
>>      static char *fs_code;
>> +    static char *tes_code = NULL;
>> +    static char *tcs_code = NULL;
>>      char *lod_arg;
>>      static const char *zeroes[3] = { "", "0, ", "0, 0, " };
>>  
>> @@ -357,6 +359,55 @@ generate_GLSL(enum shader_target test_stage)
>>                       shader_version, extension, sampler.name, size, lod_arg,
>>                       zeroes[3 - size]);
>>              break;
>> +    case TES:
>> +            (void)!asprintf(&vs_code,
>> +                     "#version %d\n"
>> +                     "in vec4 vertex;\n"
>> +                     "void main()\n"
>> +                     "{\n"
>> +                     "    gl_Position = vertex;\n"
>> +                     "}\n",
>> +                     shader_version);
>> +            (void)!asprintf(&tes_code,
>> +                     "#version %d\n%s"
>> +                     "#extension GL_ARB_tessellation_shader: require\n"
>> +                     "#define ivec1 int\n"
>> +                     "uniform int lod;\n"
>> +                     "uniform %s tex;\n"
>> +                     "layout(quads) in;\n"
>> +                     "flat out ivec%d size;\n"
>> +                     "void main()\n"
>> +                     "{\n"
>> +                     "    gl_Position = vec4(gl_TessCoord.x * 2 - 1, 
>> gl_TessCoord.y * 2 - 1, 0, 1);\n"
>> +                     "    size = textureSize(tex%s);\n"
>> +                     "}\n",
>> +                     shader_version, extension, sampler.name, size, 
>> lod_arg);
>> +            (void)!asprintf(&tcs_code,
>> +                     "#version %d\n"
>> +                     "#extension GL_ARB_tessellation_shader: require\n"
>> +                     "layout(vertices = 4) out;\n"
>> +                     "void main()\n"
>> +                     "{\n"
>> +                     "    gl_TessLevelInner[0] = 1.0;\n"
>> +                     "    gl_TessLevelInner[1] = 1.0;\n"
>> +                     "    gl_TessLevelOuter[0] = 1.0;\n"
>> +                     "    gl_TessLevelOuter[1] = 1.0;\n"
>> +                     "    gl_TessLevelOuter[2] = 1.0;\n"
>> +                     "    gl_TessLevelOuter[3] = 1.0;\n"
>> +                     "}\n",
>> +                     shader_version);
>> +            (void)!asprintf(&fs_code,
>> +                     "#version %d\n"
>> +                     "#define ivec1 int\n"
>> +                     "#define vec1 float\n"
>> +                     "flat in ivec%d size;\n"
>> +                     "out vec4 fragColor;\n"
>> +                     "void main()\n"
>> +                     "{\n"
>> +                     "    fragColor = vec4(0.01 * size,%s 1);\n"
>> +                     "}\n",
>> +                     shader_version, size, zeroes[3 - size]);
>> +            break;
>>      default:
>>              assert(!"Should not get here.");
>>              break;
>> @@ -366,9 +417,15 @@ generate_GLSL(enum shader_target test_stage)
>>      if (gs_code) {
>>              gs = piglit_compile_shader_text(GL_GEOMETRY_SHADER, gs_code);
>>      }
>> +    if (tes_code) {
>> +            tes = piglit_compile_shader_text(GL_TESS_EVALUATION_SHADER, 
>> tes_code);
>> +    }
>> +    if (tcs_code) {
>> +            tcs = piglit_compile_shader_text(GL_TESS_CONTROL_SHADER, 
>> tcs_code);
>> +    }
>>      fs = piglit_compile_shader_text(GL_FRAGMENT_SHADER, fs_code);
>>  
>> -    if (!vs || (gs_code && !gs) || !fs)
>> +    if (!vs || (gs_code && !gs) || (tes_code && !tes) || !fs)
>>              return 0;
>>  
>>      prog = glCreateProgram();
>> @@ -376,6 +433,10 @@ generate_GLSL(enum shader_target test_stage)
>>      if (gs_code)
>>              glAttachShader(prog, gs);
>>      glAttachShader(prog, fs);
>> +    if (tes_code)
>> +            glAttachShader(prog, tes);
>> +    if (tcs_code)
>> +            glAttachShader(prog, tcs);
>>      glLinkProgram(prog);
>>      if (!piglit_link_check_status(prog))
>>              piglit_report_result(PIGLIT_FAIL);
>> @@ -386,7 +447,7 @@ generate_GLSL(enum shader_target test_stage)
>>  void
>>  fail_and_show_usage()
>>  {
>> -    printf("Usage: textureSize [140] <vs|gs|fs> <sampler type> [piglit 
>> args...]\n");
>> +    printf("Usage: textureSize [140] <vs|gs|fs|tes> <sampler type> [piglit 
>> args...]\n");
>>      piglit_report_result(PIGLIT_SKIP);
>>  }
>>  
>> @@ -409,6 +470,9 @@ parse_args(int argc, char **argv)
>>                      } else if (strcmp(argv[i], "fs") == 0) {
>>                              test_stage = FS;
>>                              continue;
>> +                    } else if (strcmp(argv[i], "tes") == 0) {
>> +                            test_stage = TES;
>> +                            continue;
>>                      }
>>              }
>>  
>> @@ -427,7 +491,7 @@ parse_args(int argc, char **argv)
>>      if (test_stage == UNKNOWN || !sampler_found)
>>              fail_and_show_usage();
>>  
>> -    if (test_stage == GS && shader_version < 150)
>> +    if ((test_stage == GS || test_stage == TES) && shader_version < 150)
>>              shader_version = 150;
>>  }
>>  
>>

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to