r300g/swtcl: force vertex prefetching for non-indexed primitives
This commit is contained in:
@@ -864,7 +864,7 @@ void r300_emit_aos(struct r300_context* r300, unsigned offset, boolean indexed)
|
||||
END_CS;
|
||||
}
|
||||
|
||||
void r300_emit_aos_swtcl(struct r300_context *r300)
|
||||
void r300_emit_aos_swtcl(struct r300_context *r300, boolean indexed)
|
||||
{
|
||||
CS_LOCALS(r300);
|
||||
|
||||
@@ -880,7 +880,7 @@ void r300_emit_aos_swtcl(struct r300_context *r300)
|
||||
*/
|
||||
BEGIN_CS(7);
|
||||
OUT_CS_PKT3(R300_PACKET3_3D_LOAD_VBPNTR, 3);
|
||||
OUT_CS(1);
|
||||
OUT_CS(1 | (!indexed ? R300_VC_FORCE_PREFETCH : 0));
|
||||
OUT_CS(r300->vertex_info.size |
|
||||
(r300->vertex_info.size << 8));
|
||||
OUT_CS(r300->vbo_offset);
|
||||
|
||||
@@ -76,7 +76,7 @@ void r300_emit_scissor_state(struct r300_context* r300,
|
||||
void r300_emit_textures_state(struct r300_context *r300,
|
||||
unsigned size, void *state);
|
||||
|
||||
void r300_emit_aos_swtcl(struct r300_context *r300);
|
||||
void r300_emit_aos_swtcl(struct r300_context *r300, boolean indexed);
|
||||
|
||||
void r300_emit_vertex_stream_state(struct r300_context* r300,
|
||||
unsigned size, void* state);
|
||||
|
||||
@@ -191,7 +191,7 @@ static void r300_prepare_for_rendering(struct r300_context *r300,
|
||||
if (emit_aos)
|
||||
r300_emit_aos(r300, aos_offset, flags & PREP_INDEXED);
|
||||
if (emit_aos_swtcl)
|
||||
r300_emit_aos_swtcl(r300);
|
||||
r300_emit_aos_swtcl(r300, flags & PREP_INDEXED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -997,8 +997,9 @@ static void r500_render_draw_elements(struct vbuf_render* render,
|
||||
|
||||
CS_LOCALS(r300);
|
||||
|
||||
r300_prepare_for_rendering(r300, PREP_FIRST_DRAW | PREP_EMIT_AOS_SWTCL,
|
||||
NULL, dwords, 0, 0);
|
||||
r300_prepare_for_rendering(r300,
|
||||
PREP_FIRST_DRAW | PREP_EMIT_AOS_SWTCL | PREP_INDEXED,
|
||||
NULL, dwords, 0, 0);
|
||||
|
||||
BEGIN_CS(dwords);
|
||||
OUT_CS_REG(R300_GA_COLOR_CONTROL,
|
||||
|
||||
Reference in New Issue
Block a user