i965/vs: Allocate register set once at context creation.

Now that we use a fixed set of register classes, we can set up the
register set and conflict graphs once, at context creation, rather than
on every VS compile.  This is obviously less expensive, and also what
we already do in the FS backend.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
Kenneth Graunke
2013-08-21 16:27:11 -07:00
parent a149f744d9
commit d65e3c082a
3 changed files with 6 additions and 4 deletions
+1
View File
@@ -476,6 +476,7 @@ brwCreateContext(int api,
}
brw_fs_alloc_reg_sets(brw);
brw_vec4_alloc_reg_set(brw);
if (INTEL_DEBUG & DEBUG_SHADER_TIME)
brw_init_shader_time(brw);
+3
View File
@@ -1413,6 +1413,9 @@ void brw_upload_cs_urb_state(struct brw_context *brw);
*/
void brw_fs_alloc_reg_sets(struct brw_context *brw);
/* brw_vec4_reg_allocate.cpp */
void brw_vec4_alloc_reg_set(struct brw_context *brw);
/* brw_disasm.c */
int brw_disasm (FILE *file, struct brw_instruction *inst, int gen);
@@ -96,8 +96,8 @@ vec4_visitor::reg_allocate_trivial()
return true;
}
static void
brw_alloc_reg_set(struct brw_context *brw)
extern "C" void
brw_vec4_alloc_reg_set(struct brw_context *brw)
{
int base_reg_count = brw->gen >= 7 ? GEN7_MRF_HACK_START : BRW_MAX_GRF;
@@ -188,8 +188,6 @@ vec4_visitor::reg_allocate()
calculate_live_intervals();
brw_alloc_reg_set(brw);
int node_count = virtual_grf_count;
int first_payload_node = node_count;
node_count += payload_reg_count;