anv: anv: refactor error handling in anv_shader_bin_write_to_blob()

v2: blob manages error state internally, just return
    true if errors did not occur (Jason)

CID: 1442546
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Tapani Pälli
2019-02-14 10:12:49 +02:00
parent 30a01cd923
commit 886cee1f96

View File

@@ -127,44 +127,42 @@ static bool
anv_shader_bin_write_to_blob(const struct anv_shader_bin *shader,
struct blob *blob)
{
bool ok;
blob_write_uint32(blob, shader->key->size);
blob_write_bytes(blob, shader->key->data, shader->key->size);
ok = blob_write_uint32(blob, shader->key->size);
ok = blob_write_bytes(blob, shader->key->data, shader->key->size);
blob_write_uint32(blob, shader->kernel_size);
blob_write_bytes(blob, shader->kernel.map, shader->kernel_size);
ok = blob_write_uint32(blob, shader->kernel_size);
ok = 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);
ok = blob_write_uint32(blob, shader->constant_data_size);
ok = blob_write_bytes(blob, shader->constant_data.map,
shader->constant_data_size);
ok = blob_write_uint32(blob, shader->prog_data_size);
ok = blob_write_bytes(blob, shader->prog_data, shader->prog_data_size);
ok = blob_write_bytes(blob, shader->prog_data->param,
shader->prog_data->nr_params *
sizeof(*shader->prog_data->param));
blob_write_uint32(blob, shader->prog_data_size);
blob_write_bytes(blob, shader->prog_data, shader->prog_data_size);
blob_write_bytes(blob, shader->prog_data->param,
shader->prog_data->nr_params *
sizeof(*shader->prog_data->param));
if (shader->xfb_info) {
uint32_t xfb_info_size =
nir_xfb_info_size(shader->xfb_info->output_count);
ok = blob_write_uint32(blob, xfb_info_size);
ok = blob_write_bytes(blob, shader->xfb_info, xfb_info_size);
blob_write_uint32(blob, xfb_info_size);
blob_write_bytes(blob, shader->xfb_info, xfb_info_size);
} else {
ok = blob_write_uint32(blob, 0);
blob_write_uint32(blob, 0);
}
ok = blob_write_uint32(blob, shader->bind_map.surface_count);
ok = blob_write_uint32(blob, shader->bind_map.sampler_count);
ok = blob_write_uint32(blob, shader->bind_map.image_count);
ok = blob_write_bytes(blob, shader->bind_map.surface_to_descriptor,
shader->bind_map.surface_count *
sizeof(*shader->bind_map.surface_to_descriptor));
ok = blob_write_bytes(blob, shader->bind_map.sampler_to_descriptor,
shader->bind_map.sampler_count *
sizeof(*shader->bind_map.sampler_to_descriptor));
blob_write_uint32(blob, shader->bind_map.surface_count);
blob_write_uint32(blob, shader->bind_map.sampler_count);
blob_write_uint32(blob, shader->bind_map.image_count);
blob_write_bytes(blob, shader->bind_map.surface_to_descriptor,
shader->bind_map.surface_count *
sizeof(*shader->bind_map.surface_to_descriptor));
blob_write_bytes(blob, shader->bind_map.sampler_to_descriptor,
shader->bind_map.sampler_count *
sizeof(*shader->bind_map.sampler_to_descriptor));
return ok;
return !blob->out_of_memory;
}
static struct anv_shader_bin *