summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_state_inlines.h
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-08-06 15:06:25 +1000
committerDave Airlie <airlied@redhat.com>2010-08-06 15:06:25 +1000
commitfc47cb9d710c046d34e8238337e009d7b76a3207 (patch)
treee19d3d359c1ccfd6d65c7d15f1435ad5830d47fd /src/gallium/drivers/r600/r600_state_inlines.h
parentb8de7788a4b20c702b06402e2e6eed60467e2522 (diff)
r600g: fixup z format translations.
this enables GL_EXT_packed_depth_stencil. fbo-d24s8 passes
Diffstat (limited to 'src/gallium/drivers/r600/r600_state_inlines.h')
-rw-r--r--src/gallium/drivers/r600/r600_state_inlines.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_state_inlines.h b/src/gallium/drivers/r600/r600_state_inlines.h
index b45089dcc1..4a955da1c0 100644
--- a/src/gallium/drivers/r600/r600_state_inlines.h
+++ b/src/gallium/drivers/r600/r600_state_inlines.h
@@ -129,6 +129,20 @@ static INLINE uint32_t r600_translate_ds_func(int func)
return func;
}
+static uint32_t r600_translate_dbformat(enum pipe_format format)
+{
+ switch (format) {
+ case PIPE_FORMAT_Z16_UNORM:
+ return V_028010_DEPTH_16;
+ case PIPE_FORMAT_Z24X8_UNORM:
+ return V_028010_DEPTH_X8_24;
+ case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
+ return V_028010_DEPTH_8_24;
+ default:
+ return ~0;
+ }
+}
+
static uint32_t r600_translate_colorswap(enum pipe_format format)
{
switch (format) {
@@ -168,6 +182,10 @@ static uint32_t r600_translate_colorswap(enum pipe_format format)
// case PIPE_FORMAT_R8SG8SB8UX8U_NORM:
return SWAP_STD_REV;
+ case PIPE_FORMAT_Z24X8_UNORM:
+ case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
+ return SWAP_STD;
+
case PIPE_FORMAT_R10G10B10A2_UNORM:
case PIPE_FORMAT_R10G10B10X2_SNORM:
case PIPE_FORMAT_B10G10R10A2_UNORM:
@@ -234,6 +252,10 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format)
case PIPE_FORMAT_R10SG10SB10SA2U_NORM:
return V_0280A0_COLOR_10_10_10_2;
+ case PIPE_FORMAT_Z24X8_UNORM:
+ case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
+ return V_0280A0_COLOR_24_8;
+
/* 64-bit buffers. */
case PIPE_FORMAT_R16G16B16A16_UNORM:
case PIPE_FORMAT_R16G16B16A16_SNORM:
@@ -271,7 +293,7 @@ static INLINE boolean r600_is_colorbuffer_format_supported(enum pipe_format form
static INLINE boolean r600_is_zs_format_supported(enum pipe_format format)
{
- return TRUE;
+ return r600_translate_dbformat(format) != ~0;
}
static INLINE boolean r600_is_vertex_format_supported(enum pipe_format format)