summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/out/vulkan/common.h1
-rw-r--r--video/out/vulkan/utils.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/video/out/vulkan/common.h b/video/out/vulkan/common.h
index b849b6dc0b..1a4c3b842f 100644
--- a/video/out/vulkan/common.h
+++ b/video/out/vulkan/common.h
@@ -72,4 +72,5 @@ struct mpvk_ctx {
// Cached capabilities
VkPhysicalDeviceLimits limits;
+ VkPhysicalDeviceFeatures features;
};
diff --git a/video/out/vulkan/utils.c b/video/out/vulkan/utils.c
index 1fd674d28f..b32ae4968b 100644
--- a/video/out/vulkan/utils.c
+++ b/video/out/vulkan/utils.c
@@ -316,6 +316,7 @@ bool mpvk_find_phys_device(struct mpvk_ctx *vk, const char *name, bool sw)
(int)VK_VERSION_PATCH(prop.apiVersion));
vk->physd = devices[i];
vk->limits = prop.limits;
+ vkGetPhysicalDeviceFeatures(vk->physd, &vk->features);
talloc_free(devices);
return true;
}
@@ -498,12 +499,20 @@ bool mpvk_device_init(struct mpvk_ctx *vk, struct mpvk_device_opts opts)
if (vk->spirv->required_ext)
MP_TARRAY_APPEND(tmp, exts, num_exts, vk->spirv->required_ext);
+ // Enable all features we optionally use
+#define FEATURE(name) .name = vk->features.name
+ VkPhysicalDeviceFeatures feats = {
+ FEATURE(shaderStorageImageExtendedFormats),
+ };
+#undef FEATURE
+
VkDeviceCreateInfo dinfo = {
.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
.pQueueCreateInfos = qinfos,
.queueCreateInfoCount = num_qinfos,
.ppEnabledExtensionNames = exts,
.enabledExtensionCount = num_exts,
+ .pEnabledFeatures = &feats,
};
MP_VERBOSE(vk, "Creating vulkan device with extensions:\n");