projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nir: Move nir_lower_uniforms_to_ubo to compiler/nir.
[mesa.git]
/
src
/
compiler
/
nir
/
nir.c
diff --git
a/src/compiler/nir/nir.c
b/src/compiler/nir/nir.c
index 3345266fa69e4dcd1fa94445ff98c5e58cac018d..d759dfdce2101df9fe54b38606b453204f29e539 100644
(file)
--- a/
src/compiler/nir/nir.c
+++ b/
src/compiler/nir/nir.c
@@
-125,11
+125,11
@@
nir_shader_add_variable(nir_shader *shader, nir_variable *var)
assert(!"invalid mode");
break;
assert(!"invalid mode");
break;
- case nir_var_function:
+ case nir_var_function
_temp
:
assert(!"nir_shader_add_variable cannot be used for local variables");
break;
assert(!"nir_shader_add_variable cannot be used for local variables");
break;
- case nir_var_
private
:
+ case nir_var_
shader_temp
:
exec_list_push_tail(&shader->globals, &var->node);
break;
exec_list_push_tail(&shader->globals, &var->node);
break;
@@
-142,16
+142,20
@@
nir_shader_add_variable(nir_shader *shader, nir_variable *var)
break;
case nir_var_uniform:
break;
case nir_var_uniform:
- case nir_var_ubo:
- case nir_var_ssbo:
+ case nir_var_
mem_
ubo:
+ case nir_var_
mem_
ssbo:
exec_list_push_tail(&shader->uniforms, &var->node);
break;
exec_list_push_tail(&shader->uniforms, &var->node);
break;
- case nir_var_shared:
- assert(
shader->info.stage == MESA_SHADER_COMPUTE
);
+ case nir_var_
mem_
shared:
+ assert(
gl_shader_stage_is_compute(shader->info.stage)
);
exec_list_push_tail(&shader->shared, &var->node);
break;
exec_list_push_tail(&shader->shared, &var->node);
break;
+ case nir_var_mem_global:
+ assert(!"nir_shader_add_variable cannot be used for global memory");
+ break;
+
case nir_var_system_value:
exec_list_push_tail(&shader->system_values, &var->node);
break;
case nir_var_system_value:
exec_list_push_tail(&shader->system_values, &var->node);
break;
@@
-189,7
+193,7
@@
nir_local_variable_create(nir_function_impl *impl,
nir_variable *var = rzalloc(impl->function->shader, nir_variable);
var->name = ralloc_strdup(var, name);
var->type = type;
nir_variable *var = rzalloc(impl->function->shader, nir_variable);
var->name = ralloc_strdup(var, name);
var->type = type;
- var->data.mode = nir_var_function;
+ var->data.mode = nir_var_function
_temp
;
nir_function_impl_add_variable(impl, var);
nir_function_impl_add_variable(impl, var);
@@
-330,8
+334,7
@@
nir_block_create(nir_shader *shader)
cf_init(&block->cf_node, nir_cf_node_block);
block->successors[0] = block->successors[1] = NULL;
cf_init(&block->cf_node, nir_cf_node_block);
block->successors[0] = block->successors[1] = NULL;
- block->predecessors = _mesa_set_create(block, _mesa_hash_pointer,
- _mesa_key_pointer_equal);
+ block->predecessors = _mesa_pointer_set_create(block);
block->imm_dom = NULL;
/* XXX maybe it would be worth it to defer allocation? This
* way it doesn't get allocated for shader refs that never run
block->imm_dom = NULL;
/* XXX maybe it would be worth it to defer allocation? This
* way it doesn't get allocated for shader refs that never run
@@
-341,8
+344,7
@@
nir_block_create(nir_shader *shader)
* which is later used to do state specific lowering and futher
* opt. Do any of the references not need dominance metadata?
*/
* which is later used to do state specific lowering and futher
* opt. Do any of the references not need dominance metadata?
*/
- block->dom_frontier = _mesa_set_create(block, _mesa_hash_pointer,
- _mesa_key_pointer_equal);
+ block->dom_frontier = _mesa_pointer_set_create(block);
exec_list_make_empty(&block->instr_list);
exec_list_make_empty(&block->instr_list);
@@
-1509,7
+1511,8
@@
void
nir_ssa_def_rewrite_uses_after(nir_ssa_def *def, nir_src new_src,
nir_instr *after_me)
{
nir_ssa_def_rewrite_uses_after(nir_ssa_def *def, nir_src new_src,
nir_instr *after_me)
{
- assert(!new_src.is_ssa || def != new_src.ssa);
+ if (new_src.is_ssa && def == new_src.ssa)
+ return;
nir_foreach_use_safe(use_src, def) {
assert(use_src->parent_instr != def->parent_instr);
nir_foreach_use_safe(use_src, def) {
assert(use_src->parent_instr != def->parent_instr);