Lines Matching refs:prog

43 write_subroutines(struct blob *metadata, struct gl_shader_program *prog)
46 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
71 read_subroutines(struct blob_reader *metadata, struct gl_shader_program *prog)
76 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
86 subs = rzalloc_array(prog, struct gl_subroutine_function,
91 subs[j].name.string = ralloc_strdup(prog, blob_read_string (metadata));
96 subs[j].types = rzalloc_array(prog, const struct glsl_type *,
123 write_buffer_blocks(struct blob *metadata, struct gl_shader_program *prog)
125 blob_write_uint32(metadata, prog->data->NumUniformBlocks);
126 blob_write_uint32(metadata, prog->data->NumShaderStorageBlocks);
128 for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) {
129 write_buffer_block(metadata, &prog->data->UniformBlocks[i]);
132 for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) {
133 write_buffer_block(metadata, &prog->data->ShaderStorageBlocks[i]);
137 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
148 glprog->sh.UniformBlocks[j] - prog->data->UniformBlocks;
154 prog->data->ShaderStorageBlocks;
162 struct gl_shader_program *prog)
164 b->name.string = ralloc_strdup(prog->data, blob_read_string (metadata));
172 rzalloc_array(prog->data, struct gl_uniform_buffer_variable,
175 b->Uniforms[j].Name = ralloc_strdup(prog->data,
182 b->Uniforms[j].IndexName = ralloc_strdup(prog->data, index_name);
192 struct gl_shader_program *prog)
194 prog->data->NumUniformBlocks = blob_read_uint32(metadata);
195 prog->data->NumShaderStorageBlocks = blob_read_uint32(metadata);
197 prog->data->UniformBlocks =
198 rzalloc_array(prog->data, struct gl_uniform_block,
199 prog->data->NumUniformBlocks);
201 prog->data->ShaderStorageBlocks =
202 rzalloc_array(prog->data, struct gl_uniform_block,
203 prog->data->NumShaderStorageBlocks);
205 for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) {
206 read_buffer_block(metadata, &prog->data->UniformBlocks[i], prog);
209 for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) {
210 read_buffer_block(metadata, &prog->data->ShaderStorageBlocks[i], prog);
214 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
230 glprog->sh.UniformBlocks[j] = prog->data->UniformBlocks + offset;
236 prog->data->ShaderStorageBlocks + offset;
242 write_atomic_buffers(struct blob *metadata, struct gl_shader_program *prog)
244 blob_write_uint32(metadata, prog->data->NumAtomicBuffers);
247 if (prog->_LinkedShaders[i]) {
248 struct gl_program *glprog = prog->_LinkedShaders[i]->Program;
253 for (unsigned i = 0; i < prog->data->NumAtomicBuffers; i++) {
254 blob_write_uint32(metadata, prog->data->AtomicBuffers[i].Binding);
255 blob_write_uint32(metadata, prog->data->AtomicBuffers[i].MinimumSize);
256 blob_write_uint32(metadata, prog->data->AtomicBuffers[i].NumUniforms);
258 blob_write_bytes(metadata, prog->data->AtomicBuffers[i].StageReferences,
259 sizeof(prog->data->AtomicBuffers[i].StageReferences));
261 for (unsigned j = 0; j < prog->data->AtomicBuffers[i].NumUniforms; j++) {
262 blob_write_uint32(metadata, prog->data->AtomicBuffers[i].Uniforms[j]);
269 struct gl_shader_program *prog)
271 prog->data->NumAtomicBuffers = blob_read_uint32(metadata);
272 prog->data->AtomicBuffers =
273 rzalloc_array(prog, gl_active_atomic_buffer,
274 prog->data->NumAtomicBuffers);
278 if (prog->_LinkedShaders[i]) {
279 struct gl_program *glprog = prog->_LinkedShaders[i]->Program;
289 for (unsigned i = 0; i < prog->data->NumAtomicBuffers; i++) {
290 prog->data->AtomicBuffers[i].Binding = blob_read_uint32(metadata);
291 prog->data->AtomicBuffers[i].MinimumSize = blob_read_uint32(metadata);
292 prog->data->AtomicBuffers[i].NumUniforms = blob_read_uint32(metadata);
295 (uint8_t *) &prog->data->AtomicBuffers[i].StageReferences,
296 sizeof(prog->data->AtomicBuffers[i].StageReferences));
298 prog->data->AtomicBuffers[i].Uniforms = rzalloc_array(prog, unsigned,
299 prog->data->AtomicBuffers[i].NumUniforms);
301 for (unsigned j = 0; j < prog->data->AtomicBuffers[i].NumUniforms; j++) {
302 prog->data->AtomicBuffers[i].Uniforms[j] = blob_read_uint32(metadata);
306 if (prog->data->AtomicBuffers[i].StageReferences[j]) {
307 *stage_buff_list[j] = &prog->data->AtomicBuffers[i];
317 struct gl_program *prog = shProg->last_vert_prog;
319 if (!prog) {
324 struct gl_transform_feedback_info *ltf = prog->sh.LinkedTransformFeedback;
326 blob_write_uint32(metadata, prog->info.stage);
384 struct gl_program *prog = shProg->_LinkedShaders[xfb_stage]->Program;
386 rzalloc(prog, struct gl_transform_feedback_info);
388 prog->sh.LinkedTransformFeedback = ltf;
389 shProg->last_vert_prog = prog;
395 ltf->Outputs = rzalloc_array(prog, struct gl_transform_feedback_output,
402 ltf->Varyings = rzalloc_array(prog,
407 ltf->Varyings[i].name.string = ralloc_strdup(prog, blob_read_string(metadata));
421 has_uniform_storage(struct gl_shader_program *prog, unsigned idx)
423 if (!prog->data->UniformStorage[idx].builtin &&
424 !prog->data->UniformStorage[idx].is_shader_storage &&
425 prog->data->UniformStorage[idx].block_index == -1)
432 write_uniforms(struct blob *metadata, struct gl_shader_program *prog)
434 blob_write_uint32(metadata, prog->SamplersValidated);
435 blob_write_uint32(metadata, prog->data->NumUniformStorage);
436 blob_write_uint32(metadata, prog->data->NumUniformDataSlots);
438 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) {
439 encode_type_to_blob(metadata, prog->data->UniformStorage[i].type);
440 blob_write_uint32(metadata, prog->data->UniformStorage[i].array_elements);
441 if (prog->data->UniformStorage[i].name.string) {
442 blob_write_string(metadata, prog->data->UniformStorage[i].name.string);
446 blob_write_uint32(metadata, prog->data->UniformStorage[i].builtin);
447 blob_write_uint32(metadata, prog->data->UniformStorage[i].remap_location);
448 blob_write_uint32(metadata, prog->data->UniformStorage[i].block_index);
449 blob_write_uint32(metadata, prog->data->UniformStorage[i].atomic_buffer_index);
450 blob_write_uint32(metadata, prog->data->UniformStorage[i].offset);
451 blob_write_uint32(metadata, prog->data->UniformStorage[i].array_stride);
452 blob_write_uint32(metadata, prog->data->UniformStorage[i].hidden);
453 blob_write_uint32(metadata, prog->data->UniformStorage[i].is_shader_storage);
454 blob_write_uint32(metadata, prog->data->UniformStorage[i].active_shader_mask);
455 blob_write_uint32(metadata, prog->data->UniformStorage[i].matrix_stride);
456 blob_write_uint32(metadata, prog->data->UniformStorage[i].row_major);
457 blob_write_uint32(metadata, prog->data->UniformStorage[i].is_bindless);
459 prog->data->UniformStorage[i].num_compatible_subroutines);
461 prog->data->UniformStorage[i].top_level_array_size);
463 prog->data->UniformStorage[i].top_level_array_stride);
465 if (has_uniform_storage(prog, i)) {
466 blob_write_uint32(metadata, prog->data->UniformStorage[i].storage -
467 prog->data->UniformDataSlots);
470 blob_write_bytes(metadata, prog->data->UniformStorage[i].opaque,
471 sizeof(prog->data->UniformStorage[i].opaque));
479 blob_write_uint32(metadata, prog->data->NumHiddenUniforms);
480 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) {
481 if (has_uniform_storage(prog, i)) {
483 prog->data->UniformStorage[i].type->component_slots() *
484 MAX2(prog->data->UniformStorage[i].array_elements, 1);
486 prog->data->UniformStorage[i].storage -
487 prog->data->UniformDataSlots;
488 blob_write_bytes(metadata, &prog->data->UniformDataDefaults[slot],
495 read_uniforms(struct blob_reader *metadata, struct gl_shader_program *prog)
500 prog->SamplersValidated = blob_read_uint32(metadata);
501 prog->data->NumUniformStorage = blob_read_uint32(metadata);
502 prog->data->NumUniformDataSlots = blob_read_uint32(metadata);
504 uniforms = rzalloc_array(prog->data, struct gl_uniform_storage,
505 prog->data->NumUniformStorage);
506 prog->data->UniformStorage = uniforms;
509 prog->data->NumUniformDataSlots);
510 prog->data->UniformDataSlots = data;
511 prog->data->UniformDataDefaults =
513 prog->data->NumUniformDataSlots);
515 prog->UniformHash = new string_to_uint_map;
517 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) {
520 uniforms[i].name.string = ralloc_strdup(prog, blob_read_string (metadata));
537 prog->UniformHash->put(i, uniforms[i].name.string);
539 if (has_uniform_storage(prog, i)) {
549 prog->data->NumHiddenUniforms = blob_read_uint32(metadata);
550 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) {
551 if (has_uniform_storage(prog, i)) {
553 prog->data->UniformStorage[i].type->component_slots() *
554 MAX2(prog->data->UniformStorage[i].array_elements, 1);
556 prog->data->UniformStorage[i].storage -
557 prog->data->UniformDataSlots;
559 (uint8_t *) &prog->data->UniformDataSlots[slot],
562 assert(vec_size + prog->data->UniformStorage[i].storage <=
563 data + prog->data->NumUniformDataSlots);
567 memcpy(prog->data->UniformDataDefaults, prog->data->UniformDataSlots,
568 sizeof(union gl_constant_value) * prog->data->NumUniformDataSlots);
622 struct gl_shader_program *prog)
624 write_uniform_remap_table(metadata, prog->NumUniformRemapTable,
625 prog->data->UniformStorage,
626 prog->UniformRemapTable);
629 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
633 prog->data->UniformStorage,
641 struct gl_shader_program *prog,
649 rzalloc_array(prog, struct gl_uniform_storage *, num);
677 struct gl_shader_program *prog)
679 prog->UniformRemapTable =
680 read_uniform_remap_table(metadata, prog, &prog->NumUniformRemapTable,
681 prog->data->UniformStorage);
684 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
689 read_uniform_remap_table(metadata, prog,
691 prog->data->UniformStorage);
751 write_hash_tables(struct blob *metadata, struct gl_shader_program *prog)
753 write_hash_table(metadata, prog->AttributeBindings);
754 write_hash_table(metadata, prog->FragDataBindings);
755 write_hash_table(metadata, prog->FragDataIndexBindings);
759 read_hash_tables(struct blob_reader *metadata, struct gl_shader_program *prog)
761 read_hash_table(metadata, prog->AttributeBindings);
762 read_hash_table(metadata, prog->FragDataBindings);
763 read_hash_table(metadata, prog->FragDataIndexBindings);
802 struct gl_shader_program *prog,
831 for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) {
833 prog->data->UniformBlocks[i].name.string) == 0) {
840 for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) {
842 prog->data->ShaderStorageBlocks[i].name.string) == 0) {
859 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) {
861 prog->data->UniformStorage[i].name.string) == 0) {
872 for (unsigned i = 0; i < prog->data->NumAtomicBuffers; i++) {
874 prog->data->AtomicBuffers[i].Binding) {
883 prog->last_vert_prog->sh.LinkedTransformFeedback->Buffers[i].Binding) {
890 for (int i = 0; i < prog->last_vert_prog->sh.LinkedTransformFeedback->NumVarying; i++) {
892 prog->last_vert_prog->sh.LinkedTransformFeedback->Varyings[i].name.string) == 0) {
905 prog->_LinkedShaders[_mesa_shader_stage_from_subroutine(res->Type)];
915 struct gl_shader_program *prog,
923 gl_shader_variable *var = ralloc(prog, struct gl_shader_variable);
929 var->name.string = ralloc_strdup(prog, blob_read_string(metadata));
942 res->Data = &prog->data->UniformBlocks[blob_read_uint32(metadata)];
945 res->Data = &prog->data->ShaderStorageBlocks[blob_read_uint32(metadata)];
957 res->Data = &prog->data->UniformStorage[blob_read_uint32(metadata)];
959 res->Data = prog->UniformRemapTable[blob_read_uint32(metadata)];
964 res->Data = &prog->data->AtomicBuffers[blob_read_uint32(metadata)];
967 res->Data = &prog->last_vert_prog->
971 res->Data = &prog->last_vert_prog->
981 prog->_LinkedShaders[_mesa_shader_stage_from_subroutine(res->Type)];
992 struct gl_shader_program *prog)
994 blob_write_uint32(metadata, prog->data->NumProgramResourceList);
996 for (unsigned i = 0; i < prog->data->NumProgramResourceList; i++) {
997 blob_write_uint32(metadata, prog->data->ProgramResourceList[i].Type);
998 write_program_resource_data(metadata, prog,
999 &prog->data->ProgramResourceList[i]);
1001 &prog->data->ProgramResourceList[i].StageReferences,
1002 sizeof(prog->data->ProgramResourceList[i].StageReferences));
1008 struct gl_shader_program *prog)
1010 prog->data->NumProgramResourceList = blob_read_uint32(metadata);
1012 prog->data->ProgramResourceList =
1013 ralloc_array(prog->data, gl_program_resource,
1014 prog->data->NumProgramResourceList);
1016 for (unsigned i = 0; i < prog->data->NumProgramResourceList; i++) {
1017 prog->data->ProgramResourceList[i].Type = blob_read_uint32(metadata);
1018 read_program_resource_data(metadata, prog,
1019 &prog->data->ProgramResourceList[i]);
1021 (uint8_t *) &prog->data->ProgramResourceList[i].StageReferences,
1022 sizeof(prog->data->ProgramResourceList[i].StageReferences));
1222 struct gl_shader_program *prog,
1230 glprog = ctx->Driver.NewProgram(ctx, stage, prog->Name, false);
1247 _mesa_reference_shader_program_data(&glprog->sh.data, prog->data);
1249 prog->_LinkedShaders[stage] = linked;
1254 struct gl_shader_program *prog)
1256 blob_write_bytes(blob, prog->data->sha1, sizeof(prog->data->sha1));
1258 write_uniforms(blob, prog);
1260 write_hash_tables(blob, prog);
1262 blob_write_uint32(blob, prog->data->Version);
1263 blob_write_uint32(blob, prog->IsES);
1264 blob_write_uint32(blob, prog->data->linked_stages);
1267 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
1292 write_xfb(blob, prog);
1294 write_uniform_remap_tables(blob, prog);
1296 write_atomic_buffers(blob, prog);
1298 write_buffer_blocks(blob, prog);
1300 write_subroutines(blob, prog);
1302 write_program_resource_list(blob, prog);
1307 struct gl_shader_program *prog)
1310 if (prog->Name == 0)
1313 assert(prog->data->UniformStorage == NULL);
1315 blob_copy_bytes(blob, prog->data->sha1, sizeof(prog->data->sha1));
1317 read_uniforms(blob, prog);
1319 read_hash_tables(blob, prog);
1321 prog->data->Version = blob_read_uint32(blob);
1322 prog->IsES = blob_read_uint32(blob);
1323 prog->data->linked_stages = blob_read_uint32(blob);
1325 unsigned mask = prog->data->linked_stages;
1328 create_linked_shader_and_program(ctx, (gl_shader_stage) j, prog,
1332 read_xfb(blob, prog);
1334 read_uniform_remap_tables(blob, prog);
1336 read_atomic_buffers(blob, prog);
1338 read_buffer_blocks(blob, prog);
1340 read_subroutines(blob, prog);
1342 read_program_resource_list(blob, prog);