Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6244>
struct anv_shader_bin *bin =
anv_pipeline_cache_upload_kernel(&device->default_pipeline_cache, stage,
key, key_size, kernel, kernel_size,
struct anv_shader_bin *bin =
anv_pipeline_cache_upload_kernel(&device->default_pipeline_cache, stage,
key, key_size, kernel, kernel_size,
prog_data, prog_data_size,
NULL, 0, NULL, &bind_map);
prog_data, prog_data_size,
NULL, 0, NULL, &bind_map);
sizeof(stages[s].cache_key),
stages[s].code,
stages[s].prog_data.base.program_size,
sizeof(stages[s].cache_key),
stages[s].code,
stages[s].prog_data.base.program_size,
- stages[s].nir->constant_data,
- stages[s].nir->constant_data_size,
&stages[s].prog_data.base,
brw_prog_data_size(s),
stages[s].stats, stages[s].num_stats,
&stages[s].prog_data.base,
brw_prog_data_size(s),
stages[s].stats, stages[s].num_stats,
MESA_SHADER_COMPUTE,
&stage.cache_key, sizeof(stage.cache_key),
stage.code, code_size,
MESA_SHADER_COMPUTE,
&stage.cache_key, sizeof(stage.cache_key),
stage.code, code_size,
- stage.nir->constant_data,
- stage.nir->constant_data_size,
&stage.prog_data.base,
sizeof(stage.prog_data.cs),
stage.stats, stage.num_stats,
&stage.prog_data.base,
sizeof(stage.prog_data.cs),
stage.stats, stage.num_stats,
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
- const void *constant_data, uint32_t constant_data_size,
const struct brw_stage_prog_data *prog_data_in,
uint32_t prog_data_size,
const struct brw_compile_stats *stats, uint32_t num_stats,
const struct brw_stage_prog_data *prog_data_in,
uint32_t prog_data_size,
const struct brw_compile_stats *stats, uint32_t num_stats,
memcpy(shader->kernel.map, kernel_data, kernel_size);
shader->kernel_size = kernel_size;
memcpy(shader->kernel.map, kernel_data, kernel_size);
shader->kernel_size = kernel_size;
- if (constant_data_size) {
- shader->constant_data =
- anv_state_pool_alloc(&device->dynamic_state_pool,
- constant_data_size, 32);
- memcpy(shader->constant_data.map, constant_data, constant_data_size);
- } else {
- shader->constant_data = ANV_STATE_NULL;
- }
- shader->constant_data_size = constant_data_size;
-
memcpy(prog_data, prog_data_in, prog_data_size);
memset(prog_data_param, 0,
prog_data->nr_params * sizeof(*prog_data_param));
memcpy(prog_data, prog_data_in, prog_data_size);
memset(prog_data_param, 0,
prog_data->nr_params * sizeof(*prog_data_param));
{
assert(shader->ref_cnt == 0);
anv_state_pool_free(&device->instruction_state_pool, shader->kernel);
{
assert(shader->ref_cnt == 0);
anv_state_pool_free(&device->instruction_state_pool, shader->kernel);
- anv_state_pool_free(&device->dynamic_state_pool, shader->constant_data);
vk_free(&device->vk.alloc, shader);
}
vk_free(&device->vk.alloc, shader);
}
blob_write_uint32(blob, shader->kernel_size);
blob_write_bytes(blob, shader->kernel.map, shader->kernel_size);
blob_write_uint32(blob, shader->kernel_size);
blob_write_bytes(blob, shader->kernel.map, shader->kernel_size);
- blob_write_uint32(blob, shader->constant_data_size);
- blob_write_bytes(blob, shader->constant_data.map,
- shader->constant_data_size);
-
blob_write_uint32(blob, shader->prog_data_size);
blob_write_bytes(blob, shader->prog_data, shader->prog_data_size);
blob_write_uint32(blob, shader->prog_data_size);
blob_write_bytes(blob, shader->prog_data, shader->prog_data_size);
uint32_t kernel_size = blob_read_uint32(blob);
const void *kernel_data = blob_read_bytes(blob, kernel_size);
uint32_t kernel_size = blob_read_uint32(blob);
const void *kernel_data = blob_read_bytes(blob, kernel_size);
- uint32_t constant_data_size = blob_read_uint32(blob);
- const void *constant_data = blob_read_bytes(blob, constant_data_size);
-
uint32_t prog_data_size = blob_read_uint32(blob);
const struct brw_stage_prog_data *prog_data =
blob_read_bytes(blob, prog_data_size);
uint32_t prog_data_size = blob_read_uint32(blob);
const struct brw_stage_prog_data *prog_data =
blob_read_bytes(blob, prog_data_size);
return anv_shader_bin_create(device, stage,
key_data, key_size,
kernel_data, kernel_size,
return anv_shader_bin_create(device, stage,
key_data, key_size,
kernel_data, kernel_size,
- constant_data, constant_data_size,
prog_data, prog_data_size,
stats, num_stats, xfb_info, &bind_map);
}
prog_data, prog_data_size,
stats, num_stats, xfb_info, &bind_map);
}
const void *key_data, uint32_t key_size,
const void *kernel_data,
uint32_t kernel_size,
const void *key_data, uint32_t key_size,
const void *kernel_data,
uint32_t kernel_size,
- const void *constant_data,
- uint32_t constant_data_size,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
anv_shader_bin_create(cache->device, stage,
key_data, key_size,
kernel_data, kernel_size,
anv_shader_bin_create(cache->device, stage,
key_data, key_size,
kernel_data, kernel_size,
- constant_data, constant_data_size,
prog_data, prog_data_size,
stats, num_stats, xfb_info, bind_map);
if (!bin)
prog_data, prog_data_size,
stats, num_stats, xfb_info, bind_map);
if (!bin)
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
- const void *constant_data,
- uint32_t constant_data_size,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
struct anv_shader_bin *bin =
anv_pipeline_cache_add_shader_locked(cache, stage, key_data, key_size,
kernel_data, kernel_size,
struct anv_shader_bin *bin =
anv_pipeline_cache_add_shader_locked(cache, stage, key_data, key_size,
kernel_data, kernel_size,
- constant_data, constant_data_size,
prog_data, prog_data_size,
stats, num_stats,
xfb_info, bind_map);
prog_data, prog_data_size,
stats, num_stats,
xfb_info, bind_map);
return anv_shader_bin_create(cache->device, stage,
key_data, key_size,
kernel_data, kernel_size,
return anv_shader_bin_create(cache->device, stage,
key_data, key_size,
kernel_data, kernel_size,
- constant_data, constant_data_size,
prog_data, prog_data_size,
stats, num_stats,
xfb_info, bind_map);
prog_data, prog_data_size,
stats, num_stats,
xfb_info, bind_map);
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
- const void *constant_data,
- uint32_t constant_data_size,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
if (cache) {
bin = anv_pipeline_cache_upload_kernel(cache, stage, key_data, key_size,
kernel_data, kernel_size,
if (cache) {
bin = anv_pipeline_cache_upload_kernel(cache, stage, key_data, key_size,
kernel_data, kernel_size,
- constant_data, constant_data_size,
prog_data, prog_data_size,
stats, num_stats,
xfb_info, bind_map);
} else {
bin = anv_shader_bin_create(device, stage, key_data, key_size,
kernel_data, kernel_size,
prog_data, prog_data_size,
stats, num_stats,
xfb_info, bind_map);
} else {
bin = anv_shader_bin_create(device, stage, key_data, key_size,
kernel_data, kernel_size,
- constant_data, constant_data_size,
prog_data, prog_data_size,
stats, num_stats,
xfb_info, bind_map);
prog_data, prog_data_size,
stats, num_stats,
xfb_info, bind_map);
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
- const void *constant_data,
- uint32_t constant_data_size,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
gl_shader_stage stage,
const void *key_data, uint32_t key_size,
const void *kernel_data, uint32_t kernel_size,
- const void *constant_data,
- uint32_t constant_data_size,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats,
struct anv_state kernel;
uint32_t kernel_size;
struct anv_state kernel;
uint32_t kernel_size;
- struct anv_state constant_data;
- uint32_t constant_data_size;
-
const struct brw_stage_prog_data *prog_data;
uint32_t prog_data_size;
const struct brw_stage_prog_data *prog_data;
uint32_t prog_data_size;
gl_shader_stage stage,
const void *key, uint32_t key_size,
const void *kernel, uint32_t kernel_size,
gl_shader_stage stage,
const void *key, uint32_t key_size,
const void *kernel, uint32_t kernel_size,
- const void *constant_data, uint32_t constant_data_size,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats, uint32_t num_stats,
const struct brw_stage_prog_data *prog_data,
uint32_t prog_data_size,
const struct brw_compile_stats *stats, uint32_t num_stats,
anv_cmd_buffer_alloc_surface_state(cmd_buffer);
struct anv_address constant_data = {
anv_cmd_buffer_alloc_surface_state(cmd_buffer);
struct anv_address constant_data = {
- .bo = cmd_buffer->device->dynamic_state_pool.block_pool.bo,
- .offset = shader->constant_data.offset,
+ .bo = cmd_buffer->device->instruction_state_pool.block_pool.bo,
+ .offset = shader->kernel.offset +
+ shader->prog_data->const_data_offset,
- unsigned constant_data_size = shader->constant_data_size;
+ unsigned constant_data_size = shader->prog_data->const_data_size;
const enum isl_format format =
anv_isl_format_for_descriptor_type(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
const enum isl_format format =
anv_isl_format_for_descriptor_type(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER);