Browse Source

[vk] Added Inline Uniform Block

qcomopts2
CamilleLaVey 2 weeks ago
committed by Caio Oliveira
parent
commit
d271510263
No known key found for this signature in database GPG Key ID: AAAE6C7FD4186B0C
  1. 21
      src/video_core/vulkan_common/vulkan_device.cpp
  2. 3
      src/video_core/vulkan_common/vulkan_device.h

21
src/video_core/vulkan_common/vulkan_device.cpp

@ -477,6 +477,17 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
first_next = &descriptor_indexing;
}
// VK_EXT_inline_uniform_block
VkPhysicalDeviceInlineUniformBlockFeaturesEXT inline_uniform_block_features{
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,
.pNext = first_next,
.inlineUniformBlock = VK_TRUE,
};
if (extensions.inline_uniform_block) {
first_next = &inline_uniform_block_features;
}
is_blit_depth24_stencil8_supported = TestDepthStencilBlits(VK_FORMAT_D24_UNORM_S8_UINT);
is_blit_depth32_stencil8_supported = TestDepthStencilBlits(VK_FORMAT_D32_SFLOAT_S8_UINT);
is_optimal_astc_supported = ComputeIsOptimalAstcSupported();
@ -1366,10 +1377,6 @@ void Device::RemoveUnsuitableExtensions() {
VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME);
// VK_EXT_transform_feedback
// We only require the basic transformFeedback feature and at least
// one transform feedback buffer. We keep transformFeedbackQueries as it's used by
// the streaming byte count implementation. GeometryStreams and multiple streams
// are not strictly required since we currently support only stream 0.
extensions.transform_feedback =
features.transform_feedback.transformFeedback &&
properties.transform_feedback.maxTransformFeedbackBuffers > 0 &&
@ -1389,6 +1396,12 @@ void Device::RemoveUnsuitableExtensions() {
features.vertex_input_dynamic_state,
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
// VK_EXT_inline_uniform_block
extensions.inline_uniform_block = features.inline_uniform_block.inlineUniformBlock;
RemoveExtensionFeatureIfUnsuitable(extensions.inline_uniform_block,
features.inline_uniform_block,
VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME);
// VK_EXT_multi_draw
extensions.multi_draw = features.multi_draw.multiDraw;

3
src/video_core/vulkan_common/vulkan_device.h

@ -60,7 +60,7 @@ VK_DEFINE_HANDLE(VmaAllocator)
FEATURE(EXT, MultiDraw, MULTI_DRAW, multi_draw) \
FEATURE(EXT, PrimitiveTopologyListRestart, PRIMITIVE_TOPOLOGY_LIST_RESTART, \
primitive_topology_list_restart) \
FEATURE(EXT, ProvokingVertex, PROVOKING_VERTEX, provoking_vertex) \
FEATURE(EXT, ProvokingVertex, PROVOKING_VERTEX, provoking_vertex) \ \
FEATURE(EXT, Robustness2, ROBUSTNESS_2, robustness2) \
FEATURE(EXT, TransformFeedback, TRANSFORM_FEEDBACK, transform_feedback) \
FEATURE(EXT, VertexInputDynamicState, VERTEX_INPUT_DYNAMIC_STATE, vertex_input_dynamic_state) \
@ -79,6 +79,7 @@ VK_DEFINE_HANDLE(VmaAllocator)
EXTENSION(EXT, DEPTH_RANGE_UNRESTRICTED, depth_range_unrestricted) \
EXTENSION(EXT, MEMORY_BUDGET, memory_budget) \
EXTENSION(EXT, ROBUSTNESS_2, robustness_2) \
EXTENSION(EXT, INLINE_UNIFORM_BLOCK, inline_uniform_block) \
EXTENSION(EXT, SAMPLER_FILTER_MINMAX, sampler_filter_minmax) \
EXTENSION(EXT, SHADER_STENCIL_EXPORT, shader_stencil_export) \
EXTENSION(EXT, SHADER_VIEWPORT_INDEX_LAYER, shader_viewport_index_layer) \

Loading…
Cancel
Save