mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
draw/llvm: reduce memory usage
Lets make draw_get_option_use_llvm function available unconditionally and use it to avoid useless allocations when LLVM paths are active. TGSI machine is never used when we're using LLVM. Signed-off-by: Zack Rusin <zackr@vmware.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com> Reviewed-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
552a8e44a9
commit
1c73e919a4
5 changed files with 26 additions and 19 deletions
|
|
@ -68,6 +68,12 @@ draw_get_option_use_llvm(void)
|
|||
}
|
||||
return value;
|
||||
}
|
||||
#else
|
||||
boolean
|
||||
draw_get_option_use_llvm(void)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -288,9 +288,7 @@ draw_get_shader_param(unsigned shader, enum pipe_shader_cap param);
|
|||
int
|
||||
draw_get_shader_param_no_llvm(unsigned shader, enum pipe_shader_cap param);
|
||||
|
||||
#ifdef HAVE_LLVM
|
||||
boolean
|
||||
draw_get_option_use_llvm(void);
|
||||
#endif
|
||||
|
||||
#endif /* DRAW_CONTEXT_H */
|
||||
|
|
|
|||
|
|
@ -674,11 +674,7 @@ int draw_geometry_shader_run(struct draw_geometry_shader *shader,
|
|||
void draw_geometry_shader_prepare(struct draw_geometry_shader *shader,
|
||||
struct draw_context *draw)
|
||||
{
|
||||
#ifdef HAVE_LLVM
|
||||
boolean use_llvm = draw_get_option_use_llvm();
|
||||
#else
|
||||
boolean use_llvm = FALSE;
|
||||
#endif
|
||||
if (!use_llvm && shader && shader->machine->Tokens != shader->state.tokens) {
|
||||
tgsi_exec_machine_bind_shader(shader->machine,
|
||||
shader->state.tokens,
|
||||
|
|
@ -690,16 +686,18 @@ void draw_geometry_shader_prepare(struct draw_geometry_shader *shader,
|
|||
boolean
|
||||
draw_gs_init( struct draw_context *draw )
|
||||
{
|
||||
draw->gs.tgsi.machine = tgsi_exec_machine_create();
|
||||
if (!draw->gs.tgsi.machine)
|
||||
return FALSE;
|
||||
if (!draw_get_option_use_llvm()) {
|
||||
draw->gs.tgsi.machine = tgsi_exec_machine_create();
|
||||
if (!draw->gs.tgsi.machine)
|
||||
return FALSE;
|
||||
|
||||
draw->gs.tgsi.machine->Primitives = align_malloc(
|
||||
MAX_PRIMITIVES * sizeof(struct tgsi_exec_vector), 16);
|
||||
if (!draw->gs.tgsi.machine->Primitives)
|
||||
return FALSE;
|
||||
memset(draw->gs.tgsi.machine->Primitives, 0,
|
||||
MAX_PRIMITIVES * sizeof(struct tgsi_exec_vector));
|
||||
draw->gs.tgsi.machine->Primitives = align_malloc(
|
||||
MAX_PRIMITIVES * sizeof(struct tgsi_exec_vector), 16);
|
||||
if (!draw->gs.tgsi.machine->Primitives)
|
||||
return FALSE;
|
||||
memset(draw->gs.tgsi.machine->Primitives, 0,
|
||||
MAX_PRIMITIVES * sizeof(struct tgsi_exec_vector));
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,9 +149,11 @@ draw_vs_init( struct draw_context *draw )
|
|||
{
|
||||
draw->dump_vs = debug_get_option_gallium_dump_vs();
|
||||
|
||||
draw->vs.tgsi.machine = tgsi_exec_machine_create();
|
||||
if (!draw->vs.tgsi.machine)
|
||||
return FALSE;
|
||||
if (!draw_get_option_use_llvm()) {
|
||||
draw->vs.tgsi.machine = tgsi_exec_machine_create();
|
||||
if (!draw->vs.tgsi.machine)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
draw->vs.emit_cache = translate_cache_create();
|
||||
if (!draw->vs.emit_cache)
|
||||
|
|
@ -173,7 +175,8 @@ draw_vs_destroy( struct draw_context *draw )
|
|||
if (draw->vs.emit_cache)
|
||||
translate_cache_destroy(draw->vs.emit_cache);
|
||||
|
||||
tgsi_exec_machine_destroy(draw->vs.tgsi.machine);
|
||||
if (!draw_get_option_use_llvm())
|
||||
tgsi_exec_machine_destroy(draw->vs.tgsi.machine);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ vs_exec_prepare( struct draw_vertex_shader *shader,
|
|||
{
|
||||
struct exec_vertex_shader *evs = exec_vertex_shader(shader);
|
||||
|
||||
debug_assert(!draw_get_option_use_llvm());
|
||||
/* Specify the vertex program to interpret/execute.
|
||||
* Avoid rebinding when possible.
|
||||
*/
|
||||
|
|
@ -96,6 +97,7 @@ vs_exec_run_linear( struct draw_vertex_shader *shader,
|
|||
unsigned slot;
|
||||
boolean clamp_vertex_color = shader->draw->rasterizer->clamp_vertex_color;
|
||||
|
||||
debug_assert(!draw_get_option_use_llvm());
|
||||
tgsi_exec_set_constant_buffers(machine, PIPE_MAX_CONSTANT_BUFFERS,
|
||||
constants, const_size);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue