diff options
author | Marek Olšák <[email protected]> | 2010-04-05 06:26:11 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2010-04-05 07:09:46 +0200 |
commit | a955f86b31304a1a0f35faa0e0861e920354e23b (patch) | |
tree | ac1fc496b191fc20da8983bfe95d029e819ebe48 /src/gallium/drivers/r300/r300_render.h | |
parent | b71bfc4400e1d7c15a2bebbbd3b26a8770fbf546 (diff) |
r300g: add fallback for back stencil reference value and masks for r3xx-r4xx
This splits rendering into two passes when front and back stencil
reference value, value mask, or write mask don't match.
The advantages of doing it in the driver instead of in st are:
* SWTCL is executed just once and the resulting vertex buffer is reused
in the second pass.
* Lower driver overhead due to the fallback being very close to
the actual draw emission with minimum state change.
Diffstat (limited to 'src/gallium/drivers/r300/r300_render.h')
-rw-r--r-- | src/gallium/drivers/r300/r300_render.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_render.h b/src/gallium/drivers/r300/r300_render.h index 27b5e6a9630..870e1fb53d1 100644 --- a/src/gallium/drivers/r300/r300_render.h +++ b/src/gallium/drivers/r300/r300_render.h @@ -25,6 +25,42 @@ uint32_t r300_translate_primitive(unsigned prim); +void r500_emit_draw_arrays_immediate(struct r300_context *r300, + unsigned mode, + unsigned start, + unsigned count); + +void r500_emit_draw_arrays(struct r300_context *r300, + unsigned mode, + unsigned count); + +void r500_emit_draw_elements(struct r300_context *r300, + struct pipe_buffer* indexBuffer, + unsigned indexSize, + unsigned minIndex, + unsigned maxIndex, + unsigned mode, + unsigned start, + unsigned count); + +void r300_emit_draw_arrays_immediate(struct r300_context *r300, + unsigned mode, + unsigned start, + unsigned count); + +void r300_emit_draw_arrays(struct r300_context *r300, + unsigned mode, + unsigned count); + +void r300_emit_draw_elements(struct r300_context *r300, + struct pipe_buffer* indexBuffer, + unsigned indexSize, + unsigned minIndex, + unsigned maxIndex, + unsigned mode, + unsigned start, + unsigned count); + void r300_draw_range_elements(struct pipe_context* pipe, struct pipe_buffer* indexBuffer, unsigned indexSize, |