summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_draw.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2012-08-26 15:09:23 -0700
committerEric Anholt <eric@anholt.net>2012-08-28 11:43:04 -0700
commit993c52d0be5bdf0e30e64ab4c6e1347c5dcb8e3b (patch)
tree28d68aa00c792fccc82889c514b123fb55705e65 /src/mesa/drivers/dri/i965/brw_draw.c
parentb0d23b66cf2514949650bdfa9c918ab2fb1d8986 (diff)
downloadexternal_mesa3d-993c52d0be5bdf0e30e64ab4c6e1347c5dcb8e3b.zip
external_mesa3d-993c52d0be5bdf0e30e64ab4c6e1347c5dcb8e3b.tar.gz
external_mesa3d-993c52d0be5bdf0e30e64ab4c6e1347c5dcb8e3b.tar.bz2
i965: Replace general sw fallback support with a manual check for rendermode.
There were no other cases that set it any more. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_draw.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_draw.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c
index b335e96..4365770 100644
--- a/src/mesa/drivers/dri/i965/brw_draw.c
+++ b/src/mesa/drivers/dri/i965/brw_draw.c
@@ -491,12 +491,6 @@ retry:
if (brw->state.dirty.brw) {
intel->no_batch_wrap = true;
brw_upload_state(brw);
-
- if (unlikely(brw->intel.Fallback)) {
- intel->no_batch_wrap = false;
- retval = false;
- goto out;
- }
}
if (intel->gen >= 7)
@@ -533,7 +527,6 @@ retry:
if (intel->always_flush_batch)
intel_batchbuffer_flush(intel);
- out:
brw_state_cache_check_size(brw);
brw_postdraw_set_buffers_need_resolve(brw);
@@ -551,7 +544,6 @@ void brw_draw_prims( struct gl_context *ctx,
struct gl_transform_feedback_object *tfb_vertcount )
{
const struct gl_client_array **arrays = ctx->Array._DrawArrays;
- bool retval;
if (!_mesa_check_conditional_render(ctx))
return;
@@ -578,20 +570,23 @@ void brw_draw_prims( struct gl_context *ctx,
}
}
- /* Make a first attempt at drawing:
- */
- retval = brw_try_draw_prims(ctx, arrays, prim, nr_prims, ib, min_index, max_index);
-
- /* Otherwise, we really are out of memory. Pass the drawing
- * command to the software tnl module and which will in turn call
- * swrast to do the drawing.
+ /* Do GL_SELECT and GL_FEEDBACK rendering using swrast, even though it
+ * won't support all the extensions we support.
*/
- if (!retval) {
- _swsetup_Wakeup(ctx);
- _tnl_wakeup(ctx);
+ if (ctx->RenderMode != GL_RENDER) {
+ perf_debug("%s render mode not supported in hardware\n",
+ _mesa_lookup_enum_by_nr(ctx->RenderMode));
+ _swsetup_Wakeup(ctx);
+ _tnl_wakeup(ctx);
_tnl_draw_prims(ctx, arrays, prim, nr_prims, ib, min_index, max_index);
+ return;
}
+ /* Try drawing with the hardware, but don't do anything else if we can't
+ * manage it. swrast doesn't support our featureset, so we can't fall back
+ * to it.
+ */
+ brw_try_draw_prims(ctx, arrays, prim, nr_prims, ib, min_index, max_index);
}
void brw_draw_init( struct brw_context *brw )