diff options
author | Marek Olšák <marek.olsak@amd.com> | 2014-06-26 01:38:58 +0200 |
---|---|---|
committer | Marek Olšák <marek.olsak@amd.com> | 2014-07-14 15:16:37 +0200 |
commit | 3f30b3281551d5e61a11be546fc6390b8da692a2 (patch) | |
tree | 9da9b58f9b7c4cfcfe538408f76e3941c3ff5d75 /tests | |
parent | 17056c652da7e25528aef802b716ce2497c925b8 (diff) |
tex-miplevel-selection: test all texture functions from GLSL 1.2
Diffstat (limited to 'tests')
-rw-r--r-- | tests/all.py | 30 | ||||
-rw-r--r-- | tests/texturing/tex-miplevel-selection.c | 94 |
2 files changed, 119 insertions, 5 deletions
diff --git a/tests/all.py b/tests/all.py index 01e2af181..807af4587 100644 --- a/tests/all.py +++ b/tests/all.py @@ -1059,6 +1059,36 @@ spec['glsl-1.20']['built-in constants'] = concurrent_test('built-in-constants ' spec['glsl-1.20']['api'] = {} add_concurrent_test(spec['glsl-1.20']['api'], 'getactiveattrib 120'); +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture() 1D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture() 2D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture() 3D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture() Cube') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture() 1DShadow') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture() 2DShadow') + +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture(bias) 1D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture(bias) 2D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture(bias) 3D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture(bias) Cube') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture(bias) 1DShadow') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:texture(bias) 2DShadow') + +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj 1D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj 1D_ProjVec4') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj 2D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj 2D_ProjVec4') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj 3D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj 1DShadow') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj 2DShadow') + +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj(bias) 1D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj(bias) 1D_ProjVec4') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj(bias) 2D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj(bias) 2D_ProjVec4') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj(bias) 3D') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj(bias) 1DShadow') +add_concurrent_test(spec['glsl-1.20']['execution'], 'tex-miplevel-selection GL2:textureProj(bias) 2DShadow') + # Group spec/glsl-1.30 spec['glsl-1.30'] = {} diff --git a/tests/texturing/tex-miplevel-selection.c b/tests/texturing/tex-miplevel-selection.c index 249455618..18dfeeaf5 100644 --- a/tests/texturing/tex-miplevel-selection.c +++ b/tests/texturing/tex-miplevel-selection.c @@ -122,6 +122,10 @@ enum target_type { enum shader_type { FIXED_FUNCTION, + GL2_TEXTURE, + GL2_TEXTURE_BIAS, + GL2_TEXTURE_PROJ, + GL2_TEXTURE_PROJ_BIAS, ARB_TEXTURE_LOD, ARB_TEXTURE_PROJ_LOD, ARB_TEXTURE_GRAD, @@ -216,6 +220,14 @@ piglit_init(int argc, char **argv) no_bias = GL_TRUE; else if (strcmp(argv[i], "-nolod") == 0) no_lod_clamp = GL_TRUE; + else if (strcmp(argv[i], "GL2:texture()") == 0) + test = GL2_TEXTURE; + else if (strcmp(argv[i], "GL2:texture(bias)") == 0) + test = GL2_TEXTURE_BIAS; + else if (strcmp(argv[i], "GL2:textureProj") == 0) + test = GL2_TEXTURE_PROJ; + else if (strcmp(argv[i], "GL2:textureProj(bias)") == 0) + test = GL2_TEXTURE_PROJ_BIAS; else if (strcmp(argv[i], "*Lod") == 0) test = ARB_TEXTURE_LOD; else if (strcmp(argv[i], "*ProjLod") == 0) @@ -301,8 +313,11 @@ piglit_init(int argc, char **argv) piglit_require_extension("GL_ARB_framebuffer_object"); piglit_require_extension("GL_ARB_sampler_objects"); piglit_require_extension("GL_ARB_texture_storage"); - if (NEED_ARB_LOD(test)) { + if (test != FIXED_FUNCTION) { + piglit_require_gl_version(20); piglit_require_GLSL_version(120); + } + if (NEED_ARB_LOD(test)) { piglit_require_extension("GL_ARB_shader_texture_lod"); } piglit_require_gl_version(NEED_GL3(test) ? 30 : 14); @@ -456,7 +471,9 @@ piglit_init(int argc, char **argv) break; } - if (test == ARB_TEXTURE_PROJ_LOD || + if (test == GL2_TEXTURE_PROJ || + test == GL2_TEXTURE_PROJ_BIAS || + test == ARB_TEXTURE_PROJ_LOD || test == ARB_TEXTURE_PROJ_GRAD || test == GL3_TEXTURE_PROJ || test == GL3_TEXTURE_PROJ_BIAS || @@ -480,6 +497,61 @@ piglit_init(int argc, char **argv) switch (test) { case FIXED_FUNCTION: break; + case GL2_TEXTURE_BIAS: + other_params = ", bias"; + /* fall through */ + case GL2_TEXTURE: + version = "120"; + switch (target) { + case TEX_1D: + instruction = "texture1D"; + break; + case TEX_2D: + instruction = "texture2D"; + break; + case TEX_3D: + instruction = "texture3D"; + break; + case TEX_CUBE: + instruction = "textureCube"; + break; + case TEX_1D_SHADOW: + instruction = "shadow1D"; + break; + case TEX_2D_SHADOW: + instruction = "shadow2D"; + break; + default: + assert(0); + } + break; + case GL2_TEXTURE_PROJ_BIAS: + other_params = ", bias"; + /* fall through */ + case GL2_TEXTURE_PROJ: + version = "120"; + switch (target) { + case TEX_1D: + case TEX_1D_PROJ_VEC4: + instruction = "texture1DProj"; + break; + case TEX_2D: + case TEX_2D_PROJ_VEC4: + instruction = "texture2DProj"; + break; + case TEX_3D: + instruction = "texture3DProj"; + break; + case TEX_1D_SHADOW: + instruction = "shadow1DProj"; + break; + case TEX_2D_SHADOW: + instruction = "shadow2DProj"; + break; + default: + assert(0); + } + break; case ARB_TEXTURE_LOD: version = "120"; switch (target) { @@ -704,7 +776,9 @@ piglit_init(int argc, char **argv) test == GL3_TEXTURE_PROJ_LOD_OFFSET) loc_lod = glGetUniformLocation(prog, "lod"); - if (test == GL3_TEXTURE_BIAS || + if (test == GL2_TEXTURE_BIAS || + test == GL2_TEXTURE_PROJ_BIAS || + test == GL3_TEXTURE_BIAS || test == GL3_TEXTURE_OFFSET_BIAS || test == GL3_TEXTURE_PROJ_BIAS || test == GL3_TEXTURE_PROJ_OFFSET_BIAS) @@ -961,11 +1035,15 @@ draw_quad(int x, int y, int w, int h, int expected_level, int fetch_level, glUniform1f(loc_lod, fetch_level - baselevel); break; + case GL2_TEXTURE_BIAS: + case GL2_TEXTURE_PROJ_BIAS: case GL3_TEXTURE_BIAS: case GL3_TEXTURE_PROJ_BIAS: /* set a bias */ glUniform1f(loc_bias, bias); /* fall through to scale the coordinates */ + case GL2_TEXTURE: + case GL2_TEXTURE_PROJ: case GL3_TEXTURE: case GL3_TEXTURE_PROJ: case FIXED_FUNCTION: @@ -1050,7 +1128,9 @@ draw_quad(int x, int y, int w, int h, int expected_level, int fetch_level, assert(0); } - if (test == ARB_TEXTURE_PROJ_LOD || + if (test == GL2_TEXTURE_PROJ || + test == GL2_TEXTURE_PROJ_BIAS || + test == ARB_TEXTURE_PROJ_LOD || test == ARB_TEXTURE_PROJ_GRAD || test == GL3_TEXTURE_PROJ || test == GL3_TEXTURE_PROJ_BIAS || @@ -1295,7 +1375,9 @@ piglit_display(void) * level of a cubemap on a 3x3 quad. */ if ((gltarget == GL_TEXTURE_CUBE_MAP || gltarget == GL_TEXTURE_CUBE_MAP_ARRAY) && - (test == GL3_TEXTURE || + (test == GL2_TEXTURE || + test == GL2_TEXTURE_BIAS || + test == GL3_TEXTURE || test == GL3_TEXTURE_BIAS)) { end_fetch_level = last_level - 1; } @@ -1332,6 +1414,8 @@ piglit_display(void) set_sampler_parameter(GL_TEXTURE_MAX_LOD, maxlod); } if (!no_bias && + test != GL2_TEXTURE_BIAS && + test != GL2_TEXTURE_PROJ_BIAS && test != GL3_TEXTURE_BIAS && test != GL3_TEXTURE_PROJ_BIAS && test != GL3_TEXTURE_OFFSET_BIAS && |