nouveau: fix chipset checks for nv1a by using the oclass instead
authorIlia Mirkin <imirkin@alum.mit.edu>
Wed, 12 Feb 2014 23:22:56 +0000 (18:22 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Thu, 13 Feb 2014 16:06:41 +0000 (11:06 -0500)
Commit f4ebcd133b9 ("dri/nouveau: NV17_3D class is not available for
NV1a chipset") fixed this partially by using the correct 3d class.
However there were a lot of checks left over comparing against the
chipset.

Reported-and-tested-by: John F. Godfrey <jfgodfrey@gmail.com>
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: 9.2 10.0 10.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/nouveau/nv10_context.c
src/mesa/drivers/dri/nouveau/nv10_state_fb.c
src/mesa/drivers/dri/nouveau/nv10_state_raster.c

index 904a41081f4d756114e166993ce51de86cc26135..00a935880e0851eb79d75770e36b82de777a393d 100644 (file)
@@ -63,7 +63,7 @@ nv10_use_viewport_zclear(struct gl_context *ctx)
        struct gl_framebuffer *fb = ctx->DrawBuffer;
        struct gl_renderbuffer *depthRb = fb->Attachment[BUFFER_DEPTH].Renderbuffer;
 
-       return context_chipset(ctx) < 0x17 &&
+       return context_eng3d(ctx)->oclass < NV17_3D_CLASS &&
                !nctx->hierz.clear_blocked && depthRb &&
                (_mesa_get_format_bits(depthRb->Format,
                                       GL_DEPTH_BITS) >= 24);
@@ -184,7 +184,7 @@ nv10_clear(struct gl_context *ctx, GLbitfield buffers)
        }
 
        if ((buffers & BUFFER_BIT_DEPTH) && ctx->Depth.Mask) {
-               if (context_chipset(ctx) >= 0x17)
+               if (context_eng3d(ctx)->oclass >= NV17_3D_CLASS)
                        nv17_zclear(ctx, &buffers);
                else
                        nv10_zclear(ctx, &buffers);
@@ -245,7 +245,7 @@ nv10_hwctx_init(struct gl_context *ctx)
        BEGIN_NV04(push, NV04_GRAPH(3D, NOP), 1);
        PUSH_DATA (push, 0);
 
-       if (context_chipset(ctx) >= 0x17) {
+       if (context_eng3d(ctx)->oclass >= NV17_3D_CLASS) {
                BEGIN_NV04(push, NV17_3D(UNK01AC), 2);
                PUSH_DATA (push, fifo->vram);
                PUSH_DATA (push, fifo->vram);
@@ -257,7 +257,7 @@ nv10_hwctx_init(struct gl_context *ctx)
                PUSH_DATA (push, 1);
        }
 
-       if (context_chipset(ctx) >= 0x11) {
+       if (context_eng3d(ctx)->oclass >= NV15_3D_CLASS) {
                BEGIN_NV04(push, SUBC_3D(0x120), 3);
                PUSH_DATA (push, 0);
                PUSH_DATA (push, 1);
index 19769e5c47fa363947898080ffeb6c9ffd8f41c7..fb66b2d5494db0874b057fe31aecbfb14e66e22a 100644 (file)
@@ -106,7 +106,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 
        /* At least nv11 seems to get sad if we don't do this before
         * swapping RTs.*/
-       if (context_chipset(ctx) < 0x17) {
+       if (context_eng3d(ctx)->oclass < NV17_3D_CLASS) {
                int i;
 
                for (i = 0; i < 6; i++) {
@@ -140,7 +140,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
                PUSH_MTHDl(push, NV10_3D(ZETA_OFFSET), BUFCTX_FB,
                                 s->bo, 0, bo_flags);
 
-               if (context_chipset(ctx) >= 0x17) {
+               if (context_eng3d(ctx)->oclass >= NV17_3D_CLASS) {
                        setup_hierz_buffer(ctx);
                        context_dirty(ctx, ZCLEAR);
                }
index bd4a78e1bdb3ac2911f2787acacf4d71ae6656d1..da414a0b06b84ac133035b0c8b92d4bc6a90d2a7 100644 (file)
@@ -28,6 +28,7 @@
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
 #include "nouveau_util.h"
+#include "nv_object.xml.h"
 #include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
@@ -120,7 +121,7 @@ nv10_emit_logic_opcode(struct gl_context *ctx, int emit)
        struct nouveau_pushbuf *push = context_push(ctx);
 
        assert(!ctx->Color.ColorLogicOpEnabled
-              || context_chipset(ctx) >= 0x11);
+              || context_eng3d(ctx)->oclass >= NV15_3D_CLASS);
 
        BEGIN_NV04(push, NV11_3D(COLOR_LOGIC_OP_ENABLE), 2);
        PUSH_DATAb(push, ctx->Color.ColorLogicOpEnabled);