evergreeng: protect against null constant buffers
authorKeith Whitwell <keithw@vmware.com>
Wed, 3 Nov 2010 10:24:28 +0000 (10:24 +0000)
committerKeith Whitwell <keithw@vmware.com>
Wed, 3 Nov 2010 10:55:22 +0000 (10:55 +0000)
Should do better than this and actually unbind the buffer, but haven't
yet gotten it to work.

src/gallium/drivers/r600/evergreen_state.c

index 722234850676ac6464670eedf101a8ad1a830b43..ce8e93a1d2555ef68e9ff19cce36da9867846698 100644 (file)
@@ -826,6 +826,13 @@ static void evergreen_set_constant_buffer(struct pipe_context *ctx, uint shader,
        struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
        struct r600_resource *rbuffer = (struct r600_resource*)buffer;
 
+       /* Note that the state tracker can unbind constant buffers by
+        * passing NULL here.
+        */
+       if (buffer == NULL) {
+               return;
+       }
+
        switch (shader) {
        case PIPE_SHADER_VERTEX:
                rctx->vs_const_buffer.nregs = 0;