diff options
author | Kenneth Graunke <[email protected]> | 2012-11-20 17:30:46 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2012-11-26 19:52:34 -0800 |
commit | cd0acb1abe4c2c3120acf18f594210989bd8ec2e (patch) | |
tree | 7121d6edefe13e09260a8f5bfb75a7d28e560f8f | |
parent | 4d09fe938e72b26d814b6b52caee5112cf6f1103 (diff) |
i965: Make it possible to create a cfg_t without a backend_visitor.
All we really need is a memory context and the instruction list; passing
a backend_visitor is just convenient at times.
This will be necessary two patches from now.
Reviewed-by: Eric Anholt <[email protected]>
Reviewed-by: Paul Berry <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_cfg.cpp | 17 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_cfg.h | 4 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_cfg.cpp b/src/mesa/drivers/dri/i965/brw_cfg.cpp index 79aafb23826..f4cfcd56875 100644 --- a/src/mesa/drivers/dri/i965/brw_cfg.cpp +++ b/src/mesa/drivers/dri/i965/brw_cfg.cpp @@ -68,7 +68,18 @@ bblock_t::make_list(void *mem_ctx) cfg_t::cfg_t(backend_visitor *v) { - mem_ctx = ralloc_context(v->mem_ctx); + create(v->mem_ctx, &v->instructions); +} + +cfg_t::cfg_t(void *mem_ctx, exec_list *instructions) +{ + create(mem_ctx, instructions); +} + +void +cfg_t::create(void *parent_mem_ctx, exec_list *instructions) +{ + mem_ctx = ralloc_context(parent_mem_ctx); block_list.make_empty(); num_blocks = 0; ip = 0; @@ -82,9 +93,9 @@ cfg_t::cfg_t(backend_visitor *v) set_next_block(entry); - entry->start = (backend_instruction *)v->instructions.get_head(); + entry->start = (backend_instruction *) instructions->get_head(); - foreach_list(node, &v->instructions) { + foreach_list(node, instructions) { backend_instruction *inst = (backend_instruction *)node; cur->end = inst; diff --git a/src/mesa/drivers/dri/i965/brw_cfg.h b/src/mesa/drivers/dri/i965/brw_cfg.h index 3b031df938b..95a18e9e082 100644 --- a/src/mesa/drivers/dri/i965/brw_cfg.h +++ b/src/mesa/drivers/dri/i965/brw_cfg.h @@ -79,7 +79,11 @@ public: } cfg_t(backend_visitor *v); + cfg_t(void *mem_ctx, exec_list *instructions); ~cfg_t(); + + void create(void *mem_ctx, exec_list *instructions); + bblock_t *new_block(); void set_next_block(bblock_t *block); void make_block_array(); |