renderer/native: Remove cached program ID when EGLContext destroyed
In the rare event that hotplugs destroy and then create a new EGLContext with the exactly the same ID, this ensures we will forget the old program which presumably wouldn't work in the new context. It will be recreated. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3304>
This commit is contained in:
parent
ccca3709c2
commit
7e27d297dd
3 changed files with 16 additions and 0 deletions
|
@ -443,3 +443,12 @@ meta_renderer_native_gles3_blit_shared_bo (MetaEgl *egl,
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
meta_renderer_native_gles3_forget_context (MetaGles3 *gles3,
|
||||
EGLContext egl_context)
|
||||
{
|
||||
GQuark context_data_quark = get_quark_for_egl_context (egl_context);
|
||||
|
||||
g_object_set_qdata (G_OBJECT (gles3), context_data_quark, NULL);
|
||||
}
|
||||
|
|
|
@ -33,3 +33,6 @@ gboolean meta_renderer_native_gles3_blit_shared_bo (MetaEgl *egl,
|
|||
EGLSurface egl_surface,
|
||||
struct gbm_bo *shared_bo,
|
||||
GError **error);
|
||||
|
||||
void meta_renderer_native_gles3_forget_context (MetaGles3 *gles3,
|
||||
EGLContext egl_context);
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
#include "backends/native/meta-output-kms.h"
|
||||
#include "backends/native/meta-render-device-gbm.h"
|
||||
#include "backends/native/meta-render-device-surfaceless.h"
|
||||
#include "backends/native/meta-renderer-native-gles3.h"
|
||||
#include "backends/native/meta-renderer-native-private.h"
|
||||
#include "backends/native/meta-renderer-view-native.h"
|
||||
#include "cogl/cogl.h"
|
||||
|
@ -137,6 +138,9 @@ meta_renderer_native_gpu_data_free (MetaRendererNativeGpuData *renderer_gpu_data
|
|||
MetaRendererNative *renderer_native = renderer_gpu_data->renderer_native;
|
||||
MetaEgl *egl = meta_renderer_native_get_egl (renderer_native);
|
||||
|
||||
meta_renderer_native_gles3_forget_context (renderer_native->gles3,
|
||||
renderer_gpu_data->secondary.egl_context);
|
||||
|
||||
meta_egl_destroy_context (egl,
|
||||
egl_display,
|
||||
renderer_gpu_data->secondary.egl_context,
|
||||
|
|
Loading…
Reference in a new issue