nv50: correct zeta formats
What was Z24S8 before is actually S8Z24, and what we had for Z16 is actually X8Z24. Now, we also have the REAL Z24S8 and I added Z32_FLOAT as well; most of the formats need different tile_flags.
This commit is contained in:
committed by
Ben Skeggs
parent
987c59c486
commit
84166a021f
@@ -42,9 +42,14 @@ nv50_miptree_create(struct pipe_screen *pscreen, const struct pipe_texture *tmp)
|
||||
mt->base.screen = pscreen;
|
||||
|
||||
switch (pt->format) {
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
case PIPE_FORMAT_Z32_FLOAT:
|
||||
tile_flags = 0x4800;
|
||||
break;
|
||||
case PIPE_FORMAT_Z24S8_UNORM:
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
tile_flags = 0x1800;
|
||||
break;
|
||||
case PIPE_FORMAT_X8Z24_UNORM:
|
||||
case PIPE_FORMAT_S8Z24_UNORM:
|
||||
tile_flags = 0x2800;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -44,9 +44,10 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
|
||||
} else
|
||||
if (tex_usage & PIPE_TEXTURE_USAGE_DEPTH_STENCIL) {
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_Z32_FLOAT:
|
||||
case PIPE_FORMAT_Z24S8_UNORM:
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
case PIPE_FORMAT_X8Z24_UNORM:
|
||||
case PIPE_FORMAT_S8Z24_UNORM:
|
||||
return TRUE;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -92,17 +92,22 @@ nv50_state_validate_fb(struct nv50_context *nv50)
|
||||
so_reloc (so, bo, fb->zsbuf->offset, NOUVEAU_BO_VRAM |
|
||||
NOUVEAU_BO_LOW | NOUVEAU_BO_RDWR, 0, 0);
|
||||
switch (fb->zsbuf->format) {
|
||||
case PIPE_FORMAT_Z24S8_UNORM:
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
so_data(so, 0x16);
|
||||
case PIPE_FORMAT_Z32_FLOAT:
|
||||
so_data(so, NV50TCL_ZETA_FORMAT_Z32_FLOAT);
|
||||
break;
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
so_data(so, 0x15);
|
||||
case PIPE_FORMAT_Z24S8_UNORM:
|
||||
so_data(so, NV50TCL_ZETA_FORMAT_Z24S8_UNORM);
|
||||
break;
|
||||
case PIPE_FORMAT_X8Z24_UNORM:
|
||||
so_data(so, NV50TCL_ZETA_FORMAT_X8Z24_UNORM);
|
||||
break;
|
||||
case PIPE_FORMAT_S8Z24_UNORM:
|
||||
so_data(so, NV50TCL_ZETA_FORMAT_S8Z24_UNORM);
|
||||
break;
|
||||
default:
|
||||
NOUVEAU_ERR("AIIII unknown format %s\n",
|
||||
pf_name(fb->zsbuf->format));
|
||||
so_data(so, 0x16);
|
||||
so_data(so, NV50TCL_ZETA_FORMAT_S8Z24_UNORM);
|
||||
break;
|
||||
}
|
||||
so_data(so, bo->tile_mode << 4);
|
||||
|
||||
Reference in New Issue
Block a user