projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mesa: GL_EXT_texture_norm16 extension plumbing
[mesa.git]
/
src
/
compiler
/
glsl
/
serialize.cpp
diff --git
a/src/compiler/glsl/serialize.cpp
b/src/compiler/glsl/serialize.cpp
index 63ce41d87bdc2ba6f91060ea8973f92d191c00d9..727822633df4d6a27c43feebe04dd6c2ae83bf50 100644
(file)
--- a/
src/compiler/glsl/serialize.cpp
+++ b/
src/compiler/glsl/serialize.cpp
@@
-950,6
+950,7
@@
write_shader_parameters(struct blob *metadata,
struct gl_program_parameter_list *params)
{
blob_write_uint32(metadata, params->NumParameters);
struct gl_program_parameter_list *params)
{
blob_write_uint32(metadata, params->NumParameters);
+ blob_write_uint32(metadata, params->NumParameterValues);
uint32_t i = 0;
while (i < params->NumParameters) {
uint32_t i = 0;
while (i < params->NumParameters) {
@@
-966,7
+967,10
@@
write_shader_parameters(struct blob *metadata,
}
blob_write_bytes(metadata, params->ParameterValues,
}
blob_write_bytes(metadata, params->ParameterValues,
- sizeof(gl_constant_value) * 4 * params->NumParameters);
+ sizeof(gl_constant_value) * params->NumParameterValues);
+
+ blob_write_bytes(metadata, params->ParameterValueOffset,
+ sizeof(uint32_t) * params->NumParameters);
blob_write_uint32(metadata, params->StateFlags);
}
blob_write_uint32(metadata, params->StateFlags);
}
@@
-975,9
+979,10
@@
static void
read_shader_parameters(struct blob_reader *metadata,
struct gl_program_parameter_list *params)
{
read_shader_parameters(struct blob_reader *metadata,
struct gl_program_parameter_list *params)
{
- gl_state_index state_indexes[STATE_LENGTH];
+ gl_state_index
16
state_indexes[STATE_LENGTH];
uint32_t i = 0;
uint32_t num_parameters = blob_read_uint32(metadata);
uint32_t i = 0;
uint32_t num_parameters = blob_read_uint32(metadata);
+ uint32_t num_parameters_values = blob_read_uint32(metadata);
_mesa_reserve_parameter_storage(params, num_parameters);
while (i < num_parameters) {
_mesa_reserve_parameter_storage(params, num_parameters);
while (i < num_parameters) {
@@
-989,13
+994,16
@@
read_shader_parameters(struct blob_reader *metadata,
sizeof(state_indexes));
_mesa_add_parameter(params, type, name, size, data_type,
sizeof(state_indexes));
_mesa_add_parameter(params, type, name, size, data_type,
- NULL, state_indexes);
+ NULL, state_indexes
, false
);
i++;
}
blob_copy_bytes(metadata, (uint8_t *) params->ParameterValues,
i++;
}
blob_copy_bytes(metadata, (uint8_t *) params->ParameterValues,
- sizeof(gl_constant_value) * 4 * params->NumParameters);
+ sizeof(gl_constant_value) * num_parameters_values);
+
+ blob_copy_bytes(metadata, (uint8_t *) params->ParameterValueOffset,
+ sizeof(uint32_t) * num_parameters);
params->StateFlags = blob_read_uint32(metadata);
}
params->StateFlags = blob_read_uint32(metadata);
}
@@
-1163,6
+1171,8
@@
extern "C" void
serialize_glsl_program(struct blob *blob, struct gl_context *ctx,
struct gl_shader_program *prog)
{
serialize_glsl_program(struct blob *blob, struct gl_context *ctx,
struct gl_shader_program *prog)
{
+ blob_write_bytes(blob, prog->data->sha1, sizeof(prog->data->sha1));
+
write_uniforms(blob, prog);
write_hash_tables(blob, prog);
write_uniforms(blob, prog);
write_hash_tables(blob, prog);
@@
-1219,6
+1229,8
@@
deserialize_glsl_program(struct blob_reader *blob, struct gl_context *ctx,
assert(prog->data->UniformStorage == NULL);
assert(prog->data->UniformStorage == NULL);
+ blob_copy_bytes(blob, prog->data->sha1, sizeof(prog->data->sha1));
+
read_uniforms(blob, prog);
read_hash_tables(blob, prog);
read_uniforms(blob, prog);
read_hash_tables(blob, prog);