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:
Benjamin Otte
2024-01-06 19:58:24 +01:00
parent 1dbd74e181
commit 5f03053569
9 changed files with 31 additions and 40 deletions

View File

@@ -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

View File

@@ -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
**/

View File

@@ -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

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 ();

View File

@@ -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,