nv50: crappy state validate/emit function
authorBen Skeggs <skeggsb@gmail.com>
Tue, 11 Mar 2008 15:59:20 +0000 (02:59 +1100)
committerBen Skeggs <skeggsb@gmail.com>
Tue, 11 Mar 2008 15:59:42 +0000 (02:59 +1100)
Just for testing stateobjs to make sure they don't hang the engine.

src/gallium/drivers/nv50/Makefile
src/gallium/drivers/nv50/nv50_context.h
src/gallium/drivers/nv50/nv50_state_validate.c [new file with mode: 0644]
src/gallium/drivers/nv50/nv50_vbo.c

index 1c0b82887a15078783778edd33948433a0afa397..a62a4d961bc4616771fadbf81d4a07b77ade810f 100644 (file)
@@ -11,6 +11,7 @@ DRIVER_SOURCES = \
        nv50_query.c \
        nv50_screen.c \
        nv50_state.c \
+       nv50_state_validate.c \
        nv50_surface.c \
        nv50_vbo.c
 
index 6096818d40d81ab4f9110ae4a8aa2184a938b73e..98b9aba07964c45c7283be31b86fa8858aadaeb4 100644 (file)
@@ -70,4 +70,6 @@ extern boolean nv50_draw_elements(struct pipe_context *pipe,
 extern void nv50_clear(struct pipe_context *pipe, struct pipe_surface *ps,
                       unsigned clearValue);
 
+extern boolean nv50_state_validate(struct nv50_context *nv50);
+
 #endif
diff --git a/src/gallium/drivers/nv50/nv50_state_validate.c b/src/gallium/drivers/nv50/nv50_state_validate.c
new file mode 100644 (file)
index 0000000..a89d152
--- /dev/null
@@ -0,0 +1,14 @@
+#include "nv50_context.h"
+#include "nouveau/nouveau_stateobj.h"
+
+boolean
+nv50_state_validate(struct nv50_context *nv50)
+{
+       struct nouveau_winsys *nvws = nv50->screen->nvws;
+
+       if (nv50->dirty & NV50_NEW_BLEND)
+               so_emit(nvws, nv50->blend->so);
+
+       return TRUE;
+}
+
index 6c0dc23a439cddfc2a06037032296c949d6bcd6d..b01ce1d42c557cc8898ae3c017cd54072a0237d4 100644 (file)
@@ -9,6 +9,10 @@ boolean
 nv50_draw_arrays(struct pipe_context *pipe, unsigned mode, unsigned start,
                 unsigned count)
 {
+       struct nv50_context *nv50 = nv50_context(pipe);
+
+       nv50_state_validate(nv50);
+
        NOUVEAU_ERR("unimplemented\n");
        return TRUE;
 }
@@ -18,6 +22,10 @@ nv50_draw_elements(struct pipe_context *pipe,
                   struct pipe_buffer *indexBuffer, unsigned indexSize,
                   unsigned mode, unsigned start, unsigned count)
 {
+       struct nv50_context *nv50 = nv50_context(pipe);
+
+       nv50_state_validate(nv50);
+
        NOUVEAU_ERR("unimplemented\n");
        return TRUE;
 }