[Mesa-dev] r300 compiler vertex shader loops

Marek Olšák maraeo at gmail.com
Sat Aug 7 06:01:56 PDT 2010

Hi Tom,

we use OUT_CS_REG_SEQ for updating registers which are next to each other.
It saves CS space.

OUT_CS_REG(reg, a1);
OUT_CS_REG(reg + 4, a2);
OUT_CS_REG(reg + 8, a3);

can be rewritten to

OUT_CS_REQ_SEQ(reg, 3); // auto-increment reg on a register write.

And you can replace a few OUT_CS with OUT_CS_TABLE. Your fc_op_addrs is
nicely packed (alternating LW and UW exactly like the registers), so you can

OUT_CS_REG_SEQ(R500_VAP_PVS_FLOW_CNTL_ADDRS_LW_0, code->num_fc_ops * 2);
OUT_CS_TABLE(code->fc_op_addrs, code->num_fc_ops * 2);
OUT_CS_REG_SEQ(R300_VAP_PVS_FLOW_CNTL_LOOP_INDEX_0, code->num_fc_ops);
OUT_CS_TABLE(code->fc_loop_index, code->num_fc_ops);

Otherwise r300g changes look good to me.


On Sat, Aug 7, 2010 at 4:36 AM, Tom Stellard <tstellar at gmail.com> wrote:

> Hi,
> The two attached patches enable the hardware loop capabilities for
> vertex shaders.  I haven't tested on an r300 card yet, but glsl-vs-loop
> from piglit passes on my r500 card.  Nested loops don't work yet, I
> think it is an issue with the branch emulation, but I'm not sure.
> It would be helpful if someone could review the changes I made
> especially to r300_emit.c, r300_state.c, and both r300_reg.h files to
> make sure I'm doing things the right way.
> Thanks.
> -Tom
> _______________________________________________
> 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/20100807/1eaacb6f/attachment.htm>

More information about the mesa-dev mailing list