[Piglit] [PATCH] tex-miplevel-selection: test textureGrad with cubemaps
Ilia Mirkin
imirkin at alum.mit.edu
Thu Aug 14 16:36:45 PDT 2014
On Thu, Aug 14, 2014 at 7:24 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> llvmpipe passes, which is probably the only driver which implements it
> correctly.
FTR, also passes on my NVC1 with nouveau. I suspect nv50 should be
fine too. (Unfortunately I don't understand enough about how this is
supposed to work to review your change.)
> ---
> tests/all.py | 8 ++++----
> tests/texturing/tex-miplevel-selection.c | 20 +++++++++++++++++++-
> 2 files changed, 23 insertions(+), 5 deletions(-)
>
> diff --git a/tests/all.py b/tests/all.py
> index 0f69a66..10e24d9 100644
> --- a/tests/all.py
> +++ b/tests/all.py
> @@ -1294,17 +1294,17 @@ add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection text
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 1D')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 2D')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 3D')
> -#add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad Cube')
> +add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad Cube')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 2DRect')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 2DRectShadow')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 1DShadow')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 2DShadow')
> -#add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad CubeShadow')
> +add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad CubeShadow')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 1DArray')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 2DArray')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 1DArrayShadow')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad 2DArrayShadow')
> -#add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad CubeArray')
> +add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGrad CubeArray')
>
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGradOffset 1D')
> add_concurrent_test(spec['glsl-1.30']['execution'], 'tex-miplevel-selection textureGradOffset 2D')
> @@ -2056,7 +2056,7 @@ add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection
> add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection *GradARB 1D')
> add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection *GradARB 2D')
> add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection *GradARB 3D')
> -#add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection *GradARB Cube')
> +add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection *GradARB Cube')
> add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection *GradARB 1DShadow')
> add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection *GradARB 2DShadow')
> add_concurrent_test(arb_shader_texture_lod['execution'], 'tex-miplevel-selection *GradARB 2DRect')
> diff --git a/tests/texturing/tex-miplevel-selection.c b/tests/texturing/tex-miplevel-selection.c
> index ef9a066..761f9ae 100644
> --- a/tests/texturing/tex-miplevel-selection.c
> +++ b/tests/texturing/tex-miplevel-selection.c
> @@ -1043,6 +1043,19 @@ draw_quad(int x, int y, int w, int h, int expected_level, int fetch_level,
> /* explicit derivative */
> float deriv = 1.0 / (TEX_SIZE >> fetch_level);
>
> + /* Explicit derivatives for cubemaps.
> + *
> + * Each of these vectors should be a difference between (x,y,z)
> + * coordinates from one pixel and its neighbor. The Y coordinate is
> + * always -1 (negative Y face).
> + *
> + * The range for X and Z is [-1,1] for cubemaps as opposed
> + * to [0,1] for 2D textures, therefore multiply the 2D derivative
> + * by 2. The result is 2 vectors on the -Y surface of the cube.
> + */
> + float cube_deriv_x[3] = {deriv*2, 0, 0};
> + float cube_deriv_y[3] = { 0, 0, deriv*2};
> +
> switch (test) {
> case ARB_TEXTURE_LOD:
> case ARB_TEXTURE_PROJ_LOD:
> @@ -1079,7 +1092,12 @@ draw_quad(int x, int y, int w, int h, int expected_level, int fetch_level,
> case ARB_TEXTURE_PROJ_GRAD:
> case GL3_TEXTURE_GRAD:
> case GL3_TEXTURE_PROJ_GRAD:
> - if (gltarget == GL_TEXTURE_3D) {
> + if (gltarget == GL_TEXTURE_CUBE_MAP ||
> + gltarget == GL_TEXTURE_CUBE_MAP_ARRAY) {
> + glUniform3fv(loc_dx, 1, cube_deriv_x);
> + glUniform3fv(loc_dy, 1, cube_deriv_y);
> + }
> + else if (gltarget == GL_TEXTURE_3D) {
> glUniform3f(loc_dx, 0, 0, deriv);
> glUniform3f(loc_dy, 0, 0, deriv);
> }
> --
> 1.9.1
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
More information about the Piglit
mailing list