diff options
author | Eric Anholt <eric@anholt.net> | 2012-08-26 15:09:23 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2012-08-28 11:43:04 -0700 |
commit | 993c52d0be5bdf0e30e64ab4c6e1347c5dcb8e3b (patch) | |
tree | 28d68aa00c792fccc82889c514b123fb55705e65 /src/mesa/drivers/dri/i965/brw_draw.c | |
parent | b0d23b66cf2514949650bdfa9c918ab2fb1d8986 (diff) | |
download | external_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.c | 31 |
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 ) |