summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Cherniak <bruce.cherniak@intel.com>2017-08-02 18:14:19 -0500
committerEmil Velikov <emil.l.velikov@gmail.com>2017-08-05 00:09:26 +0100
commit6b279b32718cc6e0397a368269d3ad52fd685aad (patch)
treedaaa3f56beadecf5d26b4d5bc9a81e9d28ed1758
parent6efb8d79a9aa33c6b2ac61c1544ef1a9e12f3d8b (diff)
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 <charmainel@vmware.com> Tested-by: Bruce Cherniak <bruce.cherniak@intel.com> Reviewed-by: Charmaine Lee <charmainel@vmware.com> Cc: 17.2 <mesa-stable@lists.freedesktop.org> (cherry picked from commit 9966c85e01a4344d2a6bb76e432e0bed70d52ff6)
-rw-r--r--src/gallium/state_trackers/osmesa/osmesa.c11
1 files changed, 11 insertions, 0 deletions
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);
}