VK_EXT_memory_budget DONE (anv, radv, tu)
VK_EXT_memory_priority DONE (radv)
VK_EXT_pci_bus_info DONE (anv, radv)
+ VK_EXT_physical_device_drm DONE (anv)
VK_EXT_pipeline_creation_cache_control DONE (anv, radv)
VK_EXT_pipeline_creation_feedback DONE (anv, radv)
VK_EXT_post_depth_coverage DONE (anv/gfx10+, lvp, radv)
#include <assert.h>
#include <stdbool.h>
#include <string.h>
+#include <sys/sysmacros.h>
#include <sys/mman.h>
+#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include "drm-uapi/drm_fourcc.h"
.EXT_line_rasterization = true,
.EXT_memory_budget = device->has_mem_available,
.EXT_pci_bus_info = true,
+ .EXT_physical_device_drm = true,
.EXT_pipeline_creation_cache_control = true,
.EXT_pipeline_creation_feedback = true,
.EXT_post_depth_coverage = device->info.ver >= 9,
break;
}
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT: {
+ VkPhysicalDeviceDrmPropertiesEXT *props =
+ (VkPhysicalDeviceDrmPropertiesEXT *)ext;
+ struct stat st;
+
+ props->hasPrimary = fstat(pdevice->master_fd, &st) == 0;
+ if (props->hasPrimary) {
+ props->primaryMajor = (int64_t) major(st.st_rdev);
+ props->primaryMinor = (int64_t) minor(st.st_rdev);
+ } else {
+ props->primaryMajor = 0;
+ props->primaryMinor = 0;
+ }
+
+ props->hasRender = fstat(pdevice->local_fd, &st) == 0;
+ if (props->hasRender) {
+ props->renderMajor = (int64_t) major(st.st_rdev);
+ props->renderMinor = (int64_t) minor(st.st_rdev);
+ } else {
+ props->renderMajor = 0;
+ props->renderMinor = 0;
+ }
+ break;
+ }
+
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: {
VkPhysicalDeviceExternalMemoryHostPropertiesEXT *props =
(VkPhysicalDeviceExternalMemoryHostPropertiesEXT *) ext;