[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.
BEGIN_CS(6);
OUT_CS_REG(reg, a1);
OUT_CS_REG(reg + 4, a2);
OUT_CS_REG(reg + 8, a3);
END_CS;
can be rewritten to
BEGIN_CS(4);
OUT_CS_REQ_SEQ(reg, 3); // auto-increment reg on a register write.
OUT_CS(a1);
OUT_CS(a2);
OUT_CS(a3);
END_CS;
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
write:
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.
-Marek
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