Browse Source

Vk: add a ShaderStages enum set.

Will be needed by descriptor sets.
pull/504/head
Vladimír Vondruš 5 years ago
parent
commit
a99cde44bb
  1. 2
      doc/vulkan-mapping.dox
  2. 14
      src/Magnum/Vk/Shader.h
  3. 4
      src/Magnum/Vk/Vk.h

2
doc/vulkan-mapping.dox

@ -971,7 +971,7 @@ Vulkan enum | Matching API
@type_vk{ShaderFloatControlsIndependence} @m_class{m-label m-flat m-success} **KHR, 1.2** | | @type_vk{ShaderFloatControlsIndependence} @m_class{m-label m-flat m-success} **KHR, 1.2** | |
@type_vk{ShaderGroupShaderKHR} @m_class{m-label m-flat m-warning} **KHR** | | @type_vk{ShaderGroupShaderKHR} @m_class{m-label m-flat m-warning} **KHR** | |
@type_vk{ShaderModuleCreateFlagBits}, \n @type_vk{ShaderModuleCreateFlags} | @ref ShaderCreateInfo::Flag, \n @ref ShaderCreateInfo::Flags @type_vk{ShaderModuleCreateFlagBits}, \n @type_vk{ShaderModuleCreateFlags} | @ref ShaderCreateInfo::Flag, \n @ref ShaderCreateInfo::Flags
@type_vk{ShaderStageFlagBits}, \n @type_vk{ShaderStageFlags} | @ref ShaderStage @type_vk{ShaderStageFlagBits}, \n @type_vk{ShaderStageFlags} | @ref ShaderStage, \n @ref ShaderStages
@type_vk{SharingMode} | | @type_vk{SharingMode} | |
@type_vk{SparseImageFormatFlagBits}, \n @type_vk{SparseImageFormatFlags} | | @type_vk{SparseImageFormatFlagBits}, \n @type_vk{SparseImageFormatFlags} | |
@type_vk{SparseMemoryBindFlagBits}, \n @type_vk{SparseMemoryBindFlags} | | @type_vk{SparseMemoryBindFlagBits}, \n @type_vk{SparseMemoryBindFlags} | |

14
src/Magnum/Vk/Shader.h

@ -26,7 +26,7 @@
*/ */
/** @file /** @file
* @brief Class @ref Magnum::Vk::Shader, enum @ref Magnum::Vk::ShaderStage * @brief Class @ref Magnum::Vk::Shader, enum @ref Magnum::Vk::ShaderStage, enum set @ref Magnum::Vk::ShaderStages
* @m_since_latest * @m_since_latest
*/ */
@ -47,6 +47,7 @@ namespace Implementation { struct DeviceState; }
Wraps @type_vk_keyword{ShaderStageFlagBits}. Wraps @type_vk_keyword{ShaderStageFlagBits}.
@m_enum_values_as_keywords @m_enum_values_as_keywords
@see @ref ShaderStages, @ref ShaderSet::addShader()
*/ */
enum class ShaderStage: UnsignedInt { enum class ShaderStage: UnsignedInt {
/** Vertex stage */ /** Vertex stage */
@ -113,6 +114,17 @@ enum class ShaderStage: UnsignedInt {
RayCallable = VK_SHADER_STAGE_CALLABLE_BIT_KHR RayCallable = VK_SHADER_STAGE_CALLABLE_BIT_KHR
}; };
/**
@brief Shader stages
@m_since_latest
Type-safe wrapper for @type_vk_keyword{ShaderStageFlags}. Note that
@cpp ~Vk::ShaderStages{} @ce can be used for @val_vk_keyword{SHADER_STAGE_ALL,ShaderStageFlagBits}.
*/
typedef Containers::EnumSet<ShaderStage, VK_SHADER_STAGE_ALL> ShaderStages;
CORRADE_ENUMSET_OPERATORS(ShaderStages)
/** /**
@brief Shader @brief Shader
@m_since_latest @m_since_latest

4
src/Magnum/Vk/Vk.h

@ -129,6 +129,10 @@ class ShaderCreateInfo;
class ShaderSet; class ShaderSet;
/* ShaderSpecialization used only directly with ShaderSet */ /* ShaderSpecialization used only directly with ShaderSet */
enum class ShaderStage: UnsignedInt; enum class ShaderStage: UnsignedInt;
/* 0x7FFFFFFF = VK_SHADER_STAGE_ALL, but that would mean including the whole
Vulkan headers. Using a number here and then the actual enum value in
Shadder.h to ensure it doesn't get out of sync. */
typedef Containers::EnumSet<ShaderStage, 0x7FFFFFFF> ShaderStages;
class SubmitInfo; class SubmitInfo;
class SubpassBeginInfo; class SubpassBeginInfo;
class SubpassEndInfo; class SubpassEndInfo;

Loading…
Cancel
Save