mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-28 14:31:10 +00:00
0f1b039306
Instead of having a descriptor set per operation, we just have one descriptor set and bind all our images into it. Then the shaders get to use an index into the large texture array instead. Getting this to work - because it's a Vulkan extension that needs to be manually enabled, even though it's officially part of Vulkan 1.2 - is insane.
38 lines
2.3 KiB
C
38 lines
2.3 KiB
C
#pragma once
|
|
|
|
#include <graphene.h>
|
|
|
|
#include "gskvulkanpipelineprivate.h"
|
|
#include "gskenums.h"
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
typedef struct _GskVulkanBlendModePipelineLayout GskVulkanBlendModePipelineLayout;
|
|
|
|
#define GSK_TYPE_VULKAN_BLEND_MODE_PIPELINE (gsk_vulkan_blend_mode_pipeline_get_type ())
|
|
|
|
G_DECLARE_FINAL_TYPE (GskVulkanBlendModePipeline, gsk_vulkan_blend_mode_pipeline, GSK, VULKAN_BLEND_MODE_PIPELINE, GskVulkanPipeline)
|
|
|
|
GskVulkanPipeline * gsk_vulkan_blend_mode_pipeline_new (GdkVulkanContext *context,
|
|
VkPipelineLayout layout,
|
|
const char *shader_name,
|
|
VkRenderPass render_pass);
|
|
|
|
void gsk_vulkan_blend_mode_pipeline_collect_vertex_data (GskVulkanBlendModePipeline *pipeline,
|
|
guchar *data,
|
|
guint32 start_tex_id,
|
|
guint32 end_tex_id,
|
|
const graphene_point_t *offset,
|
|
const graphene_rect_t *bounds,
|
|
const graphene_rect_t *start_bounds,
|
|
const graphene_rect_t *end_bounds,
|
|
GskBlendMode blend_mode);
|
|
gsize gsk_vulkan_blend_mode_pipeline_draw (GskVulkanBlendModePipeline *pipeline,
|
|
VkCommandBuffer command_buffer,
|
|
gsize offset,
|
|
gsize n_commands);
|
|
|
|
|
|
G_END_DECLS
|
|
|