freedreno: Allow UBWC on textures with multiple mipmap levels.
[mesa.git] / src / gallium / drivers / llvmpipe / lp_state_cs.h
index 031c1d317eab77c686d49b8ee12bc8f0d6456c18..8f11889d0eca34250be22c18a82ff1fa6fb66379 100644 (file)
@@ -41,6 +41,8 @@ struct lp_compute_shader_variant_key
 {
    unsigned nr_samplers:8;
    unsigned nr_sampler_views:8;
+   unsigned nr_images:8;
+   struct lp_image_static_state image_state[PIPE_MAX_SHADER_IMAGES];
    struct lp_sampler_static_state state[PIPE_MAX_SHADER_SAMPLER_VIEWS];
 };
 
@@ -79,11 +81,17 @@ struct lp_compute_shader {
    struct lp_cs_variant_list_item variants;
 
    struct lp_tgsi_info info;
+
+   uint32_t req_local_mem;
+
    /* For debugging/profiling purposes */
    unsigned variant_key_size;
    unsigned no;
    unsigned variants_created;
    unsigned variants_cached;
+
+   int max_global_buffers;
+   struct pipe_resource **global_buffers;
 };
 
 struct lp_cs_exec {
@@ -106,6 +114,17 @@ struct lp_cs_context {
       unsigned stored_size;
       const void *stored_data;
    } constants[LP_MAX_TGSI_CONST_BUFFERS];
+
+   /** compute shader buffers */
+   struct {
+      struct pipe_shader_buffer current;
+   } ssbos[LP_MAX_TGSI_SHADER_BUFFERS];
+
+   struct {
+      struct pipe_image_view current;
+   } images[LP_MAX_TGSI_SHADER_IMAGES];
+
+   void *input;
 };
 
 struct lp_cs_context *lp_csctx_create(struct pipe_context *pipe);