summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_render.c
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2010-06-08 23:45:11 +0200
committerMarek Olšák <maraeo@gmail.com>2010-06-08 23:50:05 +0200
commitfccfb7b16512a36424370dc1942cdedd3d1c208a (patch)
tree30e7c4356adab9827f487e7f05a77511071dcb8f /src/gallium/drivers/r300/r300_render.c
parentbcf63dbbd8fd31b724294b34a62a0e6c565dce87 (diff)
r300g: skip rendering for unsupported vertex formats instead of aborting
The next step is to replace skipping by an actual fallback.
Diffstat (limited to 'src/gallium/drivers/r300/r300_render.c')
-rw-r--r--src/gallium/drivers/r300/r300_render.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c
index 23caaa5473..80dea8be98 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -333,7 +333,7 @@ static void r300_emit_draw_arrays_immediate(struct r300_context *r300,
for (i = 0; i < vertex_element_count; i++) {
velem = &r300->velems->velem[i];
offset[i] = velem->src_offset / 4;
- size[i] = util_format_get_blocksize(velem->src_format) / 4;
+ size[i] = r300->velems->hw_format_size[i] / 4;
vertex_size += size[i];
vbi = velem->vertex_buffer_index;
@@ -610,6 +610,11 @@ static void r300_draw_range_elements(struct pipe_context* pipe,
return;
}
+ if (r300->incompatible_vb_layout ||
+ r300->velems->incompatible_layout) {
+ return;
+ }
+
if (!u_trim_pipe_prim(mode, &count)) {
return;
}
@@ -704,6 +709,11 @@ static void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
return;
}
+ if (r300->incompatible_vb_layout ||
+ r300->velems->incompatible_layout) {
+ return;
+ }
+
if (!u_trim_pipe_prim(mode, &count)) {
return;
}