}
GskVulkanImage *
-gsk_vulkan_renderer_ref_texture_image (GskVulkanRenderer *self,
- GdkTexture *texture,
- GskVulkanUploader *uploader)
+gsk_vulkan_renderer_get_texture_image (GskVulkanRenderer *self,
+ GdkTexture *texture)
{
GskVulkanTextureData *data;
- GskVulkanImage *image;
data = gdk_texture_get_render_data (texture, self);
if (data)
- return g_object_ref (data->image);
+ return data->image;
- image = gsk_vulkan_image_new_from_texture (uploader, texture);
+ return NULL;
+}
+
+void
+gsk_vulkan_renderer_add_texture_image (GskVulkanRenderer *self,
+ GdkTexture *texture,
+ GskVulkanImage *image)
+{
+ GskVulkanTextureData *data;
data = g_new0 (GskVulkanTextureData, 1);
data->image = image;
{
g_free (data);
}
+}
+
+GskVulkanImage *
+gsk_vulkan_renderer_ref_texture_image (GskVulkanRenderer *self,
+ GdkTexture *texture,
+ GskVulkanUploader *uploader)
+{
+ GskVulkanImage *image;
+
+ image = gsk_vulkan_renderer_get_texture_image (self, texture);
+ if (image)
+ return g_object_ref (image);
+
+ image = gsk_vulkan_image_new_from_texture (uploader, texture);
+ gsk_vulkan_renderer_add_texture_image (self, texture, image);
+
return image;
}
G_BEGIN_DECLS
+GskVulkanImage * gsk_vulkan_renderer_get_texture_image (GskVulkanRenderer *self,
+ GdkTexture *texture);
+void gsk_vulkan_renderer_add_texture_image (GskVulkanRenderer *self,
+ GdkTexture *texture,
+ GskVulkanImage *image);
GskVulkanImage * gsk_vulkan_renderer_ref_texture_image (GskVulkanRenderer *self,
GdkTexture *texture,
GskVulkanUploader *uploader);