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{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{ShaderStageFlagBits}, \n @type_vk{ShaderStageFlags} | @ref ShaderStage
@type_vk{ShaderStageFlagBits}, \n @type_vk{ShaderStageFlags} | @ref ShaderStage, \n @ref ShaderStages
@type_vk{SharingMode} | |
@type_vk{SparseImageFormatFlagBits}, \n @type_vk{SparseImageFormatFlags} | |
@type_vk{SparseMemoryBindFlagBits}, \n @type_vk{SparseMemoryBindFlags} | |

14
src/Magnum/Vk/Shader.h

@ -26,7 +26,7 @@
*/
/** @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
*/
@ -47,6 +47,7 @@ namespace Implementation { struct DeviceState; }
Wraps @type_vk_keyword{ShaderStageFlagBits}.
@m_enum_values_as_keywords
@see @ref ShaderStages, @ref ShaderSet::addShader()
*/
enum class ShaderStage: UnsignedInt {
/** Vertex stage */
@ -113,6 +114,17 @@ enum class ShaderStage: UnsignedInt {
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
@m_since_latest

4
src/Magnum/Vk/Vk.h

@ -129,6 +129,10 @@ class ShaderCreateInfo;
class ShaderSet;
/* ShaderSpecialization used only directly with ShaderSet */
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 SubpassBeginInfo;
class SubpassEndInfo;

Loading…
Cancel
Save