projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
compiler/glsl: explicitly store NumUniformBlocks
[mesa.git]
/
src
/
compiler
/
glsl
/
lower_output_reads.cpp
diff --git
a/src/compiler/glsl/lower_output_reads.cpp
b/src/compiler/glsl/lower_output_reads.cpp
index b0045f0c8fb25e27e46d316b97fdada247ac1737..7a182130b2e2770a20eb996e85fabf017c7a5c63 100644
(file)
--- a/
src/compiler/glsl/lower_output_reads.cpp
+++ b/
src/compiler/glsl/lower_output_reads.cpp
@@
-47,8
+47,6
@@
protected:
*/
hash_table *replacements;
*/
hash_table *replacements;
- void *mem_ctx;
-
unsigned stage;
public:
output_read_remover(unsigned stage);
unsigned stage;
public:
output_read_remover(unsigned stage);
@@
-74,13
+72,12
@@
static unsigned
hash_table_var_hash(const void *key)
{
const ir_variable * var = static_cast<const ir_variable *>(key);
hash_table_var_hash(const void *key)
{
const ir_variable * var = static_cast<const ir_variable *>(key);
- return _mesa_
key_
hash_string(var->name);
+ return _mesa_hash_string(var->name);
}
output_read_remover::output_read_remover(unsigned stage)
{
this->stage = stage;
}
output_read_remover::output_read_remover(unsigned stage)
{
this->stage = stage;
- mem_ctx = ralloc_context(NULL);
replacements = _mesa_hash_table_create(NULL, hash_table_var_hash,
_mesa_key_pointer_equal);
}
replacements = _mesa_hash_table_create(NULL, hash_table_var_hash,
_mesa_key_pointer_equal);
}
@@
-88,13
+85,12
@@
output_read_remover::output_read_remover(unsigned stage)
output_read_remover::~output_read_remover()
{
_mesa_hash_table_destroy(replacements, NULL);
output_read_remover::~output_read_remover()
{
_mesa_hash_table_destroy(replacements, NULL);
- ralloc_free(mem_ctx);
}
ir_visitor_status
output_read_remover::visit(ir_dereference_variable *ir)
{
}
ir_visitor_status
output_read_remover::visit(ir_dereference_variable *ir)
{
- if (ir->var->data.mode != ir_var_shader_out)
+ if (ir->var->data.mode != ir_var_shader_out
|| ir->var->data.fb_fetch_output
)
return visit_continue;
hash_entry *entry = _mesa_hash_table_search(replacements, ir->var);
return visit_continue;
hash_entry *entry = _mesa_hash_table_search(replacements, ir->var);
@@
-105,6
+101,10
@@
output_read_remover::visit(ir_dereference_variable *ir)
void *var_ctx = ralloc_parent(ir->var);
temp = new(var_ctx) ir_variable(ir->var->type, ir->var->name,
ir_var_temporary);
void *var_ctx = ralloc_parent(ir->var);
temp = new(var_ctx) ir_variable(ir->var->type, ir->var->name,
ir_var_temporary);
+ /* copy flags which affect arithematical precision */
+ temp->data.invariant = ir->var->data.invariant;
+ temp->data.precise = ir->var->data.precise;
+ temp->data.precision = ir->var->data.precision;
_mesa_hash_table_insert(replacements, ir->var, temp);
ir->var->insert_after(temp);
}
_mesa_hash_table_insert(replacements, ir->var, temp);
ir->var->insert_after(temp);
}