#define _PIPE_FORMAT_RRRG _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_G )
#define _PIPE_FORMAT_Z000 _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_Z, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
#define _PIPE_FORMAT_SZ00 _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_S, PIPE_FORMAT_COMP_Z, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
+#define _PIPE_FORMAT_ZS00 _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_Z, PIPE_FORMAT_COMP_S, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
#define _PIPE_FORMAT_S000 _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_S, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
/**
#define PIPE_FORMAT_U_Z32 _PIPE_FORMAT_RGBAZS_8N( _PIPE_FORMAT_Z000, 4, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM ) /**< uint Z/depth */
#define PIPE_FORMAT_F_Z32 _PIPE_FORMAT_RGBAZS_8N( _PIPE_FORMAT_Z000, 4, 0, 0, 0, PIPE_FORMAT_TYPE_FLOAT ) /**< float Z/depth */
#define PIPE_FORMAT_S8_Z24 _PIPE_FORMAT_RGBAZS_8N( _PIPE_FORMAT_SZ00, 1, 3, 0, 0, PIPE_FORMAT_TYPE_UNORM ) /**< 8-bit stencil + 24-bit Z */
+#define PIPE_FORMAT_Z24_S8 _PIPE_FORMAT_RGBAZS_8N( _PIPE_FORMAT_ZS00, 3, 1, 0, 0, PIPE_FORMAT_TYPE_UNORM ) /**< 24-bit Z + 8-bit stencil */
#define PIPE_FORMAT_U_S8 _PIPE_FORMAT_RGBAZS_8N( _PIPE_FORMAT_S000, 1, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM ) /**< 8-bit stencil */
#define PIPE_FORMAT_R64_FLOAT _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_R000, 1, 0, 0, 0, PIPE_FORMAT_TYPE_FLOAT )
#define PIPE_FORMAT_R64G64_FLOAT _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_RG00, 1, 1, 0, 0, PIPE_FORMAT_TYPE_FLOAT )
return (uint) (value * 0xffffffff);
case PIPE_FORMAT_S8_Z24:
return (uint) (value * 0xffffff);
+ case PIPE_FORMAT_Z24_S8:
+ return ((uint) (value * 0xffffff)) << 8;
default:
assert(0);
return 0;
{
switch (pipeFormat) {
case PIPE_FORMAT_S8_Z24:
- /*case PIPE_FORMAT_Z24_S8:*/
+ case PIPE_FORMAT_Z24_S8:
return GL_TRUE;
default:
return GL_FALSE;
case PIPE_FORMAT_S8_Z24:
clearValue |= ctx->Stencil.Clear << 24;
break;
-#if 0
case PIPE_FORMAT_Z24_S8:
- clearValue = (clearValue << 8) | clearVal;
+ clearValue |= clearValue | ctx->Stencil.Clear;
break;
-#endif
default:
assert(0);
}
if (pipe->is_format_supported( pipe, PIPE_FORMAT_S8_Z24 )) {
return PIPE_FORMAT_S8_Z24;
}
+ if (pipe->is_format_supported( pipe, PIPE_FORMAT_Z24_S8 )) {
+ return PIPE_FORMAT_Z24_S8;
+ }
return PIPE_FORMAT_NONE;
}
case GL_DEPTH_COMPONENT24:
if (pipe->is_format_supported( pipe, PIPE_FORMAT_S8_Z24 ))
return PIPE_FORMAT_S8_Z24;
+ if (pipe->is_format_supported( pipe, PIPE_FORMAT_Z24_S8 ))
+ return PIPE_FORMAT_Z24_S8;
/* fall-through */
case GL_DEPTH_COMPONENT32:
if (pipe->is_format_supported( pipe, PIPE_FORMAT_U_Z32 ))
return PIPE_FORMAT_U_S8;
if (pipe->is_format_supported( pipe, PIPE_FORMAT_S8_Z24 ))
return PIPE_FORMAT_S8_Z24;
+ if (pipe->is_format_supported( pipe, PIPE_FORMAT_Z24_S8 ))
+ return PIPE_FORMAT_Z24_S8;
return PIPE_FORMAT_NONE;
case GL_DEPTH_STENCIL_EXT:
case GL_DEPTH24_STENCIL8_EXT:
if (pipe->is_format_supported( pipe, PIPE_FORMAT_S8_Z24 ))
return PIPE_FORMAT_S8_Z24;
+ if (pipe->is_format_supported( pipe, PIPE_FORMAT_Z24_S8 ))
+ return PIPE_FORMAT_Z24_S8;
return PIPE_FORMAT_NONE;
default: