diff --git a/gsk/gl/gskgldriver.c b/gsk/gl/gskgldriver.c index 43b01ea5ee..7dde516fd6 100644 --- a/gsk/gl/gskgldriver.c +++ b/gsk/gl/gskgldriver.c @@ -1543,8 +1543,10 @@ create_texture_from_texture_destroy (gpointer data) } GdkTexture * -gsk_gl_driver_create_gdk_texture (GskGLDriver *self, - guint texture_id) +gsk_gl_driver_create_gdk_texture (GskGLDriver *self, + guint texture_id, + GdkGLTextureFlags flags, + GdkColorProfile *profile) { GskGLTextureState *state; GskGLTexture *texture; @@ -1572,10 +1574,12 @@ gsk_gl_driver_create_gdk_texture (GskGLDriver *self, texture->texture_id = 0; gsk_gl_texture_free (texture); - return gdk_gl_texture_new (self->command_queue->context, - texture_id, - width, - height, - create_texture_from_texture_destroy, - state); + return gdk_gl_texture_new_with_color_profile (self->command_queue->context, + texture_id, + width, + height, + flags, + profile, + create_texture_from_texture_destroy, + state); } diff --git a/gsk/gl/gskgldriverprivate.h b/gsk/gl/gskgldriverprivate.h index accae5b3bb..eff69c19be 100644 --- a/gsk/gl/gskgldriverprivate.h +++ b/gsk/gl/gskgldriverprivate.h @@ -155,7 +155,9 @@ void gsk_gl_driver_begin_frame (GskGLDriver *s void gsk_gl_driver_end_frame (GskGLDriver *self); void gsk_gl_driver_after_frame (GskGLDriver *self); GdkTexture * gsk_gl_driver_create_gdk_texture (GskGLDriver *self, - guint texture_id); + guint texture_id, + GdkGLTextureFlags flags, + GdkColorProfile *profile); void gsk_gl_driver_cache_texture (GskGLDriver *self, const GskTextureKey *key, guint texture_id); diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index afb34cd2f1..7c91b3cd3a 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -386,7 +387,10 @@ gsk_gl_renderer_render_texture (GskRenderer *renderer, #endif gsk_gl_render_job_render_flipped (job, root); texture_id = gsk_gl_driver_release_render_target (self->driver, render_target, FALSE); - texture = gsk_gl_driver_create_gdk_texture (self->driver, texture_id); + texture = gsk_gl_driver_create_gdk_texture (self->driver, + texture_id, + GDK_GL_TEXTURE_PREMULTIPLIED, + gdk_color_profile_get_srgb_linear ()); gsk_gl_driver_end_frame (self->driver); gsk_gl_render_job_free (job);