Commit 941293d5 by Antonio Maiorano

Eliminate use of Vulkan header BEGIN_RANGE/END_RANGE/RANGE_SIZE enums

As per Khronos, these enums will no longer be available in future Vulkan headers: https://www.khronos.org/news/permalink/khronos-group-asking-for-feedback-on-removing-begin-range-end-range-range-size-tokens-from-headers This change now asserts that our Vulkan driver is built using a known version of the Vulkan headers (vk::SwiftShaderVulkanHeaderVersion), and when we update, the static assert will trip, reminding us to validate the range constants that we use, and must manually maintain. Bug: b/153337629 Bug: b/154215163 Change-Id: I319978e3979893a8a0cc44caf6cc79a584e518fb Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/44388Tested-by: 's avatarAntonio Maiorano <amaiorano@google.com> Kokoro-Result: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 71c49f8e
...@@ -1111,7 +1111,7 @@ public: ...@@ -1111,7 +1111,7 @@ public:
void play(vk::CommandBuffer::ExecutionState &executionState) override void play(vk::CommandBuffer::ExecutionState &executionState) override
{ {
ASSERT(pipelineBindPoint < VK_PIPELINE_BIND_POINT_RANGE_SIZE); ASSERT(pipelineBindPoint < vk::VK_PIPELINE_BIND_POINT_RANGE_SIZE);
ASSERT(firstSet + descriptorSetCount <= vk::MAX_BOUND_DESCRIPTOR_SETS); ASSERT(firstSet + descriptorSetCount <= vk::MAX_BOUND_DESCRIPTOR_SETS);
ASSERT(firstDynamicOffset + dynamicOffsetCount <= vk::MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC); ASSERT(firstDynamicOffset + dynamicOffsetCount <= vk::MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC);
......
...@@ -147,7 +147,7 @@ public: ...@@ -147,7 +147,7 @@ public:
sw::TaskEvents *events = nullptr; sw::TaskEvents *events = nullptr;
RenderPass *renderPass = nullptr; RenderPass *renderPass = nullptr;
Framebuffer *renderPassFramebuffer = nullptr; Framebuffer *renderPassFramebuffer = nullptr;
std::array<PipelineState, VK_PIPELINE_BIND_POINT_RANGE_SIZE> pipelineState; std::array<PipelineState, vk::VK_PIPELINE_BIND_POINT_RANGE_SIZE> pipelineState;
struct DynamicState struct DynamicState
{ {
......
...@@ -74,7 +74,7 @@ Identifier::Identifier(const Image *image, VkImageViewType type, VkFormat fmt, V ...@@ -74,7 +74,7 @@ Identifier::Identifier(const Image *image, VkImageViewType type, VkFormat fmt, V
Identifier::Identifier(VkFormat fmt) Identifier::Identifier(VkFormat fmt)
{ {
static_assert(VK_IMAGE_VIEW_TYPE_END_RANGE == 6, "VkImageViewType does not allow using 7 to indicate buffer view"); static_assert(vk::VK_IMAGE_VIEW_TYPE_END_RANGE == 6, "VkImageViewType does not allow using 7 to indicate buffer view");
imageViewType = 7; // Still fits in 3-bit field imageViewType = 7; // Still fits in 3-bit field
format = Format::mapTo8bit(fmt); format = Format::mapTo8bit(fmt);
} }
......
...@@ -453,9 +453,6 @@ std::string Stringify(VkStructureType value) ...@@ -453,9 +453,6 @@ std::string Stringify(VkStructureType value)
INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT), INSERT_ELEMENT(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT),
INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT), INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT),
INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT), INSERT_ELEMENT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT),
INSERT_ELEMENT(VK_STRUCTURE_TYPE_BEGIN_RANGE),
INSERT_ELEMENT(VK_STRUCTURE_TYPE_END_RANGE),
INSERT_ELEMENT(VK_STRUCTURE_TYPE_RANGE_SIZE),
INSERT_ELEMENT(VK_STRUCTURE_TYPE_MAX_ENUM) INSERT_ELEMENT(VK_STRUCTURE_TYPE_MAX_ENUM)
# undef INSERT_ELEMENT # undef INSERT_ELEMENT
}; };
......
...@@ -57,4 +57,18 @@ public: ...@@ -57,4 +57,18 @@ public:
# undef None # undef None
#endif #endif
namespace vk {
// Here we define constants that used to be in the Vulkan headers, but are not part of the spec.
// See: https://github.com/KhronosGroup/Vulkan-Docs/issues/1230
// When updating the Vulkan Headers we use, go through each constant below and make sure they are valid.
// Once that's done, update SwiftShaderVulkanHeaderVersion.
constexpr int SwiftShaderVulkanHeaderVersion = 128;
static_assert(SwiftShaderVulkanHeaderVersion == VK_HEADER_VERSION, "Please validate/update constants below upon upgrading Vulkan headers");
constexpr auto VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1);
constexpr auto VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
} // namespace vk
#endif // VULKAN_PLATFORM #endif // VULKAN_PLATFORM
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment