mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 22:40:09 +01:00
i965/fs: Allocate a common IR builder object in fs_visitor.
v2: Call fs_builder::at_end() to point the builder at the end of the
program explicitly.
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
8ea8f83c8f
commit
e04b4156a7
3 changed files with 16 additions and 1 deletions
|
|
@ -3989,6 +3989,17 @@ fs_visitor::calculate_register_pressure()
|
|||
void
|
||||
fs_visitor::optimize()
|
||||
{
|
||||
/* bld is the common builder object pointing at the end of the program we
|
||||
* used to translate it into i965 IR. For the optimization and lowering
|
||||
* passes coming next, any code added after the end of the program without
|
||||
* having explicitly called fs_builder::at() clearly points at a mistake.
|
||||
* Ideally optimization passes wouldn't be part of the visitor so they
|
||||
* wouldn't have access to bld at all, but they do, so just in case some
|
||||
* pass forgets to ask for a location explicitly set it to NULL here to
|
||||
* make it trip.
|
||||
*/
|
||||
bld = bld.at(NULL, NULL);
|
||||
|
||||
split_virtual_grfs();
|
||||
|
||||
move_uniform_array_access_to_pull_constants();
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "brw_shader.h"
|
||||
#include "brw_ir_fs.h"
|
||||
#include "brw_fs_builder.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
|
|
@ -453,6 +454,7 @@ public:
|
|||
const unsigned dispatch_width; /**< 8 or 16 */
|
||||
|
||||
unsigned promoted_constants;
|
||||
brw::fs_builder bld;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@
|
|||
#include "glsl/ir_optimization.h"
|
||||
#include "program/sampler.h"
|
||||
|
||||
using namespace brw;
|
||||
|
||||
fs_reg *
|
||||
fs_visitor::emit_vs_system_value(int location)
|
||||
|
|
@ -2045,7 +2046,8 @@ fs_visitor::fs_visitor(struct brw_context *brw,
|
|||
reg_null_d(retype(brw_null_vec(dispatch_width), BRW_REGISTER_TYPE_D)),
|
||||
reg_null_ud(retype(brw_null_vec(dispatch_width), BRW_REGISTER_TYPE_UD)),
|
||||
key(key), prog_data(prog_data),
|
||||
dispatch_width(dispatch_width), promoted_constants(0)
|
||||
dispatch_width(dispatch_width), promoted_constants(0),
|
||||
bld(fs_builder(this, dispatch_width).at_end())
|
||||
{
|
||||
this->mem_ctx = mem_ctx;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue