1 #ifndef __GSK_VULKAN_RENDER_PRIVATE_H__ 2 #define __GSK_VULKAN_RENDER_PRIVATE_H__ 3 4 #include <gdk/gdk.h> 5 #include <gsk/gskrendernode.h> 6 7 #include "gskvulkanimageprivate.h" 8 #include "gskvulkanpipelineprivate.h" 9 #include "gskvulkanrenderpassprivate.h" 10 #include "gsk/gskprivate.h" 11 12 G_BEGIN_DECLS 13 14 typedef enum { 15 GSK_VULKAN_PIPELINE_TEXTURE, 16 GSK_VULKAN_PIPELINE_TEXTURE_CLIP, 17 GSK_VULKAN_PIPELINE_TEXTURE_CLIP_ROUNDED, 18 GSK_VULKAN_PIPELINE_COLOR, 19 GSK_VULKAN_PIPELINE_COLOR_CLIP, 20 GSK_VULKAN_PIPELINE_COLOR_CLIP_ROUNDED, 21 GSK_VULKAN_PIPELINE_LINEAR_GRADIENT, 22 GSK_VULKAN_PIPELINE_LINEAR_GRADIENT_CLIP, 23 GSK_VULKAN_PIPELINE_LINEAR_GRADIENT_CLIP_ROUNDED, 24 GSK_VULKAN_PIPELINE_COLOR_MATRIX, 25 GSK_VULKAN_PIPELINE_COLOR_MATRIX_CLIP, 26 GSK_VULKAN_PIPELINE_COLOR_MATRIX_CLIP_ROUNDED, 27 GSK_VULKAN_PIPELINE_BORDER, 28 GSK_VULKAN_PIPELINE_BORDER_CLIP, 29 GSK_VULKAN_PIPELINE_BORDER_CLIP_ROUNDED, 30 GSK_VULKAN_PIPELINE_INSET_SHADOW, 31 GSK_VULKAN_PIPELINE_INSET_SHADOW_CLIP, 32 GSK_VULKAN_PIPELINE_INSET_SHADOW_CLIP_ROUNDED, 33 GSK_VULKAN_PIPELINE_OUTSET_SHADOW, 34 GSK_VULKAN_PIPELINE_OUTSET_SHADOW_CLIP, 35 GSK_VULKAN_PIPELINE_OUTSET_SHADOW_CLIP_ROUNDED, 36 GSK_VULKAN_PIPELINE_BLUR, 37 GSK_VULKAN_PIPELINE_BLUR_CLIP, 38 GSK_VULKAN_PIPELINE_BLUR_CLIP_ROUNDED, 39 GSK_VULKAN_PIPELINE_TEXT, 40 GSK_VULKAN_PIPELINE_TEXT_CLIP, 41 GSK_VULKAN_PIPELINE_TEXT_CLIP_ROUNDED, 42 GSK_VULKAN_PIPELINE_COLOR_TEXT, 43 GSK_VULKAN_PIPELINE_COLOR_TEXT_CLIP, 44 GSK_VULKAN_PIPELINE_COLOR_TEXT_CLIP_ROUNDED, 45 GSK_VULKAN_PIPELINE_CROSS_FADE, 46 GSK_VULKAN_PIPELINE_CROSS_FADE_CLIP, 47 GSK_VULKAN_PIPELINE_CROSS_FADE_CLIP_ROUNDED, 48 GSK_VULKAN_PIPELINE_BLEND_MODE, 49 GSK_VULKAN_PIPELINE_BLEND_MODE_CLIP, 50 GSK_VULKAN_PIPELINE_BLEND_MODE_CLIP_ROUNDED, 51 /* add more */ 52 GSK_VULKAN_N_PIPELINES 53 } GskVulkanPipelineType; 54 55 GskVulkanRender * gsk_vulkan_render_new (GskRenderer *renderer, 56 GdkVulkanContext *context); 57 void gsk_vulkan_render_free (GskVulkanRender *self); 58 59 gboolean gsk_vulkan_render_is_busy (GskVulkanRender *self); 60 void gsk_vulkan_render_reset (GskVulkanRender *self, 61 GskVulkanImage *target, 62 const graphene_rect_t *rect, 63 const cairo_region_t *clip); 64 65 GskRenderer * gsk_vulkan_render_get_renderer (GskVulkanRender *self); 66 67 void gsk_vulkan_render_add_cleanup_image (GskVulkanRender *self, 68 GskVulkanImage *image); 69 70 void gsk_vulkan_render_add_node (GskVulkanRender *self, 71 GskRenderNode *node); 72 73 void gsk_vulkan_render_add_render_pass (GskVulkanRender *self, 74 GskVulkanRenderPass *pass); 75 76 void gsk_vulkan_render_upload (GskVulkanRender *self); 77 78 GskVulkanPipeline * gsk_vulkan_render_get_pipeline (GskVulkanRender *self, 79 GskVulkanPipelineType pipeline_type); 80 VkDescriptorSet gsk_vulkan_render_get_descriptor_set (GskVulkanRender *self, 81 gsize id); 82 gsize gsk_vulkan_render_reserve_descriptor_set (GskVulkanRender *self, 83 GskVulkanImage *source, 84 gboolean repeat); 85 void gsk_vulkan_render_draw (GskVulkanRender *self); 86 87 void gsk_vulkan_render_submit (GskVulkanRender *self); 88 89 GdkTexture * gsk_vulkan_render_download_target (GskVulkanRender *self); 90 VkFramebuffer gsk_vulkan_render_get_framebuffer (GskVulkanRender *self, 91 GskVulkanImage *image); 92 93 G_END_DECLS 94 95 #endif /* __GSK_VULKAN_RENDER_PRIVATE_H__ */ 96