llvmpipe: introduce new state dirty tracking for compute.
authorDave Airlie <airlied@redhat.com>
Tue, 27 Aug 2019 04:43:33 +0000 (14:43 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 4 Sep 2019 05:22:20 +0000 (15:22 +1000)
Compute doesn't share dirty state with the fragment pipeline
so create a separate path for it.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/drivers/llvmpipe/lp_context.h
src/gallium/drivers/llvmpipe/lp_state.h
src/gallium/drivers/llvmpipe/lp_state_cs.c

index f1c2d40..1fd0d0a 100644 (file)
@@ -104,7 +104,7 @@ struct llvmpipe_context {
    unsigned active_occlusion_queries;
 
    unsigned dirty; /**< Mask of LP_NEW_x flags */
-
+   unsigned cs_dirty; /**< Mask of LP_CSNEW_x flags */
    /** Mapped vertex buffers */
    ubyte *mapped_vbuffer[PIPE_MAX_ATTRIBS];
    
index 46885a7..8f22deb 100644 (file)
@@ -59,6 +59,7 @@
 #define LP_NEW_FS_SSBOS      0x80000
 #define LP_NEW_FS_IMAGES    0x100000
 
+#define LP_CSNEW_CS 0x1
 
 struct vertex_info;
 struct pipe_context;
index cc515c4..0da8626 100644 (file)
@@ -61,6 +61,7 @@ llvmpipe_bind_compute_state(struct pipe_context *pipe,
       return;
 
    llvmpipe->cs = (struct lp_compute_shader *)cs;
+   llvmpipe->cs_dirty |= LP_CSNEW_CS;
 }
 
 /**