OSDN Git Service

nv50: turn on depth test/write again, not 100% but winsys handles it better
authorBen Skeggs <skeggsb@gmail.com>
Tue, 24 Jun 2008 17:56:57 +0000 (03:56 +1000)
committerBen Skeggs <skeggsb@gmail.com>
Sun, 29 Jun 2008 05:46:20 +0000 (15:46 +1000)
src/gallium/drivers/nv50/nv50_miptree.c
src/gallium/drivers/nv50/nv50_state.c

index cdd9884..6ee09fc 100644 (file)
@@ -10,7 +10,7 @@ nv50_miptree_create(struct pipe_screen *pscreen, const struct pipe_texture *pt)
 {
        struct pipe_winsys *ws = pscreen->winsys;
        struct nv50_miptree *mt = CALLOC_STRUCT(nv50_miptree);
-       unsigned usage;
+       unsigned usage, pitch;
 
        NOUVEAU_ERR("unimplemented\n");
 
@@ -28,8 +28,9 @@ nv50_miptree_create(struct pipe_screen *pscreen, const struct pipe_texture *pt)
                break;
        }
 
-       mt->buffer = ws->buffer_create(ws, 256, usage,
-                                      pt->width[0] * pt->cpp * pt->height[0]);
+       pitch = ((pt->width[0] + 63) & ~63) * pt->cpp;
+
+       mt->buffer = ws->buffer_create(ws, 256, usage, pitch * pt->height[0]);
        if (!mt->buffer) {
                FREE(mt);
                return NULL;
index f36299d..1b765cb 100644 (file)
@@ -272,10 +272,10 @@ nv50_depth_stencil_alpha_state_create(struct pipe_context *pipe,
        struct nouveau_stateobj *so = so_new(64, 0);
 
        so_method(so, tesla, NV50TCL_DEPTH_WRITE_ENABLE, 1);
-       so_data  (so, 0); //cso->depth.writemask ? 1 : 0);
+       so_data  (so, cso->depth.writemask ? 1 : 0);
        if (cso->depth.enabled) {
                so_method(so, tesla, NV50TCL_DEPTH_TEST_ENABLE, 1);
-               so_data  (so, 0); //1);
+               so_data  (so, 1);
                so_method(so, tesla, NV50TCL_DEPTH_TEST_FUNC, 1);
                so_data  (so, nvgl_comparison_op(cso->depth.func));
        } else {