- return anv_shader_bin_size(shader->prog_data_size,
- shader->prog_data->nr_params, shader->key->size,
- shader->bind_map.surface_count,
- shader->bind_map.sampler_count) +
- align_u32(shader->kernel_size, 8);
+ bool ok;
+
+ ok = blob_write_uint32(blob, shader->key->size);
+ ok = blob_write_bytes(blob, shader->key->data, shader->key->size);
+
+ ok = blob_write_uint32(blob, shader->kernel_size);
+ ok = blob_write_bytes(blob, shader->kernel.map, shader->kernel_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));
+
+ 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));
+
+ return ok;