From: Caio Marcelo de Oliveira Filho Date: Thu, 12 Mar 2020 21:27:13 +0000 (-0700) Subject: intel/blorp: Plumb the stage through blorp upload_shader X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3dd0d12aa5fefa94123269a541c94cdf57599e34;p=mesa.git intel/blorp: Plumb the stage through blorp upload_shader Vulkan uses that for its own upload function -- even though for BLORP it doesn't really currently care. Neither Iris and i965 makes use of it at the moment. Reviewed-by: Jason Ekstrand Tested-by: Marge Bot Part-of: --- diff --git a/src/gallium/drivers/iris/iris_context.h b/src/gallium/drivers/iris/iris_context.h index 0963601d147..e6a7af1732c 100644 --- a/src/gallium/drivers/iris/iris_context.h +++ b/src/gallium/drivers/iris/iris_context.h @@ -956,7 +956,7 @@ bool iris_blorp_lookup_shader(struct blorp_batch *blorp_batch, uint32_t key_size, uint32_t *kernel_out, void *prog_data_out); -bool iris_blorp_upload_shader(struct blorp_batch *blorp_batch, +bool iris_blorp_upload_shader(struct blorp_batch *blorp_batch, uint32_t stage, const void *key, uint32_t key_size, const void *kernel, uint32_t kernel_size, const struct brw_stage_prog_data *prog_data, diff --git a/src/gallium/drivers/iris/iris_program_cache.c b/src/gallium/drivers/iris/iris_program_cache.c index 2c1224482c2..a46b717dcb6 100644 --- a/src/gallium/drivers/iris/iris_program_cache.c +++ b/src/gallium/drivers/iris/iris_program_cache.c @@ -221,7 +221,7 @@ iris_blorp_lookup_shader(struct blorp_batch *blorp_batch, } bool -iris_blorp_upload_shader(struct blorp_batch *blorp_batch, +iris_blorp_upload_shader(struct blorp_batch *blorp_batch, uint32_t stage, const void *key, uint32_t key_size, const void *kernel, UNUSED uint32_t kernel_size, const struct brw_stage_prog_data *prog_data_templ, diff --git a/src/intel/blorp/blorp.c b/src/intel/blorp/blorp.c index f93662ccae8..60585797ab8 100644 --- a/src/intel/blorp/blorp.c +++ b/src/intel/blorp/blorp.c @@ -292,7 +292,8 @@ blorp_ensure_sf_program(struct blorp_batch *batch, &prog_data_tmp, &vue_map, &program_size); bool result = - blorp->upload_shader(batch, &key, sizeof(key), program, program_size, + blorp->upload_shader(batch, MESA_SHADER_NONE, + &key, sizeof(key), program, program_size, (void *)&prog_data_tmp, sizeof(prog_data_tmp), ¶ms->sf_prog_kernel, ¶ms->sf_prog_data); diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h index afee0a96a8c..9ab537177fb 100644 --- a/src/intel/blorp/blorp.h +++ b/src/intel/blorp/blorp.h @@ -49,6 +49,7 @@ struct blorp_context { const void *key, uint32_t key_size, uint32_t *kernel_out, void *prog_data_out); bool (*upload_shader)(struct blorp_batch *batch, + uint32_t stage, const void *key, uint32_t key_size, const void *kernel, uint32_t kernel_size, const struct brw_stage_prog_data *prog_data, diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c index 8fd46cb5599..1a738edb67c 100644 --- a/src/intel/blorp/blorp_blit.c +++ b/src/intel/blorp/blorp_blit.c @@ -1520,7 +1520,8 @@ brw_blorp_get_blit_kernel(struct blorp_batch *batch, &prog_data); bool result = - blorp->upload_shader(batch, prog_key, sizeof(*prog_key), + blorp->upload_shader(batch, MESA_SHADER_FRAGMENT, + prog_key, sizeof(*prog_key), program, prog_data.base.program_size, &prog_data.base, sizeof(prog_data), ¶ms->wm_prog_kernel, ¶ms->wm_prog_data); diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c index 27299d56869..6999101c58e 100644 --- a/src/intel/blorp/blorp_clear.c +++ b/src/intel/blorp/blorp_clear.c @@ -100,7 +100,8 @@ blorp_params_get_clear_kernel(struct blorp_batch *batch, &prog_data); bool result = - blorp->upload_shader(batch, &blorp_key, sizeof(blorp_key), + blorp->upload_shader(batch, MESA_SHADER_FRAGMENT, + &blorp_key, sizeof(blorp_key), program, prog_data.base.program_size, &prog_data.base, sizeof(prog_data), ¶ms->wm_prog_kernel, ¶ms->wm_prog_data); @@ -192,7 +193,8 @@ blorp_params_get_layer_offset_vs(struct blorp_batch *batch, blorp_compile_vs(blorp, mem_ctx, b.shader, &vs_prog_data); bool result = - blorp->upload_shader(batch, &blorp_key, sizeof(blorp_key), + blorp->upload_shader(batch, MESA_SHADER_VERTEX, + &blorp_key, sizeof(blorp_key), program, vs_prog_data.base.base.program_size, &vs_prog_data.base.base, sizeof(vs_prog_data), ¶ms->vs_prog_kernel, ¶ms->vs_prog_data); @@ -1170,7 +1172,8 @@ blorp_params_get_mcs_partial_resolve_kernel(struct blorp_batch *batch, &prog_data); bool result = - blorp->upload_shader(batch, &blorp_key, sizeof(blorp_key), + blorp->upload_shader(batch, MESA_SHADER_FRAGMENT, + &blorp_key, sizeof(blorp_key), program, prog_data.base.program_size, &prog_data.base, sizeof(prog_data), ¶ms->wm_prog_kernel, ¶ms->wm_prog_data); diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index 1d61b7fc4d5..8cbe6aaaa89 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -51,7 +51,7 @@ lookup_blorp_shader(struct blorp_batch *batch, } static bool -upload_blorp_shader(struct blorp_batch *batch, +upload_blorp_shader(struct blorp_batch *batch, uint32_t stage, const void *key, uint32_t key_size, const void *kernel, uint32_t kernel_size, const struct brw_stage_prog_data *prog_data, @@ -69,12 +69,6 @@ upload_blorp_shader(struct blorp_batch *batch, .sampler_count = 0, }; - /* The stage in anv_shader_bin is only useful for pipeline shaders, so just pass - * a dummy value here so we don't need to change BLORP API. - * - * TODO: Plumb the stage information to BLORP. - */ - gl_shader_stage stage = MESA_SHADER_NONE; struct anv_shader_bin *bin = anv_pipeline_cache_upload_kernel(&device->default_pipeline_cache, stage, key, key_size, kernel, kernel_size, diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c index 33729430638..93ca63ff1a2 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.c +++ b/src/mesa/drivers/dri/i965/brw_blorp.c @@ -53,7 +53,7 @@ brw_blorp_lookup_shader(struct blorp_batch *batch, } static bool -brw_blorp_upload_shader(struct blorp_batch *batch, +brw_blorp_upload_shader(struct blorp_batch *batch, uint32_t stage, const void *key, uint32_t key_size, const void *kernel, uint32_t kernel_size, const struct brw_stage_prog_data *prog_data,