Lines Matching refs:mod
439 fill_SV_param_nodes(struct dxil_module *mod, unsigned record_id,
450 flattened_semantics[i] = dxil_get_metadata_int32(mod, rec->elements[i].semantic_index);
452 SV_params_nodes[0] = dxil_get_metadata_int32(mod, (int)record_id); // Unique element ID
453 SV_params_nodes[1] = dxil_get_metadata_string(mod, rec->name); // Element name
454 SV_params_nodes[2] = dxil_get_metadata_int8(mod, rec->sig_comp_type); // Element type
455 SV_params_nodes[3] = dxil_get_metadata_int8(mod, (int8_t)psv->semantic_kind); // Effective system value
456 SV_params_nodes[4] = dxil_get_metadata_node(mod, flattened_semantics,
458 SV_params_nodes[5] = dxil_get_metadata_int8(mod, psv->interpolation_mode); // Interpolation mode
459 SV_params_nodes[6] = dxil_get_metadata_int32(mod, psv->rows); // Number of rows
460 SV_params_nodes[7] = dxil_get_metadata_int8(mod, psv->cols_and_start & 0xf); // Number of columns
461 SV_params_nodes[8] = dxil_get_metadata_int32(mod, rec->elements[0].reg); // Element packing start row
462 SV_params_nodes[9] = dxil_get_metadata_int8(mod, (psv->cols_and_start >> 4) & 0x3); // Element packing start column
467 SV_metadata[num_metadata_nodes++] = dxil_get_metadata_int32(mod, DXIL_SIGNATURE_ELEMENT_OUTPUT_STREAM);
468 SV_metadata[num_metadata_nodes++] = dxil_get_metadata_int32(mod, rec->elements[0].stream);
473 if (usage_mask && mod->minor_validator >= 5) {
475 SV_metadata[num_metadata_nodes++] = dxil_get_metadata_int32(mod, DXIL_SIGNATURE_ELEMENT_USAGE_COMPONENT_MASK);
476 SV_metadata[num_metadata_nodes++] = dxil_get_metadata_int8(mod, usage_mask);
481 SV_metadata[num_metadata_nodes++] = dxil_get_metadata_int32(mod, DXIL_SIGNATURE_ELEMENT_DYNAMIC_INDEX_COMPONENT_MASK);
482 SV_metadata[num_metadata_nodes++] = dxil_get_metadata_int8(mod, dynamic_index_mask);
485 SV_params_nodes[10] = num_metadata_nodes ? dxil_get_metadata_node(mod, SV_metadata, num_metadata_nodes) : NULL;
487 return dxil_get_metadata_node(mod, SV_params_nodes, ARRAY_SIZE(SV_params_nodes));
510 struct semantic_info *semantic, struct dxil_module *mod)
534 copy_semantic_name_to_string(mod->sem_string_table, semantic->name);
542 append_semantic_index_to_table(&mod->sem_index_table, semantic->index, semantic->rows);
548 fill_io_signature(struct dxil_module *mod, int id,
553 rec->name = ralloc_strdup(mod->ralloc_ctx, semantic->name);
559 return fill_psv_signature_element(psv_elm, semantic, mod);
563 get_input_signature_group(struct dxil_module *mod,
575 mod->inputs[num_inputs].sysvalue = semantic.sysvalue_name;
578 mod->input_mappings[var->data.driver_location] = num_inputs;
579 struct dxil_psv_signature_element *psv_elm = &mod->psv_inputs[num_inputs];
581 if (!fill_io_signature(mod, num_inputs, &semantic,
582 &mod->inputs[num_inputs], psv_elm))
585 mod->num_psv_inputs = MAX2(mod->num_psv_inputs,
595 process_input_signature(struct dxil_module *mod, nir_shader *s, unsigned input_clip_size)
601 mod->num_sig_inputs = get_input_signature_group(mod, 0,
607 mod->num_sig_inputs = get_input_signature_group(mod, mod->num_sig_inputs,
632 process_output_signature(struct dxil_module *mod, nir_shader *s)
643 mod->outputs[num_outputs].sysvalue = "TARGET";
649 mod->outputs[num_outputs].sysvalue = out_sysvalue_name(var);
653 mod->info.has_out_position |= semantic.kind== DXIL_SEM_POSITION;
654 mod->info.has_out_depth |= semantic.kind == DXIL_SEM_DEPTH;
656 struct dxil_psv_signature_element *psv_elm = &mod->psv_outputs[num_outputs];
658 if (!fill_io_signature(mod, num_outputs, &semantic,
659 &mod->outputs[num_outputs], psv_elm))
662 for (unsigned i = 0; i < mod->outputs[num_outputs].num_elements; ++i) {
663 struct dxil_signature_element *elm = &mod->outputs[num_outputs].elements[i];
664 if (mod->minor_validator <= 4)
673 mod->num_psv_outputs[semantic.stream] = MAX2(mod->num_psv_outputs[semantic.stream],
676 mod->num_sig_outputs = num_outputs;
712 process_patch_const_signature(struct dxil_module *mod, nir_shader *s)
730 mod->patch_consts[num_consts].sysvalue = patch_sysvalue_name(var);
733 struct dxil_psv_signature_element *psv_elm = &mod->psv_patch_consts[num_consts];
735 if (!fill_io_signature(mod, num_consts, &semantic,
736 &mod->patch_consts[num_consts], psv_elm))
740 for (unsigned i = 0; i < mod->patch_consts[num_consts].num_elements; ++i) {
741 struct dxil_signature_element *elm = &mod->patch_consts[num_consts].elements[i];
742 if (mod->minor_validator <= 4)
752 mod->num_psv_patch_consts = MAX2(mod->num_psv_patch_consts,
755 mod->num_sig_patch_consts = num_consts;
759 preprocess_signatures(struct dxil_module *mod, nir_shader *s, unsigned input_clip_size)
762 mod->sem_string_table = _mesa_string_buffer_create(mod->ralloc_ctx, 1024);
763 copy_semantic_name_to_string(mod->sem_string_table, "");
765 process_input_signature(mod, s, input_clip_size);
766 process_output_signature(mod, s);
767 process_patch_const_signature(mod, s);
771 get_signature_metadata(struct dxil_module *mod,
782 nodes[i] = fill_SV_param_nodes(mod, i, &recs[i], &psvs[i], is_input);
785 return dxil_get_metadata_node(mod, nodes, num_elements);
789 get_signatures(struct dxil_module *mod)
791 const struct dxil_mdnode *input_signature = get_signature_metadata(mod, mod->inputs, mod->psv_inputs, mod->num_sig_inputs, true);
792 const struct dxil_mdnode *output_signature = get_signature_metadata(mod, mod->outputs, mod->psv_outputs, mod->num_sig_outputs, false);
793 const struct dxil_mdnode *patch_const_signature = get_signature_metadata(mod, mod->patch_consts, mod->psv_patch_consts, mod->num_sig_patch_consts,
794 mod->shader_kind == DXIL_DOMAIN_SHADER);
802 return dxil_get_metadata_node(mod, SV_nodes, ARRAY_SIZE(SV_nodes));