blob: 3e0f3ebdf9fda4f2315345fbd852b34f07ee678f [file] [log] [blame]
/*
* 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