diff --git a/.pick_status.json b/.pick_status.json index 06defcabfdb..19c1a789eaf 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -346,7 +346,7 @@ "description": "i965: Emit a NULL surface for buffer textures with no buffer", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, 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 5caeda5239a..c750bc71936 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);