swrast: add dri2ConfigQueryExtension to the correct extension list
[mesa.git] / src / mesa / drivers / dri / nouveau / nv10_state_raster.c
index 8b08c7519d01d1b6896e01778fda5c2737026659..d537f7bc22901e8a1321dc8710c0ffd39a085520 100644 (file)
 #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"
 
+#include "main/stencil.h"
+
 void
 nv10_emit_alpha_func(struct gl_context *ctx, int emit)
 {
@@ -94,11 +97,12 @@ void
 nv10_emit_depth(struct gl_context *ctx, int emit)
 {
        struct nouveau_pushbuf *push = context_push(ctx);
+       struct gl_framebuffer *fb = ctx->DrawBuffer;
 
        BEGIN_NV04(push, NV10_3D(DEPTH_TEST_ENABLE), 1);
-       PUSH_DATAb(push, ctx->Depth.Test);
+       PUSH_DATAb(push, ctx->Depth.Test && fb->Visual.depthBits > 0);
        BEGIN_NV04(push, NV10_3D(DEPTH_WRITE_ENABLE), 1);
-       PUSH_DATAb(push, ctx->Depth.Mask);
+       PUSH_DATAb(push, ctx->Depth.Mask && fb->Visual.depthBits > 0);
        BEGIN_NV04(push, NV10_3D(DEPTH_FUNC), 1);
        PUSH_DATA (push, nvgl_comparison_op(ctx->Depth.Func));
 }
@@ -118,7 +122,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);
@@ -141,11 +145,11 @@ nv10_emit_stencil_func(struct gl_context *ctx, int emit)
        struct nouveau_pushbuf *push = context_push(ctx);
 
        BEGIN_NV04(push, NV10_3D(STENCIL_ENABLE), 1);
-       PUSH_DATAb(push, ctx->Stencil.Enabled);
+       PUSH_DATAb(push, _mesa_stencil_is_enabled(ctx));
 
        BEGIN_NV04(push, NV10_3D(STENCIL_FUNC_FUNC), 3);
        PUSH_DATA (push, nvgl_comparison_op(ctx->Stencil.Function[0]));
-       PUSH_DATA (push, ctx->Stencil.Ref[0]);
+       PUSH_DATA (push, _mesa_get_stencil_ref(ctx, 0));
        PUSH_DATA (push, ctx->Stencil.ValueMask[0]);
 }