summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2014-06-26 01:38:58 +0200
committerMarek Olšák <marek.olsak@amd.com>2014-07-14 15:16:37 +0200
commit3f30b3281551d5e61a11be546fc6390b8da692a2 (patch)
tree9da9b58f9b7c4cfcfe538408f76e3941c3ff5d75 /tests
parent17056c652da7e25528aef802b716ce2497c925b8 (diff)
tex-miplevel-selection: test all texture functions from GLSL 1.2
Diffstat (limited to 'tests')
-rw-r--r--tests/all.py30
-rw-r--r--tests/texturing/tex-miplevel-selection.c94
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 &&