On Mon, 22 Aug 2011 16:26:23 -0700, Kenneth Graunke <kenn...@whitecape.org> 
wrote:
> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_defines.h      |    2 +
>  src/mesa/drivers/dri/i965/brw_fs.cpp         |    1 +
>  src/mesa/drivers/dri/i965/brw_fs.h           |    3 +-
>  src/mesa/drivers/dri/i965/brw_fs_emit.cpp    |    4 +++
>  src/mesa/drivers/dri/i965/brw_fs_visitor.cpp |   28 +++++++++++++++++++------
>  src/mesa/program/ir_to_mesa.cpp              |    7 ++++-
>  6 files changed, 35 insertions(+), 10 deletions(-)

> diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp 
> b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> index 792799d..3551e3d 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
> @@ -751,6 +751,8 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, 
> fs_reg coordinate,
>     int base_mrf = 2;
>     int reg_width = c->dispatch_width / 8;
>     bool header_present = false;
> +   const int vector_elements =
> +      ir->coordinate ? ir->coordinate->type->vector_elements : 0;
>  
>     if (ir->offset) {
>        /* The offsets set up by the ir_texture visitor are in the
> @@ -761,7 +763,7 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, 
> fs_reg coordinate,
>        base_mrf--;
>     }
>  

Whoah, called the accept() method of the null pointer for the coordinate
and things didn't blow up?

> diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
> index b222005..e7609df 100644
> --- a/src/mesa/program/ir_to_mesa.cpp
> +++ b/src/mesa/program/ir_to_mesa.cpp
> @@ -2104,7 +2104,10 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
>     ir_to_mesa_instruction *inst = NULL;
>     prog_opcode opcode = OPCODE_NOP;
>  
> -   ir->coordinate->accept(this);
> +   if (ir->op == ir_txs)
> +      this->result = src_reg_for_float(0.0);
> +   else
> +      ir->coordinate->accept(this);
>  
>     /* Put our coords in a temp.  We'll need to modify them for shadow,
>      * projection, or LOD, so the only case we'd use it as is is if
> @@ -2128,6 +2131,7 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
>  
>     switch (ir->op) {
>     case ir_tex:
> +   case ir_txs:
>        opcode = OPCODE_TEX;
>        break;
>     case ir_txb:
> @@ -2148,7 +2152,6 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
>        dy = this->result;
>        break;
>     case ir_txf:
> -   case ir_txs:
>        assert(!"GLSL 1.30 features unsupported");
>        break;
>     }

The ir_to_mesa hunks probably deserve a separate commit to explain
what's going on there.

The other patches are:

Reviewed-by: Eric Anholt <e...@anholt.net>

Attachment: pgpgEgApZsVQG.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to