tests/shader_runner: Introduce a 'depth-bounds' test option.

This commit is contained in:
Anna (navi) Figueiredo Gomes
2024-08-31 18:54:44 +02:00
committed by Henri Verbeet
parent 12a7cde092
commit 3eb2a3d0e4
Notes: Henri Verbeet 2024-09-11 15:31:24 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1031
6 changed files with 64 additions and 11 deletions

View File

@@ -32,6 +32,7 @@
#include "shader_runner.h"
#include "vkd3d_d3dcompiler.h"
static PFNGLDEPTHBOUNDSEXTPROC p_glDepthBoundsEXT;
static PFNGLSPECIALIZESHADERPROC p_glSpecializeShader;
enum shading_language
@@ -133,6 +134,8 @@ static bool check_gl_extensions(struct gl_runner *runner)
runner->caps.float64 = true;
if (check_gl_extension("GL_ARB_gpu_shader_int64", count))
runner->caps.int64 = true;
if (check_gl_extension("GL_EXT_depth_bounds_test", count))
runner->caps.depth_bounds = true;
return true;
}
@@ -350,6 +353,7 @@ static bool gl_runner_init(struct gl_runner *runner, enum shading_language langu
trace(" GL_VERSION: %s\n", glGetString(GL_VERSION));
trace("GL_SHADING_LANGUAGE_VERSION: %s\n", glsl_version);
p_glDepthBoundsEXT = (void *)eglGetProcAddress("glDepthBoundsEXT");
p_glSpecializeShader = (void *)eglGetProcAddress("glSpecializeShader");
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_NOTIFICATION, 0, NULL, GL_FALSE);
@@ -1143,6 +1147,11 @@ static bool gl_runner_draw(struct shader_runner *r,
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glDepthFunc(get_compare_op_gl(runner->r.depth_func));
if (runner->r.depth_bounds)
{
glEnable(GL_DEPTH_BOUNDS_TEST_EXT);
p_glDepthBoundsEXT(runner->r.depth_min, runner->r.depth_max);
}
break;
case RESOURCE_TYPE_TEXTURE: