gsk: include Vulkan renderer in public header
The Vulkan renderer can just be public API, because it doesn't expose any Vulkan-specific APIs. And it can just exist when compiled without Vulkan, because it can fail to realize. Also move get rid of the gsk/vulkan/gskvulkanrenderer.h header. It was experimental and isn't necessary now that the renderer is included via gsk.h.
This commit is contained in:
@@ -28,9 +28,6 @@
|
||||
#ifdef GDK_WINDOWING_BROADWAY
|
||||
#include "gsk/broadway/gskbroadwayrenderer.h"
|
||||
#endif
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
#include "gsk/vulkan/gskvulkanrenderer.h"
|
||||
#endif
|
||||
|
||||
#include <cairo.h>
|
||||
#ifdef CAIRO_HAS_SVG_SURFACE
|
||||
|
||||
@@ -1,20 +1,26 @@
|
||||
#include "config.h"
|
||||
|
||||
#include "gsk/vulkan/gskvulkanrenderer.h"
|
||||
#include "gskvulkanrenderer.h"
|
||||
|
||||
#include "gskgpurendererprivate.h"
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
|
||||
#include "gskvulkandeviceprivate.h"
|
||||
#include "gskvulkanframeprivate.h"
|
||||
#include "gskvulkanimageprivate.h"
|
||||
|
||||
#include "gdk/gdkdisplayprivate.h"
|
||||
#endif
|
||||
|
||||
struct _GskVulkanRenderer
|
||||
{
|
||||
GskGpuRenderer parent_instance;
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
guint n_targets;
|
||||
GskGpuImage **targets;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct _GskVulkanRendererClass
|
||||
@@ -24,6 +30,7 @@ struct _GskVulkanRendererClass
|
||||
|
||||
G_DEFINE_TYPE (GskVulkanRenderer, gsk_vulkan_renderer, GSK_TYPE_GPU_RENDERER)
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
static void
|
||||
gsk_vulkan_renderer_free_targets (GskVulkanRenderer *self)
|
||||
{
|
||||
@@ -171,10 +178,12 @@ gsk_vulkan_renderer_unrealize (GskRenderer *renderer)
|
||||
|
||||
GSK_RENDERER_CLASS (gsk_vulkan_renderer_parent_class)->unrealize (renderer);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
gsk_vulkan_renderer_class_init (GskVulkanRendererClass *klass)
|
||||
{
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
GskGpuRendererClass *gpu_renderer_class = GSK_GPU_RENDERER_CLASS (klass);
|
||||
GskRendererClass *renderer_class = GSK_RENDERER_CLASS (klass);
|
||||
|
||||
@@ -188,6 +197,7 @@ gsk_vulkan_renderer_class_init (GskVulkanRendererClass *klass)
|
||||
gpu_renderer_class->get_dmabuf_formats = gsk_vulkan_renderer_get_dmabuf_formats;
|
||||
|
||||
renderer_class->unrealize = gsk_vulkan_renderer_unrealize;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -203,8 +213,8 @@ gsk_vulkan_renderer_init (GskVulkanRenderer *self)
|
||||
* The Vulkan renderer is a renderer that uses the Vulkan library for
|
||||
* rendering.
|
||||
*
|
||||
* This function is only available when GTK was compiled with Vulkan
|
||||
* support.
|
||||
* This renderer will fail to realize when GTK was not compiled with
|
||||
* Vulkan support.
|
||||
*
|
||||
* Returns: a new Vulkan renderer
|
||||
**/
|
||||
|
||||
@@ -20,10 +20,6 @@
|
||||
#include <gdk/gdk.h>
|
||||
#include <gsk/gsk.h>
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GSK_TYPE_VULKAN_RENDERER (gsk_vulkan_renderer_get_type ())
|
||||
@@ -38,6 +34,8 @@ G_BEGIN_DECLS
|
||||
* GskVulkanRenderer:
|
||||
*
|
||||
* A GSK renderer that is using Vulkan.
|
||||
*
|
||||
* This renderer will fail to realize if Vulkan is not supported.
|
||||
*/
|
||||
typedef struct _GskVulkanRenderer GskVulkanRenderer;
|
||||
typedef struct _GskVulkanRendererClass GskVulkanRendererClass;
|
||||
@@ -48,4 +46,6 @@ GType gsk_vulkan_renderer_get_type (void) G_GNUC_CO
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GskRenderer * gsk_vulkan_renderer_new (void);
|
||||
|
||||
#endif
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GskVulkanRenderer, g_object_unref)
|
||||
|
||||
G_END_DECLS
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <gsk/gskglshader.h>
|
||||
|
||||
#include <gsk/gskcairorenderer.h>
|
||||
#include <gsk/gpu/gskvulkanrenderer.h>
|
||||
|
||||
#include <gsk/gsktypes.h>
|
||||
#include <gsk/gskenumtypes.h>
|
||||
|
||||
@@ -38,20 +38,19 @@
|
||||
|
||||
#include "gskcairorenderer.h"
|
||||
#include "gskdebugprivate.h"
|
||||
#include "gl/gskglrenderer.h"
|
||||
#include "gskprofilerprivate.h"
|
||||
#include "gskrendernodeprivate.h"
|
||||
#include "gskoffloadprivate.h"
|
||||
|
||||
#include "gskenumtypes.h"
|
||||
|
||||
#include "gl/gskglrenderer.h"
|
||||
#include "gpu/gskvulkanrenderer.h"
|
||||
|
||||
#include <graphene-gobject.h>
|
||||
#include <cairo-gobject.h>
|
||||
#include <gdk/gdk.h>
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
#include "vulkan/gskvulkanrenderer.h"
|
||||
#endif
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gdk/x11/gdkx.h>
|
||||
#endif
|
||||
|
||||
@@ -109,6 +109,7 @@ gsk_private_sources = files([
|
||||
'gpu/gskgpuuberop.c',
|
||||
'gpu/gskgpuuploadop.c',
|
||||
'gpu/gsknglrenderer.c',
|
||||
'gpu/gskvulkanrenderer.c',
|
||||
])
|
||||
|
||||
gsk_f16c_sources = files([
|
||||
@@ -138,6 +139,12 @@ gsk_public_gl_headers = files([
|
||||
install_headers(gsk_public_gl_headers, subdir: 'gtk-4.0/gsk/gl')
|
||||
gsk_public_headers += gsk_public_gl_headers
|
||||
|
||||
gsk_public_gpu_headers = files([
|
||||
'gpu/gskvulkanrenderer.h'
|
||||
])
|
||||
install_headers(gsk_public_gpu_headers, subdir: 'gtk-4.0/gsk/gpu')
|
||||
gsk_public_headers += gsk_public_gpu_headers
|
||||
|
||||
if get_variable('broadway_enabled')
|
||||
gsk_public_broadway_headers = files([
|
||||
'broadway/gskbroadwayrenderer.h'
|
||||
@@ -146,14 +153,6 @@ if get_variable('broadway_enabled')
|
||||
gsk_public_headers += gsk_public_broadway_headers
|
||||
endif
|
||||
|
||||
if have_vulkan
|
||||
gsk_public_vulkan_headers = files([
|
||||
'vulkan/gskvulkanrenderer.h'
|
||||
])
|
||||
install_headers(gsk_public_vulkan_headers, subdir: 'gtk-4.0/gsk/vulkan')
|
||||
gsk_public_headers += gsk_public_vulkan_headers
|
||||
endif
|
||||
|
||||
gsk_private_vulkan_shaders = []
|
||||
gsk_private_vulkan_compiled_shaders = []
|
||||
gsk_private_vulkan_compiled_shaders_deps = []
|
||||
@@ -168,7 +167,6 @@ if have_vulkan
|
||||
'gpu/gskvulkanimage.c',
|
||||
'gpu/gskvulkanmemory.c',
|
||||
'gpu/gskvulkanrealdescriptors.c',
|
||||
'gpu/gskvulkanrenderer.c',
|
||||
'gpu/gskvulkansubdescriptors.c',
|
||||
])
|
||||
endif # have_vulkan
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#include "gtktextview.h"
|
||||
#include "gtkrange.h"
|
||||
|
||||
#include <gsk/gl/gskglrenderer.h>
|
||||
|
||||
#include <locale.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
@@ -40,16 +42,10 @@
|
||||
#include <gtk/gtk.h>
|
||||
#define GTK_COMPILATION
|
||||
|
||||
#include <gsk/gl/gskglrenderer.h>
|
||||
|
||||
#ifdef GDK_WINDOWING_BROADWAY
|
||||
#include <gsk/broadway/gskbroadwayrenderer.h>
|
||||
#endif
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
#include <gsk/vulkan/gskvulkanrenderer.h>
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
#include <gdk/x11/gdkx.h>
|
||||
#endif
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "gsk/gl/gskglrenderer.h"
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
#include "gsk/vulkan/gskvulkanrenderer.h"
|
||||
#endif
|
||||
|
||||
#include <epoxy/gl.h>
|
||||
|
||||
@@ -1483,13 +1480,11 @@ main (int argc, char *argv[])
|
||||
g_clear_object (&ngl_renderer);
|
||||
}
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
vulkan_renderer = gsk_vulkan_renderer_new ();
|
||||
if (!gsk_renderer_realize (vulkan_renderer, NULL, NULL))
|
||||
{
|
||||
g_clear_object (&vulkan_renderer);
|
||||
}
|
||||
#endif
|
||||
|
||||
result = g_test_run ();
|
||||
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "gsk/gl/gskglrenderer.h"
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
#include "gsk/vulkan/gskvulkanrenderer.h"
|
||||
#endif
|
||||
|
||||
#include <epoxy/gl.h>
|
||||
|
||||
@@ -25,12 +22,10 @@ struct {
|
||||
"cairo",
|
||||
gsk_cairo_renderer_new,
|
||||
},
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
{
|
||||
"vulkan",
|
||||
gsk_vulkan_renderer_new,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
"ngl",
|
||||
gsk_ngl_renderer_new,
|
||||
|
||||
Reference in New Issue
Block a user