Просмотр исходного кода

draw: Always use the llvm middle end when available & enabled.

tags/mesa-7.9-rc1
José Fonseca 15 лет назад
Родитель
Сommit
6ecbbc3c05
2 измененных файлов: 23 добавлений и 17 удалений
  1. 2
    1
      src/gallium/auxiliary/draw/draw_private.h
  2. 21
    16
      src/gallium/auxiliary/draw/draw_pt.c

+ 2
- 1
src/gallium/auxiliary/draw/draw_private.h Просмотреть файл

@@ -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;
};


+ 21
- 16
src/gallium/auxiliary/draw/draw_pt.c Просмотреть файл

@@ -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;

Загрузка…
Отмена
Сохранить