ac/nir, radv, radeonsi: Switch to using ac_shader_args
[mesa.git] / src / gallium / drivers / radeonsi / si_compute.h
index 57c0bde4aca13a0b99935d702963f7758c6c7c98..5e2883d9e8370b0ec51ac4962aabb0d7ea85cc4a 100644 (file)
 
 #include "si_shader.h"
 
-#define MAX_GLOBAL_BUFFERS 32
-
 struct si_compute {
-       struct pipe_reference reference;
-       struct si_screen *screen;
-       union {
-               struct tgsi_token *tgsi;
-               struct nir_shader *nir;
-       } ir;
-       struct util_queue_fence ready;
-       struct si_compiler_ctx_state compiler_ctx_state;
-
-       /* bitmasks of used descriptor slots */
-       uint32_t active_const_and_shader_buffers;
-       uint64_t active_samplers_and_images;
+       struct si_shader_selector sel;
+       struct si_shader shader;
 
        unsigned ir_type;
        unsigned local_size;
        unsigned private_size;
        unsigned input_size;
-       struct si_shader shader;
 
-       struct pipe_resource *global_buffers[MAX_GLOBAL_BUFFERS];
-       unsigned use_code_object_v2 : 1;
-       unsigned uses_grid_size:1;
-       unsigned uses_bindless_samplers:1;
-       unsigned uses_bindless_images:1;
+       int max_global_buffers;
+       struct pipe_resource **global_buffers;
+
        bool reads_variable_block_size;
        unsigned num_cs_user_data_dwords;
 };
@@ -65,7 +50,7 @@ void si_destroy_compute(struct si_compute *program);
 static inline void
 si_compute_reference(struct si_compute **dst, struct si_compute *src)
 {
-       if (pipe_reference(&(*dst)->reference, &src->reference))
+       if (pipe_reference(&(*dst)->sel.reference, &src->sel.reference))
                si_destroy_compute(*dst);
 
        *dst = src;