All patches in this series except for 8 and 14 are Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>
8 looks fishy and I think the code we have there today is probably not what we want as well. Shouldn't take too much time to fix. Once 8 gets sorted, I'm fine with 14 but we obviously can't push it until we have 8. --Jason On Tue, Jul 28, 2015 at 1:23 AM, Francisco Jerez <curroje...@riseup.net> wrote: > We have a number of optimization passes that repeat the same pattern > before inserting new instructions into the program based on some > previous instruction: They point the default builder at the original > instruction, then call exec_all() and group() to select the same > execution controls the original instruction had, and then maybe call > annotate() to clone the debug annotation from the original > instruction. > > In fact an optimization pass missing any of these steps is likely to > be broken if the intention was to emit new code based on a preexisting > instruction, so let's make it easy for passes to do the right thing by > having an fs_builder constructor that automates the task of setting up > a builder to emit a given instruction provided as argument. > > The following patches fix all cases I've found in which we weren't > explicitly initializing the execution controls of the emitted > instructions, and clean-up optimization passes which were already > doing the right thing to use the new constructor. > --- > src/mesa/drivers/dri/i965/brw_fs_builder.h | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_builder.h > b/src/mesa/drivers/dri/i965/brw_fs_builder.h > index e7d5f8a..12653d0 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_builder.h > +++ b/src/mesa/drivers/dri/i965/brw_fs_builder.h > @@ -64,6 +64,22 @@ namespace brw { > } > > /** > + * Construct an fs_builder that inserts instructions into \p shader > + * before instruction \p inst in basic block \p block. The default > + * execution controls and debug annotation are initialized from the > + * instruction passed as argument. > + */ > + fs_builder(backend_shader *shader, bblock_t *block, fs_inst *inst) : > + shader(shader), block(block), cursor(inst), > + _dispatch_width(inst->exec_size), > + _group(inst->force_sechalf ? 8 : 0), > + force_writemask_all(inst->force_writemask_all) > + { > + annotation.str = inst->annotation; > + annotation.ir = inst->ir; > + } > + > + /** > * Construct an fs_builder that inserts instructions before \p cursor > in > * basic block \p block, inheriting other code generation parameters > * from this. > -- > 2.4.6 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev