| /* | |
| * Copyright 2025 Rive | |
| */ | |
| #pragma once | |
| #include "rive/refcnt.hpp" | |
| #include "rive/renderer/gpu.hpp" | |
| #include <vulkan/vulkan.h> | |
| namespace rive::gpu | |
| { | |
| class VulkanContext; | |
| } | |
| namespace rive::gpu | |
| { | |
| class DrawShaderVulkan | |
| { | |
| public: | |
| enum class Type | |
| { | |
| vertex, | |
| fragment, | |
| }; | |
| DrawShaderVulkan(Type, | |
| VulkanContext*, | |
| DrawType, | |
| ShaderFeatures, | |
| InterlockMode, | |
| ShaderMiscFlags); | |
| ~DrawShaderVulkan(); | |
| DrawShaderVulkan(const DrawShaderVulkan&) = delete; | |
| DrawShaderVulkan& operator=(const DrawShaderVulkan&) = delete; | |
| VkShaderModule module() const { return m_module; } | |
| private: | |
| const rcp<VulkanContext> m_vk; | |
| VkShaderModule m_module = VK_NULL_HANDLE; | |
| }; | |
| } // namespace rive::gpu |