diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index 6b2d4755494..8eb9b2afe7e 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -872,9 +872,7 @@ struct panvk_pipeline { struct { unsigned ubo_idx; - mali_ptr ubo; struct panfrost_sysvals ids; - uint32_t dirty_mask; } sysvals[MESA_SHADER_STAGES]; unsigned tls_size; diff --git a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c index 15795af17ab..7a95a07dfbd 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c @@ -398,8 +398,7 @@ panvk_cmd_prepare_sysvals(struct panvk_cmd_buffer *cmdbuf, for (unsigned i = 0; i < ARRAY_SIZE(desc_state->sysvals); i++) { unsigned sysval_count = pipeline->sysvals[i].ids.sysval_count; - if (!sysval_count || pipeline->sysvals[i].ubo || - (desc_state->sysvals[i] && !(dirty & pipeline->sysvals[i].dirty_mask))) + if (!sysval_count || desc_state->sysvals[i]) continue; struct panfrost_ptr sysvals = diff --git a/src/panfrost/vulkan/panvk_vX_cs.c b/src/panfrost/vulkan/panvk_vX_cs.c index c4643e014ec..1552899e891 100644 --- a/src/panfrost/vulkan/panvk_vX_cs.c +++ b/src/panfrost/vulkan/panvk_vX_cs.c @@ -422,7 +422,7 @@ panvk_per_arch(emit_ubos)(const struct panvk_pipeline *pipeline, if (!pipeline->sysvals[i].ids.sysval_count) continue; - panvk_per_arch(emit_ubo)(pipeline->sysvals[i].ubo ? : state->sysvals[i], + panvk_per_arch(emit_ubo)(state->sysvals[i], pipeline->sysvals[i].ids.sysval_count * 16, &ubos[pipeline->sysvals[i].ubo_idx]); } diff --git a/src/panfrost/vulkan/panvk_vX_pipeline.c b/src/panfrost/vulkan/panvk_vX_pipeline.c index ce737e6ebf9..d32d804f225 100644 --- a/src/panfrost/vulkan/panvk_vX_pipeline.c +++ b/src/panfrost/vulkan/panvk_vX_pipeline.c @@ -58,7 +58,6 @@ struct panvk_pipeline_builder struct { uint32_t shader_offset; uint32_t rsd_offset; - uint32_t sysvals_offset; } stages[MESA_SHADER_STAGES]; uint32_t blend_shader_offsets[MAX_RTS]; uint32_t shader_total_size; @@ -233,41 +232,6 @@ panvk_pipeline_builder_alloc_static_state_bo(struct panvk_pipeline_builder *buil bo_size += pan_size(VIEWPORT); } - for (uint32_t i = 0; i < MESA_SHADER_STAGES; i++) { - const struct panvk_shader *shader = builder->shaders[i]; - if (!shader || !shader->info.sysvals.sysval_count) - continue; - - bool static_sysvals = true; - for (unsigned s = 0; s < shader->info.sysvals.sysval_count; s++) { - unsigned id = shader->info.sysvals.sysvals[i]; - static_sysvals &= panvk_pipeline_static_sysval(pipeline, id); - switch (PAN_SYSVAL_TYPE(id)) { - case PAN_SYSVAL_VIEWPORT_SCALE: - case PAN_SYSVAL_VIEWPORT_OFFSET: - pipeline->sysvals[i].dirty_mask |= PANVK_DYNAMIC_VIEWPORT; - break; - case PAN_SYSVAL_SSBO: - pipeline->sysvals[i].dirty_mask |= PANVK_DYNAMIC_SSBO; - break; - case PAN_SYSVAL_VERTEX_INSTANCE_OFFSETS: - pipeline->sysvals[i].dirty_mask |= PANVK_DYNAMIC_VERTEX_INSTANCE_OFFSETS; - break; - default: - break; - } - } - - if (!static_sysvals) { - builder->stages[i].sysvals_offset = ~0; - continue; - } - - bo_size = ALIGN_POT(bo_size, 16); - builder->stages[i].sysvals_offset = bo_size; - bo_size += shader->info.sysvals.sysval_count * 16; - } - if (bo_size) { pipeline->state_bo = panfrost_bo_create(pdev, bo_size, 0, "Pipeline descriptors"); @@ -275,25 +239,6 @@ panvk_pipeline_builder_alloc_static_state_bo(struct panvk_pipeline_builder *buil } } -static void -panvk_pipeline_builder_upload_sysval(struct panvk_pipeline_builder *builder, - struct panvk_pipeline *pipeline, - unsigned id, union panvk_sysval_data *data) -{ - switch (PAN_SYSVAL_TYPE(id)) { - case PAN_SYSVAL_VIEWPORT_SCALE: - panvk_sysval_upload_viewport_scale(builder->create_info.gfx->pViewportState->pViewports, - data); - break; - case PAN_SYSVAL_VIEWPORT_OFFSET: - panvk_sysval_upload_viewport_offset(builder->create_info.gfx->pViewportState->pViewports, - data); - break; - default: - unreachable("Invalid static sysval"); - } -} - static void panvk_pipeline_builder_init_sysvals(struct panvk_pipeline_builder *builder, struct panvk_pipeline *pipeline, @@ -303,24 +248,6 @@ panvk_pipeline_builder_init_sysvals(struct panvk_pipeline_builder *builder, pipeline->sysvals[stage].ids = shader->info.sysvals; pipeline->sysvals[stage].ubo_idx = shader->sysval_ubo; - - if (!shader->info.sysvals.sysval_count || - builder->stages[stage].sysvals_offset == ~0) - return; - - union panvk_sysval_data *static_data = - pipeline->state_bo->ptr.cpu + builder->stages[stage].sysvals_offset; - - pipeline->sysvals[stage].ubo = - pipeline->state_bo->ptr.gpu + builder->stages[stage].sysvals_offset; - - for (unsigned i = 0; i < shader->info.sysvals.sysval_count; i++) { - unsigned id = shader->info.sysvals.sysvals[i]; - - panvk_pipeline_builder_upload_sysval(builder, - pipeline, - id, &static_data[i]); - } } static void