From 9966c85e01a4344d2a6bb76e432e0bed70d52ff6 Mon Sep 17 00:00:00 2001 From: Bruce Cherniak Date: Wed, 2 Aug 2017 18:14:19 -0500 Subject: [PATCH] st/osmesa: add osmesa framebuffer iface hash table per st manager Commit bbc29393d3 didn't include osmesa state_tracker. This patch adds necessary initialization. Fixes crash in OSMesa initialization. Created-by: Charmaine Lee Tested-by: Bruce Cherniak Reviewed-by: Charmaine Lee Cc: 17.2 --- src/gallium/state_trackers/osmesa/osmesa.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/gallium/state_trackers/osmesa/osmesa.c b/src/gallium/state_trackers/osmesa/osmesa.c index 18f1b88128a..751d255c540 100644 --- a/src/gallium/state_trackers/osmesa/osmesa.c +++ b/src/gallium/state_trackers/osmesa/osmesa.c @@ -439,6 +439,7 @@ osmesa_st_framebuffer_validate(struct st_context_iface *stctx, return TRUE; } +static uint32_t osmesa_fb_ID = 0; static struct st_framebuffer_iface * osmesa_create_st_framebuffer(void) @@ -448,6 +449,8 @@ osmesa_create_st_framebuffer(void) stfbi->flush_front = osmesa_st_framebuffer_flush_front; stfbi->validate = osmesa_st_framebuffer_validate; p_atomic_set(&stfbi->stamp, 1); + stfbi->ID = p_atomic_inc_return(&osmesa_fb_ID); + stfbi->state_manager = get_st_manager(); } return stfbi; } @@ -508,6 +511,14 @@ osmesa_find_buffer(enum pipe_format color_format, static void osmesa_destroy_buffer(struct osmesa_buffer *osbuffer) { + struct st_api *stapi = get_st_api(); + + /* + * Notify the state manager that the associated framebuffer interface + * is no longer valid. + */ + stapi->destroy_drawable(stapi, osbuffer->stfb); + FREE(osbuffer->stfb); FREE(osbuffer); } -- 2.11.0