Lines Matching refs:gs

713                                     draw->gs.tgsi.sampler,
714 draw->gs.tgsi.image,
715 draw->gs.tgsi.buffer);
724 draw->gs.tgsi.machine = tgsi_exec_machine_create(PIPE_SHADER_GEOMETRY);
727 draw->gs.tgsi.machine->Primitives[i] = align_malloc(
729 draw->gs.tgsi.machine->PrimitiveOffsets[i] = align_malloc(
731 if (!draw->gs.tgsi.machine->Primitives[i] || !draw->gs.tgsi.machine->PrimitiveOffsets[i])
733 memset(draw->gs.tgsi.machine->Primitives[i], 0,
735 memset(draw->gs.tgsi.machine->PrimitiveOffsets[i], 0,
746 if (draw->gs.tgsi.machine) {
748 align_free(draw->gs.tgsi.machine->Primitives[i]);
749 align_free(draw->gs.tgsi.machine->PrimitiveOffsets[i]);
751 tgsi_exec_machine_destroy(draw->gs.tgsi.machine);
763 struct draw_geometry_shader *gs;
773 gs = &llvm_gs->base;
779 gs = CALLOC_STRUCT(draw_geometry_shader);
782 if (!gs)
785 gs->draw = draw;
786 gs->state = *state;
789 gs->state.tokens = tgsi_dup_tokens(state->tokens);
790 if (!gs->state.tokens) {
791 FREE(gs);
795 tgsi_scan_shader(state->tokens, &gs->info);
796 gs->num_vertex_streams = 1;
797 for (i = 0; i < gs->state.stream_output.num_outputs; i++) {
798 if (gs->state.stream_output.output[i].stream >= gs->num_vertex_streams)
799 gs->num_vertex_streams = gs->state.stream_output.output[i].stream + 1;
802 nir_tgsi_scan_shader(state->ir.nir, &gs->info, true);
804 gs->num_vertex_streams = util_last_bit(nir->info.gs.active_stream_mask);
808 gs->max_out_prims = 0;
815 gs->vector_length = lp_native_vector_width / 32;*/
816 gs->vector_length = TGSI_NUM_CHANNELS;
820 gs->vector_length = 1;
823 gs->input_primitive =
824 gs->info.properties[TGSI_PROPERTY_GS_INPUT_PRIM];
825 gs->output_primitive =
826 gs->info.properties[TGSI_PROPERTY_GS_OUTPUT_PRIM];
827 gs->max_output_vertices =
828 gs->info.properties[TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES];
829 gs->num_invocations =
830 gs->info.properties[TGSI_PROPERTY_GS_INVOCATIONS];
831 if (!gs->max_output_vertices)
832 gs->max_output_vertices = 32;
843 gs->primitive_boundary = gs->max_output_vertices + 1;
845 gs->position_output = -1;
847 for (i = 0; i < gs->info.num_outputs; i++) {
848 if (gs->info.output_semantic_name[i] == TGSI_SEMANTIC_POSITION &&
849 gs->info.output_semantic_index[i] == 0)
850 gs->position_output = i;
851 if (gs->info.output_semantic_name[i] == TGSI_SEMANTIC_VIEWPORT_INDEX)
852 gs->viewport_index_output = i;
853 if (gs->info.output_semantic_name[i] == TGSI_SEMANTIC_CLIPVERTEX &&
854 gs->info.output_semantic_index[i] == 0) {
856 gs->clipvertex_output = i;
858 if (gs->info.output_semantic_name[i] == TGSI_SEMANTIC_CLIPDIST) {
859 assert(gs->info.output_semantic_index[i] <
861 gs->ccdistance_output[gs->info.output_semantic_index[i]] = i;
866 gs->clipvertex_output = gs->position_output;
868 gs->machine = draw->gs.tgsi.machine;
872 int vector_size = gs->vector_length * sizeof(float);
873 gs->gs_input = align_malloc(sizeof(struct draw_gs_inputs), 16);
874 memset(gs->gs_input, 0, sizeof(struct draw_gs_inputs));
875 gs->llvm_prim_lengths = 0;
877 gs->llvm_emitted_primitives = align_malloc(vector_size * gs->num_vertex_streams, vector_size);
878 gs->llvm_emitted_vertices = align_malloc(vector_size * gs->num_vertex_streams, vector_size);
879 gs->llvm_prim_ids = align_calloc(vector_size, vector_size);
881 gs->fetch_outputs = llvm_fetch_gs_outputs;
882 gs->fetch_inputs = llvm_fetch_gs_input;
883 gs->prepare = llvm_gs_prepare;
884 gs->run = llvm_gs_run;
886 gs->jit_context = &draw->llvm->gs_jit_context;
891 gs->info.file_max[TGSI_FILE_SAMPLER]+1,
892 gs->info.file_max[TGSI_FILE_SAMPLER_VIEW]+1,
893 gs->info.file_max[TGSI_FILE_IMAGE]+1);
897 gs->fetch_outputs = tgsi_fetch_gs_outputs;
898 gs->fetch_inputs = tgsi_fetch_gs_input;
899 gs->prepare = tgsi_gs_prepare;
900 gs->run = tgsi_gs_run;
903 return gs;
912 draw->gs.geometry_shader = dgs;
913 draw->gs.num_gs_outputs = dgs->info.num_outputs;
914 draw->gs.position_output = dgs->position_output;
915 draw->gs.clipvertex_output = dgs->clipvertex_output;
919 draw->gs.geometry_shader = NULL;
920 draw->gs.num_gs_outputs = 0;
957 if (draw->gs.tgsi.machine && draw->gs.tgsi.machine->Tokens == dgs->state.tokens)
958 draw->gs.tgsi.machine->Tokens = NULL;
983 draw_geometry_shader_new_instance(struct draw_geometry_shader *gs)
985 if (!gs)
988 gs->in_prim_idx = 0;