summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/freedreno/ir3/ir3_compiler.h2
-rw-r--r--src/freedreno/ir3/ir3_disk_cache.c4
-rw-r--r--src/freedreno/ir3/ir3_shader.c2
-rw-r--r--src/freedreno/ir3/ir3_shader.h2
-rw-r--r--src/freedreno/vulkan/tu_pipeline.cc37
-rw-r--r--src/freedreno/vulkan/tu_pipeline.h6
-rw-r--r--src/gallium/drivers/freedreno/a3xx/fd3_program.c10
-rw-r--r--src/gallium/drivers/freedreno/a3xx/fd3_program.h6
-rw-r--r--src/gallium/drivers/freedreno/a4xx/fd4_program.c10
-rw-r--r--src/gallium/drivers/freedreno/a4xx/fd4_program.h6
-rw-r--r--src/gallium/drivers/freedreno/a5xx/fd5_program.c10
-rw-r--r--src/gallium/drivers/freedreno/a5xx/fd5_program.h6
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_const.cc6
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_const.h2
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_emit.h10
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_program.cc12
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_program.h12
-rw-r--r--src/gallium/drivers/freedreno/ir3/ir3_cache.c4
-rw-r--r--src/gallium/drivers/freedreno/ir3/ir3_cache.h8
19 files changed, 82 insertions, 73 deletions
diff --git a/src/freedreno/ir3/ir3_compiler.h b/src/freedreno/ir3/ir3_compiler.h
index 9eb81958424..892d3627004 100644
--- a/src/freedreno/ir3/ir3_compiler.h
+++ b/src/freedreno/ir3/ir3_compiler.h
@@ -258,7 +258,7 @@ void ir3_disk_cache_init_shader_key(struct ir3_compiler *compiler,
struct ir3_shader_variant *ir3_retrieve_variant(struct blob_reader *blob,
struct ir3_compiler *compiler,
void *mem_ctx);
-void ir3_store_variant(struct blob *blob, struct ir3_shader_variant *v);
+void ir3_store_variant(struct blob *blob, const struct ir3_shader_variant *v);
bool ir3_disk_cache_retrieve(struct ir3_shader *shader,
struct ir3_shader_variant *v);
void ir3_disk_cache_store(struct ir3_shader *shader,
diff --git a/src/freedreno/ir3/ir3_disk_cache.c b/src/freedreno/ir3/ir3_disk_cache.c
index ff73b37a0db..3ca04b05b3d 100644
--- a/src/freedreno/ir3/ir3_disk_cache.c
+++ b/src/freedreno/ir3/ir3_disk_cache.c
@@ -143,7 +143,7 @@ retrieve_variant(struct blob_reader *blob, struct ir3_shader_variant *v)
}
static void
-store_variant(struct blob *blob, struct ir3_shader_variant *v)
+store_variant(struct blob *blob, const struct ir3_shader_variant *v)
{
blob_write_bytes(blob, VARIANT_CACHE_PTR(v), VARIANT_CACHE_SIZE);
@@ -199,7 +199,7 @@ ir3_retrieve_variant(struct blob_reader *blob, struct ir3_compiler *compiler,
}
void
-ir3_store_variant(struct blob *blob, struct ir3_shader_variant *v)
+ir3_store_variant(struct blob *blob, const struct ir3_shader_variant *v)
{
blob_write_bytes(blob, &v->key, sizeof(v->key));
blob_write_uint32(blob, v->type);
diff --git a/src/freedreno/ir3/ir3_shader.c b/src/freedreno/ir3/ir3_shader.c
index c84f4379975..e5b1d94ef62 100644
--- a/src/freedreno/ir3/ir3_shader.c
+++ b/src/freedreno/ir3/ir3_shader.c
@@ -578,7 +578,7 @@ trim_constlens(unsigned *constlens, unsigned first_stage, unsigned last_stage,
* order to satisfy all shared constlen limits.
*/
uint32_t
-ir3_trim_constlen(struct ir3_shader_variant **variants,
+ir3_trim_constlen(const struct ir3_shader_variant **variants,
const struct ir3_compiler *compiler)
{
unsigned constlens[MESA_SHADER_STAGES] = {};
diff --git a/src/freedreno/ir3/ir3_shader.h b/src/freedreno/ir3/ir3_shader.h
index 1ace8840cc0..02e6650cee6 100644
--- a/src/freedreno/ir3/ir3_shader.h
+++ b/src/freedreno/ir3/ir3_shader.h
@@ -965,7 +965,7 @@ struct ir3_shader *
ir3_shader_from_nir(struct ir3_compiler *compiler, nir_shader *nir,
const struct ir3_shader_options *options,
struct ir3_stream_output_info *stream_output);
-uint32_t ir3_trim_constlen(struct ir3_shader_variant **variants,
+uint32_t ir3_trim_constlen(const struct ir3_shader_variant **variants,
const struct ir3_compiler *compiler);
struct ir3_shader *
ir3_shader_passthrough_tcs(struct ir3_shader *vs, unsigned patch_vertices);
diff --git a/src/freedreno/vulkan/tu_pipeline.cc b/src/freedreno/vulkan/tu_pipeline.cc
index 80b7a402e15..b17d661031f 100644
--- a/src/freedreno/vulkan/tu_pipeline.cc
+++ b/src/freedreno/vulkan/tu_pipeline.cc
@@ -252,8 +252,8 @@ struct tu_pipeline_builder
struct tu_compiled_shaders *compiled_shaders;
struct tu_const_state const_state[MESA_SHADER_FRAGMENT + 1];
- struct ir3_shader_variant *variants[MESA_SHADER_FRAGMENT + 1];
- struct ir3_shader_variant *binning_variant;
+ const struct ir3_shader_variant *variants[MESA_SHADER_FRAGMENT + 1];
+ const struct ir3_shader_variant *binning_variant;
uint64_t shader_iova[MESA_SHADER_FRAGMENT + 1];
uint64_t binning_vs_iova;
@@ -2214,7 +2214,7 @@ tu_pipeline_allocate_cs(struct tu_device *dev,
struct tu_pipeline *pipeline,
struct tu_pipeline_layout *layout,
struct tu_pipeline_builder *builder,
- struct ir3_shader_variant *compute)
+ const struct ir3_shader_variant *compute)
{
uint32_t size = 1024;
@@ -2241,7 +2241,7 @@ tu_pipeline_allocate_cs(struct tu_device *dev,
builder->additional_cs_reserve_size = 0;
for (unsigned i = 0; i < ARRAY_SIZE(builder->variants); i++) {
- struct ir3_shader_variant *variant = builder->variants[i];
+ const struct ir3_shader_variant *variant = builder->variants[i];
if (variant) {
builder->additional_cs_reserve_size +=
tu_xs_get_additional_cs_size_dwords(variant);
@@ -2393,7 +2393,8 @@ tu_upload_variant(struct tu_pipeline *pipeline,
}
static void
-tu_append_executable(struct tu_pipeline *pipeline, struct ir3_shader_variant *variant,
+tu_append_executable(struct tu_pipeline *pipeline,\
+ const struct ir3_shader_variant *variant,
char *nir_from_spirv)
{
struct tu_pipeline_executable exe = {
@@ -2598,10 +2599,10 @@ tu_shaders_destroy(struct vk_device *device,
container_of(object, struct tu_compiled_shaders, base);
for (unsigned i = 0; i < ARRAY_SIZE(shaders->variants); i++)
- ralloc_free(shaders->variants[i]);
+ ralloc_free((void *)shaders->variants[i]);
for (unsigned i = 0; i < ARRAY_SIZE(shaders->safe_const_variants); i++)
- ralloc_free(shaders->safe_const_variants[i]);
+ ralloc_free((void *)shaders->safe_const_variants[i]);
vk_pipeline_cache_object_finish(&shaders->base);
vk_free(&device->alloc, shaders);
@@ -2874,7 +2875,7 @@ tu_pipeline_builder_compile_shaders(struct tu_pipeline_builder *builder,
nir_shader *post_link_nir[ARRAY_SIZE(nir)] = { NULL };
struct tu_shader *shaders[ARRAY_SIZE(nir)] = { NULL };
char *nir_initial_disasm[ARRAY_SIZE(stage_infos)] = { NULL };
- struct ir3_shader_variant *safe_const_variants[ARRAY_SIZE(nir)] = { NULL };
+ const struct ir3_shader_variant *safe_const_variants[ARRAY_SIZE(nir)] = { NULL };
struct tu_shader *last_shader = NULL;
uint32_t desc_sets = 0;
@@ -3132,7 +3133,7 @@ tu_pipeline_builder_compile_shaders(struct tu_pipeline_builder *builder,
if (safe_constlens & (1 << stage)) {
int64_t stage_start = os_time_get_nano();
- ralloc_free(compiled_shaders->variants[stage]);
+ ralloc_free((void *)compiled_shaders->variants[stage]);
compiled_shaders->variants[stage] =
ir3_shader_create_variant(shaders[stage]->ir3_shader, &ir3_key,
executable_info);
@@ -3253,10 +3254,10 @@ done:;
}
if (pipeline_contains_all_shader_state(pipeline)) {
- struct ir3_shader_variant *vs =
+ const struct ir3_shader_variant *vs =
builder->variants[MESA_SHADER_VERTEX];
- struct ir3_shader_variant *variant;
+ const struct ir3_shader_variant *variant;
if (!vs->stream_output.num_outputs && ir3_has_binning_vs(&vs->key)) {
tu_append_executable(pipeline, vs->binning, NULL);
variant = vs->binning;
@@ -3448,7 +3449,7 @@ tu_pipeline_builder_parse_layout(struct tu_pipeline_builder *builder,
static void
tu_pipeline_set_linkage(struct tu_program_descriptor_linkage *link,
struct tu_const_state *const_state,
- struct ir3_shader_variant *v)
+ const struct ir3_shader_variant *v)
{
link->const_state = *ir3_const_state(v);
link->tu_const_state = *const_state;
@@ -3494,10 +3495,10 @@ tu_pipeline_builder_parse_shader_stages(struct tu_pipeline_builder *builder,
builder->variants[i]);
}
- struct ir3_shader_variant *vs = builder->variants[MESA_SHADER_VERTEX];
- struct ir3_shader_variant *hs = builder->variants[MESA_SHADER_TESS_CTRL];
- struct ir3_shader_variant *ds = builder->variants[MESA_SHADER_TESS_EVAL];
- struct ir3_shader_variant *gs = builder->variants[MESA_SHADER_GEOMETRY];
+ const struct ir3_shader_variant *vs = builder->variants[MESA_SHADER_VERTEX];
+ const struct ir3_shader_variant *hs = builder->variants[MESA_SHADER_TESS_CTRL];
+ const struct ir3_shader_variant *ds = builder->variants[MESA_SHADER_TESS_EVAL];
+ const struct ir3_shader_variant *gs = builder->variants[MESA_SHADER_GEOMETRY];
if (hs) {
pipeline->program.vs_param_stride = vs->output_size;
pipeline->program.hs_param_stride = hs->output_size;
@@ -3549,7 +3550,7 @@ tu_pipeline_builder_parse_shader_stages(struct tu_pipeline_builder *builder,
}
}
- struct ir3_shader_variant *last_shader;
+ const struct ir3_shader_variant *last_shader;
if (gs)
last_shader = gs;
else if (ds)
@@ -5476,7 +5477,7 @@ tu_compute_pipeline_create(VkDevice device,
TU_FROM_HANDLE(tu_pipeline_layout, layout, pCreateInfo->layout);
const VkPipelineShaderStageCreateInfo *stage_info = &pCreateInfo->stage;
VkResult result;
- struct ir3_shader_variant *v = NULL;
+ const struct ir3_shader_variant *v = NULL;
uint32_t additional_reserve_size = 0;
uint64_t shader_iova = 0;
diff --git a/src/freedreno/vulkan/tu_pipeline.h b/src/freedreno/vulkan/tu_pipeline.h
index 370acb8e169..f5cff9c0e72 100644
--- a/src/freedreno/vulkan/tu_pipeline.h
+++ b/src/freedreno/vulkan/tu_pipeline.h
@@ -65,9 +65,9 @@ struct tu_compiled_shaders
struct tu_const_state const_state[MESA_SHADER_STAGES];
uint8_t active_desc_sets;
- struct ir3_shader_variant *variants[MESA_SHADER_STAGES];
+ const struct ir3_shader_variant *variants[MESA_SHADER_STAGES];
- struct ir3_shader_variant *safe_const_variants[MESA_SHADER_STAGES];
+ const struct ir3_shader_variant *safe_const_variants[MESA_SHADER_STAGES];
};
struct tu_nir_shaders
@@ -218,7 +218,7 @@ struct tu_graphics_lib_pipeline {
nir_shader *nir;
struct tu_shader_key key;
struct tu_const_state const_state;
- struct ir3_shader_variant *variant, *safe_const_variant;
+ const struct ir3_shader_variant *variant, *safe_const_variant;
} shaders[MESA_SHADER_FRAGMENT + 1];
struct ir3_shader_key ir3_key;
diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_program.c b/src/gallium/drivers/freedreno/a3xx/fd3_program.c
index 2219d2e7c4a..23443ee1e8e 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_program.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_program.c
@@ -450,10 +450,12 @@ fd3_program_emit(struct fd_ringbuffer *ring, struct fd3_emit *emit, int nr,
}
static struct ir3_program_state *
-fd3_program_create(void *data, struct ir3_shader_variant *bs,
- struct ir3_shader_variant *vs, struct ir3_shader_variant *hs,
- struct ir3_shader_variant *ds, struct ir3_shader_variant *gs,
- struct ir3_shader_variant *fs,
+fd3_program_create(void *data, const struct ir3_shader_variant *bs,
+ const struct ir3_shader_variant *vs,
+ const struct ir3_shader_variant *hs,
+ const struct ir3_shader_variant *ds,
+ const struct ir3_shader_variant *gs,
+ const struct ir3_shader_variant *fs,
const struct ir3_cache_key *key) in_dt
{
struct fd_context *ctx = fd_context(data);
diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_program.h b/src/gallium/drivers/freedreno/a3xx/fd3_program.h
index cefe1929773..4c8f3c46845 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_program.h
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_program.h
@@ -37,9 +37,9 @@ struct fd3_emit;
struct fd3_program_state {
struct ir3_program_state base;
- struct ir3_shader_variant *bs; /* VS for when emit->binning */
- struct ir3_shader_variant *vs;
- struct ir3_shader_variant *fs; /* FS for when !emit->binning */
+ const struct ir3_shader_variant *bs; /* VS for when emit->binning */
+ const struct ir3_shader_variant *vs;
+ const struct ir3_shader_variant *fs; /* FS for when !emit->binning */
};
static inline struct fd3_program_state *
diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_program.c b/src/gallium/drivers/freedreno/a4xx/fd4_program.c
index d165cebd95a..be1d4a717a5 100644
--- a/src/gallium/drivers/freedreno/a4xx/fd4_program.c
+++ b/src/gallium/drivers/freedreno/a4xx/fd4_program.c
@@ -578,10 +578,12 @@ fd4_program_emit(struct fd_ringbuffer *ring, struct fd4_emit *emit, int nr,
}
static struct ir3_program_state *
-fd4_program_create(void *data, struct ir3_shader_variant *bs,
- struct ir3_shader_variant *vs, struct ir3_shader_variant *hs,
- struct ir3_shader_variant *ds, struct ir3_shader_variant *gs,
- struct ir3_shader_variant *fs,
+fd4_program_create(void *data, const struct ir3_shader_variant *bs,
+ const struct ir3_shader_variant *vs,
+ const struct ir3_shader_variant *hs,
+ const struct ir3_shader_variant *ds,
+ const struct ir3_shader_variant *gs,
+ const struct ir3_shader_variant *fs,
const struct ir3_cache_key *key) in_dt
{
struct fd_context *ctx = fd_context(data);
diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_program.h b/src/gallium/drivers/freedreno/a4xx/fd4_program.h
index 8de10963966..0f1a9ad888b 100644
--- a/src/gallium/drivers/freedreno/a4xx/fd4_program.h
+++ b/src/gallium/drivers/freedreno/a4xx/fd4_program.h
@@ -37,9 +37,9 @@ struct fd4_emit;
struct fd4_program_state {
struct ir3_program_state base;
- struct ir3_shader_variant *bs; /* VS for when emit->binning */
- struct ir3_shader_variant *vs;
- struct ir3_shader_variant *fs; /* FS for when !emit->binning */
+ const struct ir3_shader_variant *bs; /* VS for when emit->binning */
+ const struct ir3_shader_variant *vs;
+ const struct ir3_shader_variant *fs; /* FS for when !emit->binning */
};
static inline struct fd4_program_state *
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_program.c b/src/gallium/drivers/freedreno/a5xx/fd5_program.c
index f2c19c24917..32b97f04c79 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_program.c
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_program.c
@@ -748,10 +748,12 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
}
static struct ir3_program_state *
-fd5_program_create(void *data, struct ir3_shader_variant *bs,
- struct ir3_shader_variant *vs, struct ir3_shader_variant *hs,
- struct ir3_shader_variant *ds, struct ir3_shader_variant *gs,
- struct ir3_shader_variant *fs,
+fd5_program_create(void *data, const struct ir3_shader_variant *bs,
+ const struct ir3_shader_variant *vs,
+ const struct ir3_shader_variant *hs,
+ const struct ir3_shader_variant *ds,
+ const struct ir3_shader_variant *gs,
+ const struct ir3_shader_variant *fs,
const struct ir3_cache_key *key) in_dt
{
struct fd_context *ctx = fd_context(data);
diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_program.h b/src/gallium/drivers/freedreno/a5xx/fd5_program.h
index d6904cc4aa9..2f9906bab08 100644
--- a/src/gallium/drivers/freedreno/a5xx/fd5_program.h
+++ b/src/gallium/drivers/freedreno/a5xx/fd5_program.h
@@ -37,9 +37,9 @@ struct fd5_emit;
struct fd5_program_state {
struct ir3_program_state base;
- struct ir3_shader_variant *bs; /* VS for when emit->binning */
- struct ir3_shader_variant *vs;
- struct ir3_shader_variant *fs; /* FS for when !emit->binning */
+ const struct ir3_shader_variant *bs; /* VS for when emit->binning */
+ const struct ir3_shader_variant *vs;
+ const struct ir3_shader_variant *fs; /* FS for when !emit->binning */
};
static inline struct fd5_program_state *
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_const.cc b/src/gallium/drivers/freedreno/a6xx/fd6_const.cc
index b3d2f460551..a9b876de20e 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_const.cc
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_const.cc
@@ -111,7 +111,7 @@ emit_const_ptrs(struct fd_ringbuffer *ring, const struct ir3_shader_variant *v,
}
static void
-emit_stage_tess_consts(struct fd_ringbuffer *ring, struct ir3_shader_variant *v,
+emit_stage_tess_consts(struct fd_ringbuffer *ring, const struct ir3_shader_variant *v,
uint32_t *params, int num_params)
{
const struct ir3_const_state *const_state = ir3_const_state(v);
@@ -166,7 +166,7 @@ fd6_build_tess_consts(struct fd6_emit *emit)
}
if (emit->gs) {
- struct ir3_shader_variant *prev;
+ const struct ir3_shader_variant *prev;
if (emit->ds)
prev = emit->ds;
else
@@ -229,7 +229,7 @@ fd6_emit_ubos(const struct ir3_shader_variant *v, struct fd_ringbuffer *ring,
}
unsigned
-fd6_user_consts_cmdstream_size(struct ir3_shader_variant *v)
+fd6_user_consts_cmdstream_size(const struct ir3_shader_variant *v)
{
if (!v)
return 0;
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_const.h b/src/gallium/drivers/freedreno/a6xx/fd6_const.h
index 8c277752884..33e059641bc 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_const.h
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_const.h
@@ -28,7 +28,7 @@
#include "fd6_emit.h"
struct fd_ringbuffer *fd6_build_tess_consts(struct fd6_emit *emit) assert_dt;
-unsigned fd6_user_consts_cmdstream_size(struct ir3_shader_variant *v);
+unsigned fd6_user_consts_cmdstream_size(const struct ir3_shader_variant *v);
template <fd6_pipeline_type PIPELINE>
struct fd_ringbuffer *fd6_build_user_consts(struct fd6_emit *emit) assert_dt;
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_emit.h b/src/gallium/drivers/freedreno/a6xx/fd6_emit.h
index d0f7fecb6a6..5fd9e38b0bf 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_emit.h
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_emit.h
@@ -200,11 +200,11 @@ struct fd6_emit {
/* cached to avoid repeated lookups: */
const struct fd6_program_state *prog;
- struct ir3_shader_variant *vs;
- struct ir3_shader_variant *hs;
- struct ir3_shader_variant *ds;
- struct ir3_shader_variant *gs;
- struct ir3_shader_variant *fs;
+ const struct ir3_shader_variant *vs;
+ const struct ir3_shader_variant *hs;
+ const struct ir3_shader_variant *ds;
+ const struct ir3_shader_variant *gs;
+ const struct ir3_shader_variant *fs;
struct fd6_state state;
};
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.cc b/src/gallium/drivers/freedreno/a6xx/fd6_program.cc
index efb9a1b96df..f4f373f1bbe 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_program.cc
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.cc
@@ -285,7 +285,7 @@ setup_stream_out(struct fd_context *ctx, struct fd6_program_state *state,
}
static uint32_t
-sp_xs_config(struct ir3_shader_variant *v)
+sp_xs_config(const struct ir3_shader_variant *v)
{
if (!v)
return 0;
@@ -1312,10 +1312,12 @@ emit_interp_state(struct fd_ringbuffer *ring, const struct fd6_program_state *st
template <chip CHIP>
static struct ir3_program_state *
-fd6_program_create(void *data, struct ir3_shader_variant *bs,
- struct ir3_shader_variant *vs, struct ir3_shader_variant *hs,
- struct ir3_shader_variant *ds, struct ir3_shader_variant *gs,
- struct ir3_shader_variant *fs,
+fd6_program_create(void *data, const struct ir3_shader_variant *bs,
+ const struct ir3_shader_variant *vs,
+ const struct ir3_shader_variant *hs,
+ const struct ir3_shader_variant *ds,
+ const struct ir3_shader_variant *gs,
+ const struct ir3_shader_variant *fs,
const struct ir3_cache_key *key) in_dt
{
struct fd_context *ctx = fd_context((struct pipe_context *)data);
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.h b/src/gallium/drivers/freedreno/a6xx/fd6_program.h
index e7ae12f466e..0ce2f8627c3 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_program.h
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.h
@@ -38,12 +38,12 @@ struct fd6_emit;
struct fd6_program_state {
struct ir3_program_state base;
- struct ir3_shader_variant *bs; /* binning pass vs */
- struct ir3_shader_variant *vs;
- struct ir3_shader_variant *hs;
- struct ir3_shader_variant *ds;
- struct ir3_shader_variant *gs;
- struct ir3_shader_variant *fs;
+ const struct ir3_shader_variant *bs; /* binning pass vs */
+ const struct ir3_shader_variant *vs;
+ const struct ir3_shader_variant *hs;
+ const struct ir3_shader_variant *ds;
+ const struct ir3_shader_variant *gs;
+ const struct ir3_shader_variant *fs;
struct fd_ringbuffer *config_stateobj;
struct fd_ringbuffer *interp_stateobj;
struct fd_ringbuffer *binning_stateobj;
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cache.c b/src/gallium/drivers/freedreno/ir3/ir3_cache.c
index ff39540c41d..351ed52bd52 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_cache.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_cache.c
@@ -117,7 +117,7 @@ ir3_cache_lookup(struct ir3_cache *cache, const struct ir3_cache_key *key,
shaders[MESA_SHADER_TESS_CTRL] = hs;
}
- struct ir3_shader_variant *variants[MESA_SHADER_STAGES];
+ const struct ir3_shader_variant *variants[MESA_SHADER_STAGES];
struct ir3_shader_key shader_key = key->key;
for (gl_shader_stage stage = MESA_SHADER_VERTEX; stage < MESA_SHADER_STAGES;
@@ -146,7 +146,7 @@ ir3_cache_lookup(struct ir3_cache *cache, const struct ir3_cache_key *key,
}
}
- struct ir3_shader_variant *bs;
+ const struct ir3_shader_variant *bs;
if (ir3_has_binning_vs(&key->key)) {
/* starting with a6xx, the same const state is used for binning and draw
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cache.h b/src/gallium/drivers/freedreno/ir3/ir3_cache.h
index cd75f33d462..e29561f5b86 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_cache.h
+++ b/src/gallium/drivers/freedreno/ir3/ir3_cache.h
@@ -61,10 +61,10 @@ struct ir3_program_state {
struct ir3_cache_funcs {
struct ir3_program_state *(*create_state)(
- void *data, struct ir3_shader_variant *bs, /* binning pass vs */
- struct ir3_shader_variant *vs, struct ir3_shader_variant *hs,
- struct ir3_shader_variant *ds, struct ir3_shader_variant *gs,
- struct ir3_shader_variant *fs, const struct ir3_cache_key *key);
+ void *data, const struct ir3_shader_variant *bs, /* binning pass vs */
+ const struct ir3_shader_variant *vs, const struct ir3_shader_variant *hs,
+ const struct ir3_shader_variant *ds, const struct ir3_shader_variant *gs,
+ const struct ir3_shader_variant *fs, const struct ir3_cache_key *key);
void (*destroy_state)(void *data, struct ir3_program_state *state);
};