From: Jason Ekstrand Date: Wed, 13 Oct 2021 21:31:57 +0000 (-0500) Subject: i965: Emit a NULL surface for buffer textures with no buffer X-Git-Tag: upstream/22.3.5~16624 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=393fda2d341f65cba6e160d4704983370ae041f9;p=platform%2Fupstream%2Fmesa.git i965: Emit a NULL surface for buffer textures with no buffer This is a preexisting bug but it was uncovered by 231653ea3506 ("intel/isl: Add a max_buffer_size limit to isl_device") which added an assert(num_elements > 0) for typed buffers. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Kenneth Graunke Part-of: --- diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 5caeda5..c750bc7 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -680,6 +680,11 @@ buffer_texture_range_size(struct brw_context *brw, brw->ctx.Const.MaxTextureBufferSize * texel_size); } +static void +emit_null_surface_state(struct brw_context *brw, + const struct gl_framebuffer *fb, + uint32_t *out_offset); + void brw_update_buffer_texture_surface(struct gl_context *ctx, unsigned unit, @@ -695,6 +700,11 @@ brw_update_buffer_texture_surface(struct gl_context *ctx, const enum isl_format isl_format = brw_isl_format_for_mesa_format(format); int texel_size = _mesa_get_format_bytes(format); + if (tObj->BufferObject == NULL) { + emit_null_surface_state(brw, NULL, surf_offset); + return; + } + if (intel_obj) bo = brw_bufferobj_buffer(brw, intel_obj, tObj->BufferOffset, size, false);