summaryrefslogtreecommitdiff
path: root/gsk/vulkan/gskvulkanshaderprivate.h
blob: 3f35b6b77f853bcec62e51b4cb29d9ce5db97729 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#pragma once

#include <gdk/gdk.h>

G_BEGIN_DECLS

typedef enum {
  GSK_VULKAN_SHADER_VERTEX,
  GSK_VULKAN_SHADER_FRAGMENT
} GskVulkanShaderType;

typedef struct _GskVulkanShader GskVulkanShader;

#define GST_VULKAN_SHADER_STAGE_CREATE_INFO(shader) \
  (VkPipelineShaderStageCreateInfo) { \
  .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, \
  .stage = gsk_vulkan_shader_get_type (shader) == GSK_VULKAN_SHADER_VERTEX ? VK_SHADER_STAGE_VERTEX_BIT : VK_SHADER_STAGE_FRAGMENT_BIT, \
  .module = gsk_vulkan_shader_get_module (shader), \
  .pName = "main", \
}

GskVulkanShader *       gsk_vulkan_shader_new_from_resource             (GdkVulkanContext       *context,
                                                                         GskVulkanShaderType     type,
                                                                         const char             *resource_name,
                                                                         GError                **error);
void                    gsk_vulkan_shader_free                          (GskVulkanShader        *shader);

GskVulkanShaderType     gsk_vulkan_shader_get_type                      (GskVulkanShader        *shader);
VkShaderModule          gsk_vulkan_shader_get_module                    (GskVulkanShader        *shader);

G_END_DECLS