i965: Emit a NULL surface for buffer textures with no buffer

This is a preexisting bug but it was uncovered by 231653ea35
("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 <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13351>
This commit is contained in:
Jason Ekstrand 2021-10-13 16:31:57 -05:00 committed by Marge Bot
parent 4d777631b5
commit 393fda2d34

View file

@ -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);