summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatrice Mandin <patmandin@gmail.com>2009-10-15 21:58:44 +0200
committerPatrice Mandin <patmandin@gmail.com>2009-10-15 21:58:44 +0200
commit13580aa3d142b17f936e517daf949ae228f9f14e (patch)
tree62c3c1b942d2d09213e4c765251cf25c31b40b85 /src
parent108273c5ed43b2c54a58900b7bb4528f912e2b1f (diff)
nouveau: nv30: refuse binding a colour buffer with a zeta buffer with different bits, till the backend can tell Mesa not to do that.
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/nv30/nv30_state_fb.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/nv30/nv30_state_fb.c b/src/gallium/drivers/nv30/nv30_state_fb.c
index 2729dcec7c..9b0266fba5 100644
--- a/src/gallium/drivers/nv30/nv30_state_fb.c
+++ b/src/gallium/drivers/nv30/nv30_state_fb.c
@@ -15,6 +15,7 @@ nv30_state_framebuffer_validate(struct nv30_context *nv30)
unsigned w = fb->width;
unsigned h = fb->height;
struct nv30_miptree *nv30mt;
+ int colour_bits = 32, zeta_bits = 32;
rt_enable = 0;
for (i = 0; i < fb->nr_cbufs; i++) {
@@ -54,6 +55,7 @@ nv30_state_framebuffer_validate(struct nv30_context *nv30)
break;
case PIPE_FORMAT_R5G6B5_UNORM:
rt_format |= NV34TCL_RT_FORMAT_COLOR_R5G6B5;
+ colour_bits = 16;
break;
default:
assert(0);
@@ -62,6 +64,7 @@ nv30_state_framebuffer_validate(struct nv30_context *nv30)
switch (zeta_format) {
case PIPE_FORMAT_Z16_UNORM:
rt_format |= NV34TCL_RT_FORMAT_ZETA_Z16;
+ zeta_bits = 16;
break;
case PIPE_FORMAT_Z24S8_UNORM:
case PIPE_FORMAT_Z24X8_UNORM:
@@ -72,6 +75,10 @@ nv30_state_framebuffer_validate(struct nv30_context *nv30)
assert(0);
}
+ if (colour_bits != zeta_bits) {
+ return FALSE;
+ }
+
if (rt_enable & NV34TCL_RT_ENABLE_COLOR0) {
uint32_t pitch = rt[0]->pitch;
if (zeta) {