Home | History | Annotate | Download | only in draw

Lines Matching defs:gs

156                debug_printf("VS/GS signature mismatch!\n");
256 debug_printf("VS/GS signature mismatch!\n");
555 /* we allocate exactly one extra vertex per primitive to allow the GS to emit
669 debug_printf("GS finished, prims = %d, verts = %d\n",
684 draw->gs.tgsi.sampler,
685 draw->gs.tgsi.image,
686 draw->gs.tgsi.buffer);
695 draw->gs.tgsi.machine = tgsi_exec_machine_create(PIPE_SHADER_GEOMETRY);
696 if (!draw->gs.tgsi.machine)
699 draw->gs.tgsi.machine->Primitives = align_malloc(
701 if (!draw->gs.tgsi.machine->Primitives)
703 memset(draw->gs.tgsi.machine->Primitives, 0,
712 if (draw->gs.tgsi.machine) {
713 align_free(draw->gs.tgsi.machine->Primitives);
714 tgsi_exec_machine_destroy(draw->gs.tgsi.machine);
726 struct draw_geometry_shader *gs;
736 gs = &llvm_gs->base;
742 gs = CALLOC_STRUCT(draw_geometry_shader);
745 if (!gs)
748 gs->draw = draw;
749 gs->state = *state;
750 gs->state.tokens = tgsi_dup_tokens(state->tokens);
751 if (!gs->state.tokens) {
752 FREE(gs);
756 tgsi_scan_shader(state->tokens, &gs->info);
759 gs->max_out_prims = 0;
766 gs->vector_length = lp_native_vector_width / 32;*/
767 gs->vector_length = TGSI_NUM_CHANNELS;
771 gs->vector_length = 1;
774 gs->input_primitive =
775 gs->info.properties[TGSI_PROPERTY_GS_INPUT_PRIM];
776 gs->output_primitive =
777 gs->info.properties[TGSI_PROPERTY_GS_OUTPUT_PRIM];
778 gs->max_output_vertices =
779 gs->info.properties[TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES];
780 gs->num_invocations =
781 gs->info.properties[TGSI_PROPERTY_GS_INVOCATIONS];
782 if (!gs->max_output_vertices)
783 gs->max_output_vertices = 32;
794 gs->primitive_boundary = gs->max_output_vertices + 1;
796 gs->position_output = -1;
797 for (i = 0; i < gs->info.num_outputs; i++) {
798 if (gs->info.output_semantic_name[i] == TGSI_SEMANTIC_POSITION &&
799 gs->info.output_semantic_index[i] == 0)
800 gs->position_output = i;
801 if (gs->info.output_semantic_name[i] == TGSI_SEMANTIC_VIEWPORT_INDEX)
802 gs->viewport_index_output = i;
803 if (gs->info.output_semantic_name[i] == TGSI_SEMANTIC_CLIPDIST) {
804 debug_assert(gs->info.output_semantic_index[i] <
806 gs->ccdistance_output[gs->info.output_semantic_index[i]] = i;
810 gs->machine = draw->gs.tgsi.machine;
814 int vector_size = gs->vector_length * sizeof(float);
815 gs->gs_input = align_malloc(sizeof(struct draw_gs_inputs), 16);
816 memset(gs->gs_input, 0, sizeof(struct draw_gs_inputs));
817 gs->llvm_prim_lengths = 0;
819 gs->llvm_emitted_primitives = align_malloc(vector_size, vector_size);
820 gs->llvm_emitted_vertices = align_malloc(vector_size, vector_size);
821 gs->llvm_prim_ids = align_malloc(vector_size, vector_size);
823 gs->fetch_outputs = llvm_fetch_gs_outputs;
824 gs->fetch_inputs = llvm_fetch_gs_input;
825 gs->prepare = llvm_gs_prepare;
826 gs->run = llvm_gs_run;
828 gs->jit_context = &draw->llvm->gs_jit_context;
833 MAX2(gs->info.file_max[TGSI_FILE_SAMPLER]+1,
834 gs->info.file_max[TGSI_FILE_SAMPLER_VIEW]+1));
838 gs->fetch_outputs = tgsi_fetch_gs_outputs;
839 gs->fetch_inputs = tgsi_fetch_gs_input;
840 gs->prepare = tgsi_gs_prepare;
841 gs->run = tgsi_gs_run;
844 return gs;
853 draw->gs.geometry_shader = dgs;
854 draw->gs.num_gs_outputs = dgs->info.num_outputs;
855 draw->gs.position_output = dgs->position_output;
859 draw->gs.geometry_shader = NULL;
860 draw->gs.num_gs_outputs = 0;
918 draw_geometry_shader_new_instance(struct draw_geometry_shader *gs)
920 if (!gs)
923 gs->in_prim_idx = 0;