[Mesa-dev] [PATCH 020/133] i965/fs: make emit_fragcoord_interpolation() more general
Jason Ekstrand
jason at jlekstrand.net
Tue Dec 16 18:51:00 PST 2014
Sure
On Dec 16, 2014 10:17 AM, "Connor Abbott" <cwabbott0 at gmail.com> wrote:
> When Ken rebased my texture patches, he changed the titles to say
> "make thing() not take an ir_variable", which I like. Can you change
> the title of this one too?
>
> On Tue, Dec 16, 2014 at 1:04 AM, Jason Ekstrand <jason at jlekstrand.net>
> wrote:
> > From: Connor Abbott <connor.abbott at intel.com>
> >
> > ---
> > src/mesa/drivers/dri/i965/brw_fs.cpp | 13 +++++++------
> > src/mesa/drivers/dri/i965/brw_fs.h | 3 ++-
> > src/mesa/drivers/dri/i965/brw_fs_fp.cpp | 4 +++-
> > src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 3 ++-
> > 4 files changed, 14 insertions(+), 9 deletions(-)
> >
> > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp
> b/src/mesa/drivers/dri/i965/brw_fs.cpp
> > index 6cac6d7..5de862c 100644
> > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> > @@ -1194,16 +1194,17 @@
> fs_visitor::setup_builtin_uniform_values(ir_variable *ir)
> > }
> >
> > fs_reg *
> > -fs_visitor::emit_fragcoord_interpolation(ir_variable *ir)
> > +fs_visitor::emit_fragcoord_interpolation(bool pixel_center_integer,
> > + bool origin_upper_left)
> > {
> > assert(stage == MESA_SHADER_FRAGMENT);
> > brw_wm_prog_key *key = (brw_wm_prog_key*) this->key;
> > - fs_reg *reg = new(this->mem_ctx) fs_reg(this, ir->type);
> > + fs_reg *reg = new(this->mem_ctx) fs_reg(this, glsl_type::vec4_type);
> > fs_reg wpos = *reg;
> > - bool flip = !ir->data.origin_upper_left ^ key->render_to_fbo;
> > + bool flip = !origin_upper_left ^ key->render_to_fbo;
> >
> > /* gl_FragCoord.x */
> > - if (ir->data.pixel_center_integer) {
> > + if (pixel_center_integer) {
> > emit(MOV(wpos, this->pixel_x));
> > } else {
> > emit(ADD(wpos, this->pixel_x, fs_reg(0.5f)));
> > @@ -1211,11 +1212,11 @@
> fs_visitor::emit_fragcoord_interpolation(ir_variable *ir)
> > wpos = offset(wpos, 1);
> >
> > /* gl_FragCoord.y */
> > - if (!flip && ir->data.pixel_center_integer) {
> > + if (!flip && pixel_center_integer) {
> > emit(MOV(wpos, this->pixel_y));
> > } else {
> > fs_reg pixel_y = this->pixel_y;
> > - float offset = (ir->data.pixel_center_integer ? 0.0 : 0.5);
> > + float offset = (pixel_center_integer ? 0.0 : 0.5);
> >
> > if (flip) {
> > pixel_y.negate = true;
> > diff --git a/src/mesa/drivers/dri/i965/brw_fs.h
> b/src/mesa/drivers/dri/i965/brw_fs.h
> > index 58bb3ae..b270623 100644
> > --- a/src/mesa/drivers/dri/i965/brw_fs.h
> > +++ b/src/mesa/drivers/dri/i965/brw_fs.h
> > @@ -471,7 +471,8 @@ public:
> >
> > void emit_dummy_fs();
> > void emit_repclear_shader();
> > - fs_reg *emit_fragcoord_interpolation(ir_variable *ir);
> > + fs_reg *emit_fragcoord_interpolation(bool pixel_center_integer,
> > + bool origin_upper_left);
> > fs_inst *emit_linterp(const fs_reg &attr, const fs_reg &interp,
> > glsl_interp_qualifier interpolation_mode,
> > bool is_centroid, bool is_sample);
> > diff --git a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
> b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
> > index 6348bc1..acef9de 100644
> > --- a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
> > +++ b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
> > @@ -586,8 +586,10 @@ fs_visitor::setup_fp_regs()
> > gl_fragment_program *fp = (gl_fragment_program*) prog;
> > ir->data.pixel_center_integer = fp->PixelCenterInteger;
> > ir->data.origin_upper_left = fp->OriginUpperLeft;
> > + fp_input_regs[i] =
> > + *emit_fragcoord_interpolation(fp->PixelCenterInteger,
> > + fp->OriginUpperLeft);
> > }
> > - fp_input_regs[i] = *emit_fragcoord_interpolation(ir);
> > break;
> > case VARYING_SLOT_FACE:
> > fp_input_regs[i] = *emit_frontfacing_interpolation();
> > diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> > index 399e772..593c6e9 100644
> > --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> > +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> > @@ -92,7 +92,8 @@ fs_visitor::visit(ir_variable *ir)
> > fs_reg(ATTR, ir->data.location,
> > brw_type_for_base_type(ir->type->get_scalar_type()));
> > } else if (!strcmp(ir->name, "gl_FragCoord")) {
> > - reg = emit_fragcoord_interpolation(ir);
> > + reg =
> emit_fragcoord_interpolation(ir->data.pixel_center_integer,
> > + ir->data.origin_upper_left);
> > } else if (!strcmp(ir->name, "gl_FrontFacing")) {
> > reg = emit_frontfacing_interpolation();
> > } else {
> > --
> > 2.2.0
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20141216/d737335f/attachment-0001.html>
More information about the mesa-dev
mailing list