#include "MoltenVK/vk_mvk_moltenvk.h"
#endif
+#ifdef HAVE_LIBDRM
+#include <xf86drm.h>
+#endif
+
static const struct debug_named_value
zink_debug_options[] = {
{ "nir", ZINK_DEBUG_NIR, "Dump NIR during program compile" },
return MIN2(screen->info.props.limits.maxVertexOutputComponents / 4 / 2, 16);
case PIPE_CAP_DMABUF:
+#if defined(HAVE_LIBDRM) && (DETECT_OS_LINUX || DETECT_OS_BSD)
return screen->info.have_KHR_external_memory_fd &&
screen->info.have_EXT_external_memory_dma_buf &&
- screen->info.have_EXT_queue_family_foreign;
+ screen->info.have_EXT_queue_family_foreign
+ ? DRM_PRIME_CAP_IMPORT | DRM_PRIME_CAP_EXPORT
+ : 0;
+#else
+ return 0;
+#endif
case PIPE_CAP_DEPTH_BOUNDS_TEST:
return screen->info.feats.features.depthBounds;
return !!screen->gfx_push_constant_layout;
}
+static int
+zink_screen_get_fd(struct pipe_screen *pscreen)
+{
+ struct zink_screen *screen = zink_screen(pscreen);
+
+ return screen->drm_fd;
+}
+
static struct zink_screen *
zink_internal_create_screen(const struct pipe_screen_config *config)
{