summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2012-11-20 17:30:46 -0800
committerKenneth Graunke <kenneth@whitecape.org>2012-11-26 19:52:34 -0800
commitcd0acb1abe4c2c3120acf18f594210989bd8ec2e (patch)
tree7121d6edefe13e09260a8f5bfb75a7d28e560f8f
parent4d09fe938e72b26d814b6b52caee5112cf6f1103 (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 <eric@anholt.net> Reviewed-by: Paul Berry <stereotype441@gmail.com>
-rw-r--r--src/mesa/drivers/dri/i965/brw_cfg.cpp17
-rw-r--r--src/mesa/drivers/dri/i965/brw_cfg.h4
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();