struct draw_context *draw_create( void ) { struct draw_context *draw = CALLOC_STRUCT( draw_context ); if (draw == NULL) goto fail; ASSIGN_4V( draw->plane[0], -1, 0, 0, 1 ); ASSIGN_4V( draw->plane[1], 1, 0, 0, 1 ); ASSIGN_4V( draw->plane[2], 0, -1, 0, 1 ); ASSIGN_4V( draw->plane[3], 0, 1, 0, 1 ); ASSIGN_4V( draw->plane[4], 0, 0, 1, 1 ); /* yes these are correct */ ASSIGN_4V( draw->plane[5], 0, 0, -1, 1 ); /* mesa's a bit wonky */ draw->nr_planes = 6; draw->reduced_prim = ~0; /* != any of PIPE_PRIM_x */ if (!draw_pipeline_init( draw )) goto fail; if (!draw_pt_init( draw )) goto fail; if (!draw_vs_init( draw )) goto fail; return draw; fail: draw_destroy( draw ); return NULL; }
boolean draw_init(struct draw_context *draw) { /* * Note that several functions compute the clipmask of the predefined * formats with hardcoded formulas instead of using these. So modifications * here must be reflected there too. */ ASSIGN_4V( draw->plane[0], -1, 0, 0, 1 ); ASSIGN_4V( draw->plane[1], 1, 0, 0, 1 ); ASSIGN_4V( draw->plane[2], 0, -1, 0, 1 ); ASSIGN_4V( draw->plane[3], 0, 1, 0, 1 ); ASSIGN_4V( draw->plane[4], 0, 0, 1, 1 ); /* yes these are correct */ ASSIGN_4V( draw->plane[5], 0, 0, -1, 1 ); /* mesa's a bit wonky */ draw->clip_xy = TRUE; draw->clip_z = TRUE; draw->pt.user.planes = (float (*) [DRAW_TOTAL_CLIP_PLANES][4]) &(draw->plane[0]); draw->pt.user.eltMax = ~0; if (!draw_pipeline_init( draw )) return FALSE; if (!draw_pt_init( draw )) return FALSE; if (!draw_vs_init( draw )) return FALSE; if (!draw_gs_init( draw )) return FALSE; draw->quads_always_flatshade_last = !draw->pipe->screen->get_param( draw->pipe->screen, PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION); draw->floating_point_depth = false; return TRUE; }
boolean draw_init(struct draw_context *draw) { /* * Note that several functions compute the clipmask of the predefined * formats with hardcoded formulas instead of using these. So modifications * here must be reflected there too. */ ASSIGN_4V( draw->plane[0], -1, 0, 0, 1 ); ASSIGN_4V( draw->plane[1], 1, 0, 0, 1 ); ASSIGN_4V( draw->plane[2], 0, -1, 0, 1 ); ASSIGN_4V( draw->plane[3], 0, 1, 0, 1 ); ASSIGN_4V( draw->plane[4], 0, 0, 1, 1 ); /* yes these are correct */ ASSIGN_4V( draw->plane[5], 0, 0, -1, 1 ); /* mesa's a bit wonky */ draw->nr_planes = 6; draw->clip_xy = TRUE; draw->clip_z = TRUE; draw->reduced_prim = ~0; /* != any of PIPE_PRIM_x */ if (!draw_pipeline_init( draw )) return FALSE; if (!draw_pt_init( draw )) return FALSE; if (!draw_vs_init( draw )) return FALSE; if (!draw_gs_init( draw )) return FALSE; return TRUE; }