From: Xiang, Haihao Date: Fri, 24 Oct 2008 08:05:48 +0000 (+0800) Subject: i965: don't emit state when dri_bufmgr_check_aperture_space fails. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ec8076264ea2390d4cb749be5c88bbf2bf5d4847;p=mesa.git i965: don't emit state when dri_bufmgr_check_aperture_space fails. This ensures there is an unfilled batchbuffer used for emitting states again. Partial fix for #17964. --- diff --git a/src/mesa/drivers/dri/i965/brw_curbe.c b/src/mesa/drivers/dri/i965/brw_curbe.c index 7cddd3a7dee..6ffa221d669 100644 --- a/src/mesa/drivers/dri/i965/brw_curbe.c +++ b/src/mesa/drivers/dri/i965/brw_curbe.c @@ -333,8 +333,10 @@ static void emit_constant_buffer(struct brw_context *brw) brw->curbe.curbe_bo, }; - if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) + if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) { intel_batchbuffer_flush(intel->batch); + return; + } BEGIN_BATCH(2, IGNORE_CLIPRECTS); if (sz == 0) { diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index 487c638ce21..afa8694ebb3 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -86,8 +86,10 @@ static void upload_binding_table_pointers(struct brw_context *brw) brw->wm.bind_bo, }; - if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) + if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) { intel_batchbuffer_flush(intel->batch); + return; + } BEGIN_BATCH(6, IGNORE_CLIPRECTS); OUT_BATCH(CMD_BINDING_TABLE_PTRS << 16 | (6 - 2)); @@ -152,8 +154,10 @@ static void upload_psp_urb_cbs(struct brw_context *brw ) brw->cc.state_bo, }; - if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) + if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) { intel_batchbuffer_flush(intel->batch); + return; + } upload_pipelined_state_pointers(brw); brw_upload_urb_fence(brw); @@ -216,8 +220,10 @@ static void emit_depthbuffer(struct brw_context *brw) return; } - if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) + if (dri_bufmgr_check_aperture_space(aper_array, ARRAY_SIZE(aper_array))) { intel_batchbuffer_flush(intel->batch); + return; + } BEGIN_BATCH(len, IGNORE_CLIPRECTS); OUT_BATCH(CMD_DEPTH_BUFFER << 16 | (len - 2));