Lines Matching refs:prog
43 write_subroutines(struct blob *metadata, struct gl_shader_program *prog) in write_subroutines() argument
46 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in write_subroutines()
71 read_subroutines(struct blob_reader *metadata, struct gl_shader_program *prog) in read_subroutines() argument
76 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in read_subroutines()
86 subs = rzalloc_array(prog, struct gl_subroutine_function, in read_subroutines()
91 subs[j].name = ralloc_strdup(prog, blob_read_string (metadata)); in read_subroutines()
95 subs[j].types = rzalloc_array(prog, const struct glsl_type *, in read_subroutines()
122 write_buffer_blocks(struct blob *metadata, struct gl_shader_program *prog) in write_buffer_blocks() argument
124 blob_write_uint32(metadata, prog->data->NumUniformBlocks); in write_buffer_blocks()
125 blob_write_uint32(metadata, prog->data->NumShaderStorageBlocks); in write_buffer_blocks()
127 for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) { in write_buffer_blocks()
128 write_buffer_block(metadata, &prog->data->UniformBlocks[i]); in write_buffer_blocks()
131 for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) { in write_buffer_blocks()
132 write_buffer_block(metadata, &prog->data->ShaderStorageBlocks[i]); in write_buffer_blocks()
136 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in write_buffer_blocks()
147 glprog->sh.UniformBlocks[j] - prog->data->UniformBlocks; in write_buffer_blocks()
153 prog->data->ShaderStorageBlocks; in write_buffer_blocks()
161 struct gl_shader_program *prog) in read_buffer_block() argument
163 b->Name = ralloc_strdup(prog->data, blob_read_string (metadata)); in read_buffer_block()
170 rzalloc_array(prog->data, struct gl_uniform_buffer_variable, in read_buffer_block()
173 b->Uniforms[j].Name = ralloc_strdup(prog->data, in read_buffer_block()
180 b->Uniforms[j].IndexName = ralloc_strdup(prog->data, index_name); in read_buffer_block()
190 struct gl_shader_program *prog) in read_buffer_blocks() argument
192 prog->data->NumUniformBlocks = blob_read_uint32(metadata); in read_buffer_blocks()
193 prog->data->NumShaderStorageBlocks = blob_read_uint32(metadata); in read_buffer_blocks()
195 prog->data->UniformBlocks = in read_buffer_blocks()
196 rzalloc_array(prog->data, struct gl_uniform_block, in read_buffer_blocks()
197 prog->data->NumUniformBlocks); in read_buffer_blocks()
199 prog->data->ShaderStorageBlocks = in read_buffer_blocks()
200 rzalloc_array(prog->data, struct gl_uniform_block, in read_buffer_blocks()
201 prog->data->NumShaderStorageBlocks); in read_buffer_blocks()
203 for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) { in read_buffer_blocks()
204 read_buffer_block(metadata, &prog->data->UniformBlocks[i], prog); in read_buffer_blocks()
207 for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) { in read_buffer_blocks()
208 read_buffer_block(metadata, &prog->data->ShaderStorageBlocks[i], prog); in read_buffer_blocks()
212 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in read_buffer_blocks()
228 glprog->sh.UniformBlocks[j] = prog->data->UniformBlocks + offset; in read_buffer_blocks()
234 prog->data->ShaderStorageBlocks + offset; in read_buffer_blocks()
240 write_atomic_buffers(struct blob *metadata, struct gl_shader_program *prog) in write_atomic_buffers() argument
242 blob_write_uint32(metadata, prog->data->NumAtomicBuffers); in write_atomic_buffers()
245 if (prog->_LinkedShaders[i]) { in write_atomic_buffers()
246 struct gl_program *glprog = prog->_LinkedShaders[i]->Program; in write_atomic_buffers()
251 for (unsigned i = 0; i < prog->data->NumAtomicBuffers; i++) { in write_atomic_buffers()
252 blob_write_uint32(metadata, prog->data->AtomicBuffers[i].Binding); in write_atomic_buffers()
253 blob_write_uint32(metadata, prog->data->AtomicBuffers[i].MinimumSize); in write_atomic_buffers()
254 blob_write_uint32(metadata, prog->data->AtomicBuffers[i].NumUniforms); in write_atomic_buffers()
256 blob_write_bytes(metadata, prog->data->AtomicBuffers[i].StageReferences, in write_atomic_buffers()
257 sizeof(prog->data->AtomicBuffers[i].StageReferences)); in write_atomic_buffers()
259 for (unsigned j = 0; j < prog->data->AtomicBuffers[i].NumUniforms; j++) { in write_atomic_buffers()
260 blob_write_uint32(metadata, prog->data->AtomicBuffers[i].Uniforms[j]); in write_atomic_buffers()
267 struct gl_shader_program *prog) in read_atomic_buffers() argument
269 prog->data->NumAtomicBuffers = blob_read_uint32(metadata); in read_atomic_buffers()
270 prog->data->AtomicBuffers = in read_atomic_buffers()
271 rzalloc_array(prog, gl_active_atomic_buffer, in read_atomic_buffers()
272 prog->data->NumAtomicBuffers); in read_atomic_buffers()
276 if (prog->_LinkedShaders[i]) { in read_atomic_buffers()
277 struct gl_program *glprog = prog->_LinkedShaders[i]->Program; in read_atomic_buffers()
287 for (unsigned i = 0; i < prog->data->NumAtomicBuffers; i++) { in read_atomic_buffers()
288 prog->data->AtomicBuffers[i].Binding = blob_read_uint32(metadata); in read_atomic_buffers()
289 prog->data->AtomicBuffers[i].MinimumSize = blob_read_uint32(metadata); in read_atomic_buffers()
290 prog->data->AtomicBuffers[i].NumUniforms = blob_read_uint32(metadata); in read_atomic_buffers()
293 (uint8_t *) &prog->data->AtomicBuffers[i].StageReferences, in read_atomic_buffers()
294 sizeof(prog->data->AtomicBuffers[i].StageReferences)); in read_atomic_buffers()
296 prog->data->AtomicBuffers[i].Uniforms = rzalloc_array(prog, unsigned, in read_atomic_buffers()
297 prog->data->AtomicBuffers[i].NumUniforms); in read_atomic_buffers()
299 for (unsigned j = 0; j < prog->data->AtomicBuffers[i].NumUniforms; j++) { in read_atomic_buffers()
300 prog->data->AtomicBuffers[i].Uniforms[j] = blob_read_uint32(metadata); in read_atomic_buffers()
304 if (prog->data->AtomicBuffers[i].StageReferences[j]) { in read_atomic_buffers()
305 *stage_buff_list[j] = &prog->data->AtomicBuffers[i]; in read_atomic_buffers()
315 struct gl_program *prog = shProg->last_vert_prog; in write_xfb() local
317 if (!prog) { in write_xfb()
322 struct gl_transform_feedback_info *ltf = prog->sh.LinkedTransformFeedback; in write_xfb()
324 blob_write_uint32(metadata, prog->info.stage); in write_xfb()
382 struct gl_program *prog = shProg->_LinkedShaders[xfb_stage]->Program; in read_xfb() local
384 rzalloc(prog, struct gl_transform_feedback_info); in read_xfb()
386 prog->sh.LinkedTransformFeedback = ltf; in read_xfb()
387 shProg->last_vert_prog = prog; in read_xfb()
393 ltf->Outputs = rzalloc_array(prog, struct gl_transform_feedback_output, in read_xfb()
400 ltf->Varyings = rzalloc_array(prog, in read_xfb()
405 ltf->Varyings[i].Name = ralloc_strdup(prog, blob_read_string(metadata)); in read_xfb()
418 has_uniform_storage(struct gl_shader_program *prog, unsigned idx) in has_uniform_storage() argument
420 if (!prog->data->UniformStorage[idx].builtin && in has_uniform_storage()
421 !prog->data->UniformStorage[idx].is_shader_storage && in has_uniform_storage()
422 prog->data->UniformStorage[idx].block_index == -1) in has_uniform_storage()
429 write_uniforms(struct blob *metadata, struct gl_shader_program *prog) in write_uniforms() argument
431 blob_write_uint32(metadata, prog->SamplersValidated); in write_uniforms()
432 blob_write_uint32(metadata, prog->data->NumUniformStorage); in write_uniforms()
433 blob_write_uint32(metadata, prog->data->NumUniformDataSlots); in write_uniforms()
435 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) { in write_uniforms()
436 encode_type_to_blob(metadata, prog->data->UniformStorage[i].type); in write_uniforms()
437 blob_write_uint32(metadata, prog->data->UniformStorage[i].array_elements); in write_uniforms()
438 if (prog->data->UniformStorage[i].name) { in write_uniforms()
439 blob_write_string(metadata, prog->data->UniformStorage[i].name); in write_uniforms()
443 blob_write_uint32(metadata, prog->data->UniformStorage[i].builtin); in write_uniforms()
444 blob_write_uint32(metadata, prog->data->UniformStorage[i].remap_location); in write_uniforms()
445 blob_write_uint32(metadata, prog->data->UniformStorage[i].block_index); in write_uniforms()
446 blob_write_uint32(metadata, prog->data->UniformStorage[i].atomic_buffer_index); in write_uniforms()
447 blob_write_uint32(metadata, prog->data->UniformStorage[i].offset); in write_uniforms()
448 blob_write_uint32(metadata, prog->data->UniformStorage[i].array_stride); in write_uniforms()
449 blob_write_uint32(metadata, prog->data->UniformStorage[i].hidden); in write_uniforms()
450 blob_write_uint32(metadata, prog->data->UniformStorage[i].is_shader_storage); in write_uniforms()
451 blob_write_uint32(metadata, prog->data->UniformStorage[i].active_shader_mask); in write_uniforms()
452 blob_write_uint32(metadata, prog->data->UniformStorage[i].matrix_stride); in write_uniforms()
453 blob_write_uint32(metadata, prog->data->UniformStorage[i].row_major); in write_uniforms()
454 blob_write_uint32(metadata, prog->data->UniformStorage[i].is_bindless); in write_uniforms()
456 prog->data->UniformStorage[i].num_compatible_subroutines); in write_uniforms()
458 prog->data->UniformStorage[i].top_level_array_size); in write_uniforms()
460 prog->data->UniformStorage[i].top_level_array_stride); in write_uniforms()
462 if (has_uniform_storage(prog, i)) { in write_uniforms()
463 blob_write_uint32(metadata, prog->data->UniformStorage[i].storage - in write_uniforms()
464 prog->data->UniformDataSlots); in write_uniforms()
467 blob_write_bytes(metadata, prog->data->UniformStorage[i].opaque, in write_uniforms()
468 sizeof(prog->data->UniformStorage[i].opaque)); in write_uniforms()
476 blob_write_uint32(metadata, prog->data->NumHiddenUniforms); in write_uniforms()
477 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) { in write_uniforms()
478 if (has_uniform_storage(prog, i)) { in write_uniforms()
480 prog->data->UniformStorage[i].type->component_slots() * in write_uniforms()
481 MAX2(prog->data->UniformStorage[i].array_elements, 1); in write_uniforms()
483 prog->data->UniformStorage[i].storage - in write_uniforms()
484 prog->data->UniformDataSlots; in write_uniforms()
485 blob_write_bytes(metadata, &prog->data->UniformDataDefaults[slot], in write_uniforms()
492 read_uniforms(struct blob_reader *metadata, struct gl_shader_program *prog) in read_uniforms() argument
497 prog->SamplersValidated = blob_read_uint32(metadata); in read_uniforms()
498 prog->data->NumUniformStorage = blob_read_uint32(metadata); in read_uniforms()
499 prog->data->NumUniformDataSlots = blob_read_uint32(metadata); in read_uniforms()
501 uniforms = rzalloc_array(prog->data, struct gl_uniform_storage, in read_uniforms()
502 prog->data->NumUniformStorage); in read_uniforms()
503 prog->data->UniformStorage = uniforms; in read_uniforms()
506 prog->data->NumUniformDataSlots); in read_uniforms()
507 prog->data->UniformDataSlots = data; in read_uniforms()
508 prog->data->UniformDataDefaults = in read_uniforms()
510 prog->data->NumUniformDataSlots); in read_uniforms()
512 prog->UniformHash = new string_to_uint_map; in read_uniforms()
514 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) { in read_uniforms()
517 uniforms[i].name = ralloc_strdup(prog, blob_read_string (metadata)); in read_uniforms()
533 prog->UniformHash->put(i, uniforms[i].name); in read_uniforms()
535 if (has_uniform_storage(prog, i)) { in read_uniforms()
545 prog->data->NumHiddenUniforms = blob_read_uint32(metadata); in read_uniforms()
546 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) { in read_uniforms()
547 if (has_uniform_storage(prog, i)) { in read_uniforms()
549 prog->data->UniformStorage[i].type->component_slots() * in read_uniforms()
550 MAX2(prog->data->UniformStorage[i].array_elements, 1); in read_uniforms()
552 prog->data->UniformStorage[i].storage - in read_uniforms()
553 prog->data->UniformDataSlots; in read_uniforms()
555 (uint8_t *) &prog->data->UniformDataSlots[slot], in read_uniforms()
558 assert(vec_size + prog->data->UniformStorage[i].storage <= in read_uniforms()
559 data + prog->data->NumUniformDataSlots); in read_uniforms()
563 memcpy(prog->data->UniformDataDefaults, prog->data->UniformDataSlots, in read_uniforms()
564 sizeof(union gl_constant_value) * prog->data->NumUniformDataSlots); in read_uniforms()
618 struct gl_shader_program *prog) in write_uniform_remap_tables() argument
620 write_uniform_remap_table(metadata, prog->NumUniformRemapTable, in write_uniform_remap_tables()
621 prog->data->UniformStorage, in write_uniform_remap_tables()
622 prog->UniformRemapTable); in write_uniform_remap_tables()
625 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in write_uniform_remap_tables()
629 prog->data->UniformStorage, in write_uniform_remap_tables()
637 struct gl_shader_program *prog, in read_uniform_remap_table() argument
645 rzalloc_array(prog, struct gl_uniform_storage *, num); in read_uniform_remap_table()
673 struct gl_shader_program *prog) in read_uniform_remap_tables() argument
675 prog->UniformRemapTable = in read_uniform_remap_tables()
676 read_uniform_remap_table(metadata, prog, &prog->NumUniformRemapTable, in read_uniform_remap_tables()
677 prog->data->UniformStorage); in read_uniform_remap_tables()
680 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in read_uniform_remap_tables()
685 read_uniform_remap_table(metadata, prog, in read_uniform_remap_tables()
687 prog->data->UniformStorage); in read_uniform_remap_tables()
747 write_hash_tables(struct blob *metadata, struct gl_shader_program *prog) in write_hash_tables() argument
749 write_hash_table(metadata, prog->AttributeBindings); in write_hash_tables()
750 write_hash_table(metadata, prog->FragDataBindings); in write_hash_tables()
751 write_hash_table(metadata, prog->FragDataIndexBindings); in write_hash_tables()
755 read_hash_tables(struct blob_reader *metadata, struct gl_shader_program *prog) in read_hash_tables() argument
757 read_hash_table(metadata, prog->AttributeBindings); in read_hash_tables()
758 read_hash_table(metadata, prog->FragDataBindings); in read_hash_tables()
759 read_hash_table(metadata, prog->FragDataIndexBindings); in read_hash_tables()
798 struct gl_shader_program *prog, in write_program_resource_data() argument
827 for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) { in write_program_resource_data()
829 prog->data->UniformBlocks[i].Name) == 0) { in write_program_resource_data()
836 for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) { in write_program_resource_data()
838 prog->data->ShaderStorageBlocks[i].Name) == 0) { in write_program_resource_data()
855 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) { in write_program_resource_data()
857 prog->data->UniformStorage[i].name) == 0) { in write_program_resource_data()
868 for (unsigned i = 0; i < prog->data->NumAtomicBuffers; i++) { in write_program_resource_data()
870 prog->data->AtomicBuffers[i].Binding) { in write_program_resource_data()
879 prog->last_vert_prog->sh.LinkedTransformFeedback->Buffers[i].Binding) { in write_program_resource_data()
886 for (int i = 0; i < prog->last_vert_prog->sh.LinkedTransformFeedback->NumVarying; i++) { in write_program_resource_data()
888 prog->last_vert_prog->sh.LinkedTransformFeedback->Varyings[i].Name) == 0) { in write_program_resource_data()
901 prog->_LinkedShaders[_mesa_shader_stage_from_subroutine(res->Type)]; in write_program_resource_data()
911 struct gl_shader_program *prog, in read_program_resource_data() argument
919 gl_shader_variable *var = ralloc(prog, struct gl_shader_variable); in read_program_resource_data()
925 var->name = ralloc_strdup(prog, blob_read_string(metadata)); in read_program_resource_data()
937 res->Data = &prog->data->UniformBlocks[blob_read_uint32(metadata)]; in read_program_resource_data()
940 res->Data = &prog->data->ShaderStorageBlocks[blob_read_uint32(metadata)]; in read_program_resource_data()
952 res->Data = &prog->data->UniformStorage[blob_read_uint32(metadata)]; in read_program_resource_data()
954 res->Data = prog->UniformRemapTable[blob_read_uint32(metadata)]; in read_program_resource_data()
959 res->Data = &prog->data->AtomicBuffers[blob_read_uint32(metadata)]; in read_program_resource_data()
962 res->Data = &prog->last_vert_prog-> in read_program_resource_data()
966 res->Data = &prog->last_vert_prog-> in read_program_resource_data()
976 prog->_LinkedShaders[_mesa_shader_stage_from_subroutine(res->Type)]; in read_program_resource_data()
987 struct gl_shader_program *prog) in write_program_resource_list() argument
989 blob_write_uint32(metadata, prog->data->NumProgramResourceList); in write_program_resource_list()
991 for (unsigned i = 0; i < prog->data->NumProgramResourceList; i++) { in write_program_resource_list()
992 blob_write_uint32(metadata, prog->data->ProgramResourceList[i].Type); in write_program_resource_list()
993 write_program_resource_data(metadata, prog, in write_program_resource_list()
994 &prog->data->ProgramResourceList[i]); in write_program_resource_list()
996 &prog->data->ProgramResourceList[i].StageReferences, in write_program_resource_list()
997 sizeof(prog->data->ProgramResourceList[i].StageReferences)); in write_program_resource_list()
1003 struct gl_shader_program *prog) in read_program_resource_list() argument
1005 prog->data->NumProgramResourceList = blob_read_uint32(metadata); in read_program_resource_list()
1007 prog->data->ProgramResourceList = in read_program_resource_list()
1008 ralloc_array(prog->data, gl_program_resource, in read_program_resource_list()
1009 prog->data->NumProgramResourceList); in read_program_resource_list()
1011 for (unsigned i = 0; i < prog->data->NumProgramResourceList; i++) { in read_program_resource_list()
1012 prog->data->ProgramResourceList[i].Type = blob_read_uint32(metadata); in read_program_resource_list()
1013 read_program_resource_data(metadata, prog, in read_program_resource_list()
1014 &prog->data->ProgramResourceList[i]); in read_program_resource_list()
1016 (uint8_t *) &prog->data->ProgramResourceList[i].StageReferences, in read_program_resource_list()
1017 sizeof(prog->data->ProgramResourceList[i].StageReferences)); in read_program_resource_list()
1217 struct gl_shader_program *prog, in create_linked_shader_and_program() argument
1225 glprog = ctx->Driver.NewProgram(ctx, stage, prog->Name, false); in create_linked_shader_and_program()
1242 _mesa_reference_shader_program_data(ctx, &glprog->sh.data, prog->data); in create_linked_shader_and_program()
1244 prog->_LinkedShaders[stage] = linked; in create_linked_shader_and_program()
1249 struct gl_shader_program *prog) in serialize_glsl_program() argument
1251 blob_write_bytes(blob, prog->data->sha1, sizeof(prog->data->sha1)); in serialize_glsl_program()
1253 write_uniforms(blob, prog); in serialize_glsl_program()
1255 write_hash_tables(blob, prog); in serialize_glsl_program()
1257 blob_write_uint32(blob, prog->data->Version); in serialize_glsl_program()
1258 blob_write_uint32(blob, prog->IsES); in serialize_glsl_program()
1259 blob_write_uint32(blob, prog->data->linked_stages); in serialize_glsl_program()
1262 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in serialize_glsl_program()
1287 write_xfb(blob, prog); in serialize_glsl_program()
1289 write_uniform_remap_tables(blob, prog); in serialize_glsl_program()
1291 write_atomic_buffers(blob, prog); in serialize_glsl_program()
1293 write_buffer_blocks(blob, prog); in serialize_glsl_program()
1295 write_subroutines(blob, prog); in serialize_glsl_program()
1297 write_program_resource_list(blob, prog); in serialize_glsl_program()
1302 struct gl_shader_program *prog) in deserialize_glsl_program() argument
1305 if (prog->Name == 0) in deserialize_glsl_program()
1308 assert(prog->data->UniformStorage == NULL); in deserialize_glsl_program()
1310 blob_copy_bytes(blob, prog->data->sha1, sizeof(prog->data->sha1)); in deserialize_glsl_program()
1312 read_uniforms(blob, prog); in deserialize_glsl_program()
1314 read_hash_tables(blob, prog); in deserialize_glsl_program()
1316 prog->data->Version = blob_read_uint32(blob); in deserialize_glsl_program()
1317 prog->IsES = blob_read_uint32(blob); in deserialize_glsl_program()
1318 prog->data->linked_stages = blob_read_uint32(blob); in deserialize_glsl_program()
1320 unsigned mask = prog->data->linked_stages; in deserialize_glsl_program()
1323 create_linked_shader_and_program(ctx, (gl_shader_stage) j, prog, in deserialize_glsl_program()
1327 read_xfb(blob, prog); in deserialize_glsl_program()
1329 read_uniform_remap_tables(blob, prog); in deserialize_glsl_program()
1331 read_atomic_buffers(blob, prog); in deserialize_glsl_program()
1333 read_buffer_blocks(blob, prog); in deserialize_glsl_program()
1335 read_subroutines(blob, prog); in deserialize_glsl_program()
1337 read_program_resource_list(blob, prog); in deserialize_glsl_program()