From 77630841da53ec90415aee37fcc0ec4cf76941e1 Mon Sep 17 00:00:00 2001 From: Paul Berry Date: Wed, 14 Nov 2012 14:26:22 -0800 Subject: [PATCH] mesa: Add SetBackgroundContext to dd_function_table MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Acked-by: Timothy Arceri Acked-by: Marek Olšák Tested-by: Dieter Nützel Tested-by: Mike Lothian --- src/mesa/drivers/common/driverfuncs.c | 3 +++ src/mesa/main/dd.h | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index 6069138e35d..642cd91ce1f 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -201,6 +201,9 @@ _mesa_init_driver_functions(struct dd_function_table *driver) /* GL_ARB_texture_multisample */ driver->GetSamplePosition = NULL; + + /* Multithreading */ + driver->SetBackgroundContext = NULL; } diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 63fc62103a7..f300ad6cc00 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -1025,6 +1025,24 @@ struct dd_function_table { */ void (*QueryMemoryInfo)(struct gl_context *ctx, struct gl_memory_info *info); + + /** + * Indicate that this thread is being used by Mesa as a background drawing + * thread for the given GL context. + * + * If this function is called more than once from any given thread, each + * subsequent call overrides the context that was passed in the previous + * call. Mesa takes advantage of this to re-use a background thread to + * perform drawing on behalf of multiple contexts. + * + * Mesa may sometimes call this function from a non-background thread + * (i.e. a thread that has already been bound to a context using + * __DriverAPIRec::MakeCurrent()); when this happens, ctx will be equal to + * the context that is bound to this thread. + * + * Mesa will only call this function if GL multithreading is enabled. + */ + void (*SetBackgroundContext)(struct gl_context *ctx); }; -- 2.30.2