From: Mathias Fröhlich <mathias.froehl...@gmx.net> This is mostly support for the unclamped versions of glDepthRangedNV, glClearDepthdNV and glDepthBoundsdNV. Note that OpenGL 4.2 introduced that the traditonal glDepthRange functions may no longer clamp to [0, 1], but OpenGL 4.3 already revoked this behavior to clamp the arguments.
Signed-off-by: Mathias Froehlich <mathias.froehl...@web.de> --- docs/relnotes/10.3.html | 1 + src/mapi/glapi/gen/NV_depth_buffer_float.xml | 32 +++++++++++++ src/mapi/glapi/gen/gl_API.xml | 2 + src/mesa/drivers/common/meta.c | 3 +- src/mesa/main/attrib.c | 4 +- src/mesa/main/depth.c | 16 +++++++ src/mesa/main/depth.h | 6 +++ src/mesa/main/dlist.c | 67 ++++++++++++++++++++++++++++ src/mesa/main/extensions.c | 1 + src/mesa/main/fbobject.c | 5 +++ src/mesa/main/get.c | 15 +++++++ src/mesa/main/get_hash_params.py | 3 ++ src/mesa/main/glformats.c | 9 +++- src/mesa/main/mtypes.h | 1 + src/mesa/main/tests/dispatch_sanity.cpp | 5 +++ src/mesa/main/texformat.c | 2 + src/mesa/main/teximage.c | 2 + src/mesa/main/viewport.c | 13 ++++++ src/mesa/main/viewport.h | 3 ++ src/mesa/state_tracker/st_extensions.c | 1 + src/mesa/state_tracker/st_format.c | 8 ++++ 21 files changed, 195 insertions(+), 4 deletions(-) create mode 100644 src/mapi/glapi/gen/NV_depth_buffer_float.xml diff --git a/docs/relnotes/10.3.html b/docs/relnotes/10.3.html index fa4ea23..702f4b6 100644 --- a/docs/relnotes/10.3.html +++ b/docs/relnotes/10.3.html @@ -65,6 +65,7 @@ Note: some of the new features are only available with certain drivers. <li>GL_ARB_texture_query_lod on r600, radeonsi</li> <li>GL_ARB_viewport_array on nvc0</li> <li>GL_AMD_vertex_shader_viewport_index on i965/gen7+, r600</li> +<li>GL_NV_depth_buffer_float on softpipe, llvmpipe</li> <li>GL_OES_compressed_ETC1_RGB8_texture on nv30, nv50, nvc0, r300, r600, radeonsi, softpipe, llvmpipe</li> <li>GLX_MESA_query_renderer on nv30, nv50, nvc0, r300, r600, radeonsi, softpipe, llvmpipe</li> <li>A new software rasterizer driver (kms_swrast_dri.so) that works with diff --git a/src/mapi/glapi/gen/NV_depth_buffer_float.xml b/src/mapi/glapi/gen/NV_depth_buffer_float.xml new file mode 100644 index 0000000..289538cf --- /dev/null +++ b/src/mapi/glapi/gen/NV_depth_buffer_float.xml @@ -0,0 +1,32 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<!-- Note: no GLX protocol info yet. --> + +<OpenGLAPI> + +<category name="GL_NV_depth_buffer_float" number="334"> + + <enum name="DEPTH_COMPONENT32F_NV" value = "0x8DAB"/> + <enum name="DEPTH32F_STENCIL8_NV" value = "0x8DAC"/> + + <!-- Is the same than FLOAT_32_UNSIGNED_INT_24_8_REV. --> + <enum name="FLOAT_32_UNSIGNED_INT_24_8_REV_NV" value = "0x8DAD"/> + + <enum name="DEPTH_BUFFER_FLOAT_MODE_NV" value = "0x8DAF"/> + + <function name="DepthRangedNV" offset="assign"> + <param name="n" type="GLdouble"/> + <param name="f" type="GLdouble"/> + </function> + <function name="ClearDepthdNV" offset="assign"> + <param name="d" type="GLdouble"/> + </function> + <function name="DepthBoundsdNV" offset="assign"> + <param name="zmin" type="GLdouble"/> + <param name="zmax" type="GLdouble"/> + </function> + +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 73f2f75..d504faf 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -13027,6 +13027,8 @@ <xi:include href="NV_vdpau_interop.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="NV_depth_buffer_float.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + <xi:include href="GL4x.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> </OpenGLAPI> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 7a8e627..d165f12 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -1112,7 +1112,8 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_set_viewport(ctx, 0, save->ViewportX, save->ViewportY, save->ViewportW, save->ViewportH); } - _mesa_DepthRange(save->DepthNear, save->DepthFar); + /* Need to call ...NV since this is guaranteed not to clamp to [0,1] */ + _mesa_DepthRangedNV(save->DepthNear, save->DepthFar); } if (state & MESA_META_CLAMP_FRAGMENT_COLOR && diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index 97115a1..4930afd 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -1072,7 +1072,9 @@ _mesa_PopAttrib(void) const struct gl_depthbuffer_attrib *depth; depth = (const struct gl_depthbuffer_attrib *) attr->data; _mesa_DepthFunc(depth->Func); - _mesa_ClearDepth(depth->Clear); + /* The ...NV variant is guaranteed not to clamp */ + /* what was not clamped before. */ + _mesa_ClearDepthdNV(depth->Clear); _mesa_set_enable(ctx, GL_DEPTH_TEST, depth->Test); _mesa_DepthMask(depth->Mask); } diff --git a/src/mesa/main/depth.c b/src/mesa/main/depth.c index 8ae3cb6..f63dc01 100644 --- a/src/mesa/main/depth.c +++ b/src/mesa/main/depth.c @@ -91,6 +91,12 @@ _mesa_ClearDepthf( GLclampf depth ) set_clear_depth(ctx, "glClearDepthf", depth, true); } +void GLAPIENTRY +_mesa_ClearDepthdNV( GLdouble depth ) +{ + GET_CURRENT_CONTEXT(ctx); + set_clear_depth(ctx, "glClearDepthdNV", depth, false); +} void GLAPIENTRY _mesa_DepthFunc( GLenum func ) @@ -162,6 +168,16 @@ _mesa_DepthBoundsEXT( GLclampd zmin, GLclampd zmax ) } +/** + * Specified by the NV_depth_buffer_float extension. + */ +void GLAPIENTRY +_mesa_DepthBoundsdNV( GLdouble zmin, GLdouble zmax ) +{ + GET_CURRENT_CONTEXT(ctx); + set_depth_bounds(ctx, "glDepthBoundsdNV", zmin, zmax, false); +} + /**********************************************************************/ /***** Initialization *****/ /**********************************************************************/ diff --git a/src/mesa/main/depth.h b/src/mesa/main/depth.h index 5ff7a5e..f213012 100644 --- a/src/mesa/main/depth.h +++ b/src/mesa/main/depth.h @@ -44,6 +44,9 @@ extern void GLAPIENTRY _mesa_ClearDepthf( GLclampf depth ); extern void GLAPIENTRY +_mesa_ClearDepthdNV( GLdouble depth ); + +extern void GLAPIENTRY _mesa_DepthFunc( GLenum func ); extern void GLAPIENTRY @@ -52,6 +55,9 @@ _mesa_DepthMask( GLboolean flag ); extern void GLAPIENTRY _mesa_DepthBoundsEXT( GLclampd zmin, GLclampd zmax ); +extern void GLAPIENTRY +_mesa_DepthBoundsdNV( GLdouble zmin, GLdouble zmax ); + extern void _mesa_init_depth( struct gl_context * ctx ); diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 5c7160d..2e98045 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -40,6 +40,7 @@ #include "bufferobj.h" #include "arrayobj.h" #include "context.h" +#include "depth.h" #include "dlist.h" #include "enums.h" #include "eval.h" @@ -308,6 +309,10 @@ typedef enum OPCODE_ACTIVE_STENCIL_FACE_EXT, /* GL_EXT_depth_bounds_test */ OPCODE_DEPTH_BOUNDS_EXT, + /* GL_NV_depth_buffer_float */ + OPCODE_DEPTH_RANGE_NV, + OPCODE_CLEAR_DEPTH_NV, + OPCODE_DEPTH_BOUNDS_NV, /* GL_ARB_vertex/fragment_program */ OPCODE_PROGRAM_STRING_ARB, OPCODE_PROGRAM_ENV_PARAMETER_ARB, @@ -4843,6 +4848,54 @@ save_DepthBoundsEXT(GLclampd zmin, GLclampd zmax) } +/* NV_depth_buffer_float */ +static void GLAPIENTRY +save_DepthRangedNV(GLdouble near, GLdouble far) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_DEPTH_RANGE_NV, 2); + if (n) { + n[1].f = near; + n[2].f = far; + } + if (ctx->ExecuteFlag) { + CALL_DepthRangedNV(ctx->Exec, (near, far)); + } +} + +static void GLAPIENTRY +save_ClearDepthdNV(GLdouble d) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_CLEAR_DEPTH_NV, 1); + if (n) { + n[1].f = d; + } + if (ctx->ExecuteFlag) { + CALL_ClearDepthdNV(ctx->Exec, (d)); + } +} + +static void GLAPIENTRY +save_DepthBoundsdNV(GLdouble zmin, GLdouble zmax) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_DEPTH_BOUNDS_NV, 2); + if (n) { + n[1].f = zmin; + n[2].f = zmax; + } + if (ctx->ExecuteFlag) { + CALL_DepthBoundsdNV(ctx->Exec, (zmin, zmax)); + } +} + static void GLAPIENTRY save_ProgramStringARB(GLenum target, GLenum format, GLsizei len, @@ -8317,6 +8370,15 @@ execute_list(struct gl_context *ctx, GLuint list) case OPCODE_DEPTH_BOUNDS_EXT: CALL_DepthBoundsEXT(ctx->Exec, (n[1].f, n[2].f)); break; + case OPCODE_DEPTH_RANGE_NV: + CALL_DepthRangedNV(ctx->Exec, (n[1].f, n[2].f)); + break; + case OPCODE_CLEAR_DEPTH_NV: + CALL_ClearDepthdNV(ctx->Exec, (n[1].f)); + break; + case OPCODE_DEPTH_BOUNDS_NV: + CALL_DepthBoundsdNV(ctx->Exec, (n[1].f, n[2].f)); + break; case OPCODE_PROGRAM_STRING_ARB: CALL_ProgramStringARB(ctx->Exec, (n[1].e, n[2].e, n[3].i, @@ -9460,6 +9522,11 @@ _mesa_initialize_save_table(const struct gl_context *ctx) /* ???. GL_EXT_depth_bounds_test */ SET_DepthBoundsEXT(table, save_DepthBoundsEXT); + /* ???. GL_NV_depth_buffer_float */ + SET_DepthRangedNV(table, save_DepthRangedNV); + SET_ClearDepthdNV(table, save_ClearDepthdNV); + SET_DepthBoundsdNV(table, save_DepthBoundsdNV); + /* ARB 1. GL_ARB_multitexture */ SET_ActiveTexture(table, save_ActiveTextureARB); diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 553c01e..6b912fb 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -353,6 +353,7 @@ static const struct extension extension_table[] = { { "GL_MESA_ycbcr_texture", o(MESA_ycbcr_texture), GL, 2002 }, { "GL_NV_blend_square", o(dummy_true), GLL, 1999 }, { "GL_NV_conditional_render", o(NV_conditional_render), GL, 2008 }, + { "GL_NV_depth_buffer_float", o(NV_depth_buffer_float), GL, 2008 }, { "GL_NV_depth_clamp", o(ARB_depth_clamp), GL, 2001 }, { "GL_NV_draw_buffers", o(dummy_true), ES2, 2011 }, { "GL_NV_fbo_color_attachments", o(dummy_true), ES2, 2010 }, diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index ae3a418..43bfeae 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -1480,6 +1480,11 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) || (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_depth_buffer_float) ? GL_DEPTH_STENCIL : 0; + case GL_DEPTH_COMPONENT32F_NV: + case GL_DEPTH32F_STENCIL8_NV: + return (ctx->API == API_OPENGL_COMPAT && + ctx->Extensions.NV_depth_buffer_float) + ? GL_DEPTH_COMPONENT : 0; case GL_RED: case GL_R16: return _mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_rg diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 0e2d8f6..13f773b 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -31,6 +31,7 @@ #include "errors.h" #include "extensions.h" #include "get.h" +#include "glformats.h" #include "macros.h" #include "mtypes.h" #include "state.h" @@ -391,6 +392,7 @@ EXTRA_EXT(ARB_gpu_shader5); EXTRA_EXT2(ARB_transform_feedback3, ARB_gpu_shader5); EXTRA_EXT(INTEL_performance_query); EXTRA_EXT(ARB_explicit_uniform_location); +EXTRA_EXT(NV_depth_buffer_float); static const int extra_ARB_color_buffer_float_or_glcore[] = { @@ -1019,6 +1021,19 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu v->value_int = 0; } break; + /* NV_depth_buffer_float */ + case GL_DEPTH_BUFFER_FLOAT_MODE_NV: + { + /* Note: we only check the 0th color attachment. */ + const struct gl_renderbuffer *rb = + ctx->DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer; + if (rb && _mesa_is_float_depth_format(rb->Format)) { + v->value_bool = 1; + } else { + v->value_bool = 0; + } + } + break; } } diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py index aace8a5..898fda0 100644 --- a/src/mesa/main/get_hash_params.py +++ b/src/mesa/main/get_hash_params.py @@ -791,6 +791,9 @@ descriptor=[ [ "MIN_FRAGMENT_INTERPOLATION_OFFSET", "CONTEXT_FLOAT(Const.MinFragmentInterpolationOffset), extra_ARB_gpu_shader5" ], [ "MAX_FRAGMENT_INTERPOLATION_OFFSET", "CONTEXT_FLOAT(Const.MaxFragmentInterpolationOffset), extra_ARB_gpu_shader5" ], [ "FRAGMENT_INTERPOLATION_OFFSET_BITS", "CONST(FRAGMENT_INTERPOLATION_OFFSET_BITS), extra_ARB_gpu_shader5" ], + +# GL_NV_depth_buffer_float + [ "DEPTH_BUFFER_FLOAT_MODE_NV", "LOC_CUSTOM, TYPE_BOOLEAN, 0, extra_NV_depth_buffer_float" ], ]}, # Enums restricted to OpenGL Core profile diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index 16f7d6b..73804c9 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -901,6 +901,7 @@ _mesa_is_depth_format(GLenum format) case GL_DEPTH_COMPONENT24: case GL_DEPTH_COMPONENT32: case GL_DEPTH_COMPONENT32F: + case GL_DEPTH_COMPONENT32F_NV: return GL_TRUE; default: return GL_FALSE; @@ -974,7 +975,9 @@ _mesa_is_depth_or_stencil_format(GLenum format) case GL_DEPTH_STENCIL_EXT: case GL_DEPTH24_STENCIL8_EXT: case GL_DEPTH_COMPONENT32F: + case GL_DEPTH_COMPONENT32F_NV: case GL_DEPTH32F_STENCIL8: + case GL_DEPTH32F_STENCIL8_NV: return GL_TRUE; default: return GL_FALSE; @@ -2188,7 +2191,8 @@ _mesa_es3_error_check_format_and_type(GLenum format, GLenum type, break; case GL_FLOAT: - if (internalFormat != GL_DEPTH_COMPONENT32F) + if (internalFormat != GL_DEPTH_COMPONENT32F + && internalFormat != GL_DEPTH_COMPONENT32F_NV) return GL_INVALID_OPERATION; break; @@ -2206,7 +2210,8 @@ _mesa_es3_error_check_format_and_type(GLenum format, GLenum type, break; case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: - if (internalFormat != GL_DEPTH32F_STENCIL8) + if (internalFormat != GL_DEPTH32F_STENCIL8 + && internalFormat != GL_DEPTH32F_STENCIL8_NV) return GL_INVALID_OPERATION; break; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 0d50be8..e7b5784 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -3779,6 +3779,7 @@ struct gl_extensions GLboolean MESA_pack_invert; GLboolean MESA_ycbcr_texture; GLboolean NV_conditional_render; + GLboolean NV_depth_buffer_float; GLboolean NV_fog_distance; GLboolean NV_fragment_program_option; GLboolean NV_point_sprite; diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index 04fa86b..9bdc86c 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -951,6 +951,11 @@ const struct function gl_core_functions_possible[] = { { "glClearTexImage", 13, -1 }, { "glClearTexSubImage", 13, -1 }, + /* GL_NV_depth_buffer_float */ + { "glDepthRangedNV", 20, -1 }, + { "glClearDepthdNV", 20, -1 }, + { "glDepthBoundsdNV", 20, -1 }, + { NULL, 0, -1 } }; diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index 6d3b805..6c22889 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -442,9 +442,11 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, break; case GL_DEPTH_COMPONENT32F: + case GL_DEPTH_COMPONENT32F_NV: ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_Z_FLOAT32]); return MESA_FORMAT_Z_FLOAT32; case GL_DEPTH32F_STENCIL8: + case GL_DEPTH32F_STENCIL8_NV: ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_Z32_FLOAT_S8X24_UINT]); return MESA_FORMAT_Z32_FLOAT_S8X24_UINT; diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 647d28a..8d820af 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -448,8 +448,10 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) if (ctx->Extensions.ARB_depth_buffer_float) { switch (internalFormat) { case GL_DEPTH_COMPONENT32F: + case GL_DEPTH_COMPONENT32F_NV: return GL_DEPTH_COMPONENT; case GL_DEPTH32F_STENCIL8: + case GL_DEPTH32F_STENCIL8_NV: return GL_DEPTH_STENCIL; default: ; /* fallthrough */ diff --git a/src/mesa/main/viewport.c b/src/mesa/main/viewport.c index e86a77c..0712acb 100644 --- a/src/mesa/main/viewport.c +++ b/src/mesa/main/viewport.c @@ -332,6 +332,19 @@ _mesa_DepthRangef(GLclampf nearval, GLclampf farval) _mesa_DepthRange(nearval, farval); } +void GLAPIENTRY +_mesa_DepthRangedNV(GLdouble nearval, GLdouble farval) +{ + GET_CURRENT_CONTEXT(ctx); + + FLUSH_VERTICES(ctx, 0); + + if (MESA_VERBOSE&VERBOSE_API) + _mesa_debug(ctx, "glDepthRangeNV %f %f\n", nearval, farval); + + set_all_depth_range(ctx, nearval, farval, false); +} + /** * Update a range DepthRange values * diff --git a/src/mesa/main/viewport.h b/src/mesa/main/viewport.h index 6324cab..dbbe814 100644 --- a/src/mesa/main/viewport.h +++ b/src/mesa/main/viewport.h @@ -55,6 +55,9 @@ extern void GLAPIENTRY _mesa_DepthRangef(GLclampf nearval, GLclampf farval); extern void GLAPIENTRY +_mesa_DepthRangedNV(GLdouble nearval, GLdouble farval); + +extern void GLAPIENTRY _mesa_DepthRangeArrayv(GLuint first, GLsizei count, const GLclampd * v); extern void GLAPIENTRY diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index c7bc0ca..8521d04 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -451,6 +451,7 @@ void st_init_extensions(struct pipe_screen *screen, { o(ATI_separate_stencil), PIPE_CAP_TWO_SIDED_STENCIL }, { o(ATI_texture_mirror_once), PIPE_CAP_TEXTURE_MIRROR_CLAMP }, { o(NV_conditional_render), PIPE_CAP_CONDITIONAL_RENDER }, + { o(NV_depth_buffer_float), PIPE_CAP_UNCLAMPED_DEPTH_VALUES }, { o(NV_texture_barrier), PIPE_CAP_TEXTURE_BARRIER }, /* GL_NV_point_sprite is not supported by gallium because we don't * support the GL_POINT_SPRITE_R_MODE_NV option. */ diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index 531bc65..4446a17 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -1081,6 +1081,10 @@ static const struct format_mapping format_map[] = { { GL_DEPTH_COMPONENT32F, 0 }, { PIPE_FORMAT_Z32_FLOAT, 0 } }, + { + { GL_DEPTH_COMPONENT32F_NV, 0 }, + { PIPE_FORMAT_Z32_FLOAT, 0 } + }, /* stencil formats */ { @@ -1101,6 +1105,10 @@ static const struct format_mapping format_map[] = { { GL_DEPTH32F_STENCIL8, 0 }, { PIPE_FORMAT_Z32_FLOAT_S8X24_UINT, 0 } }, + { + { GL_DEPTH32F_STENCIL8_NV, 0 }, + { PIPE_FORMAT_Z32_FLOAT_S8X24_UINT, 0 } + }, /* sRGB formats */ { -- 1.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev