mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
draw: Always use the llvm middle end when available & enabled.
This commit is contained in:
parent
7fd9e3cfb0
commit
6ecbbc3c05
2 changed files with 23 additions and 17 deletions
|
|
@ -132,6 +132,7 @@ struct draw_context
|
|||
struct draw_pt_middle_end *fetch_emit;
|
||||
struct draw_pt_middle_end *fetch_shade_emit;
|
||||
struct draw_pt_middle_end *general;
|
||||
struct draw_pt_middle_end *llvm;
|
||||
} middle;
|
||||
|
||||
struct {
|
||||
|
|
@ -253,8 +254,8 @@ struct draw_context
|
|||
|
||||
#ifdef HAVE_LLVM
|
||||
LLVMExecutionEngineRef engine;
|
||||
boolean use_llvm;
|
||||
#endif
|
||||
|
||||
void *driver_private;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -97,12 +97,16 @@ draw_pt_arrays(struct draw_context *draw,
|
|||
opt |= PT_SHADE;
|
||||
}
|
||||
|
||||
if (opt == 0)
|
||||
middle = draw->pt.middle.fetch_emit;
|
||||
else if (opt == PT_SHADE && !draw->pt.no_fse)
|
||||
middle = draw->pt.middle.fetch_shade_emit;
|
||||
else
|
||||
middle = draw->pt.middle.general;
|
||||
if (draw->pt.middle.llvm) {
|
||||
middle = draw->pt.middle.llvm;
|
||||
} else {
|
||||
if (opt == 0)
|
||||
middle = draw->pt.middle.fetch_emit;
|
||||
else if (opt == PT_SHADE && !draw->pt.no_fse)
|
||||
middle = draw->pt.middle.fetch_shade_emit;
|
||||
else
|
||||
middle = draw->pt.middle.general;
|
||||
}
|
||||
|
||||
|
||||
/* Pick the right frontend
|
||||
|
|
@ -148,25 +152,26 @@ boolean draw_pt_init( struct draw_context *draw )
|
|||
if (!draw->pt.middle.fetch_shade_emit)
|
||||
return FALSE;
|
||||
|
||||
#if HAVE_LLVM
|
||||
draw->use_llvm = debug_get_option_draw_use_llvm();
|
||||
if (draw->use_llvm)
|
||||
draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit_llvm( draw );
|
||||
#else
|
||||
draw->pt.middle.general = NULL;
|
||||
#endif
|
||||
|
||||
if (!draw->pt.middle.general)
|
||||
draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit( draw );
|
||||
draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit( draw );
|
||||
if (!draw->pt.middle.general)
|
||||
return FALSE;
|
||||
|
||||
#if HAVE_LLVM
|
||||
if (debug_get_option_draw_use_llvm())
|
||||
draw->pt.middle.llvm = draw_pt_fetch_pipeline_or_emit_llvm( draw );
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void draw_pt_destroy( struct draw_context *draw )
|
||||
{
|
||||
if (draw->pt.middle.llvm) {
|
||||
draw->pt.middle.llvm->destroy( draw->pt.middle.llvm );
|
||||
draw->pt.middle.llvm = NULL;
|
||||
}
|
||||
|
||||
if (draw->pt.middle.general) {
|
||||
draw->pt.middle.general->destroy( draw->pt.middle.general );
|
||||
draw->pt.middle.general = NULL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue