I haven't reviewed in any sort of detail, but I'm fine with this change FWIW. I glanced at the drm entrypoints you're calling, and that's not code we want to duplicate in anv.
On Fri, Dec 2, 2016 at 10:31 AM, Emil Velikov <[email protected]> wrote: > On 2 December 2016 at 17:33, Eric Engestrom <[email protected]> > wrote: > > On Friday, 2016-12-02 16:31:49 +0000, Emil Velikov wrote: > >> From: Emil Velikov <[email protected]> > >> > >> drmGetDevices2() provides us with enough flexibility to build heuristics > >> upon. Opening a random node on the other hand will wake up the device, > >> regardless if it's the one we're intereseted or not. > > > > "interested" > > (same in the previous patch) > > > >> > >> Cc: Jason Ekstrand <[email protected]> > >> Signed-off-by: Emil Velikov <[email protected]> > >> --- > >> src/intel/vulkan/Makefile.am | 3 ++- > >> src/intel/vulkan/anv_device.c | 53 ++++++++++++++++++++++++++++++ > +------------ > >> 2 files changed, 40 insertions(+), 16 deletions(-) > >> > >> diff --git a/src/intel/vulkan/Makefile.am b/src/intel/vulkan/Makefile.am > >> index df7645f..e309491 100644 > >> --- a/src/intel/vulkan/Makefile.am > >> +++ b/src/intel/vulkan/Makefile.am > >> @@ -66,7 +66,7 @@ AM_CPPFLAGS += \ > >> endif > >> > >> AM_CPPFLAGS += \ > >> - $(INTEL_CFLAGS) \ > >> + $(LIBDRM_CFLAGS) \ > >> $(VALGRIND_CFLAGS) \ > >> $(DEFINES) > >> > >> @@ -131,6 +131,7 @@ VULKAN_LIB_DEPS += \ > >> $(top_builddir)/src/intel/isl/libisl.la \ > >> $(top_builddir)/src/intel/blorp/libblorp.la \ > >> $(PER_GEN_LIBS) \ > >> + $(LIBDRM_LIBS) \ > >> $(PTHREAD_LIBS) \ > >> $(DLOPEN_LIBS) \ > >> -lm > > > > Unrelated -> separate patch? > > > It's related: libvulkan_intel.so does not pull libdrm.so as dependency > (up-to this patch). As we use it below, we ought to add the link here. > Otherwise we'll end up with interment breakage. > > Note: libvulkan_radeon.so already depends on libdrm, which is why the > hunk is missing from that patch. > > >> diff --git a/src/intel/vulkan/anv_device.c > b/src/intel/vulkan/anv_device.c > >> index d594df7..9927ac2 100644 > >> --- a/src/intel/vulkan/anv_device.c > >> +++ b/src/intel/vulkan/anv_device.c > >> @@ -29,6 +29,7 @@ > >> #include <sys/stat.h> > >> #include <unistd.h> > >> #include <fcntl.h> > >> +#include <xf86drm.h> > >> > >> #include "anv_private.h" > >> #include "util/strtod.h" > >> @@ -375,6 +376,40 @@ void anv_DestroyInstance( > >> vk_free(&instance->alloc, instance); > >> } > >> > >> +static VkResult > >> +anv_enumerate_devices(struct anv_instance *instance) > >> +{ > >> + /* TODO: Check for more devices ? */ > >> + drmDevicePtr devices[8]; > >> + VkResult result = VK_SUCCESS; > >> + int max_devices; > >> + > >> + max_devices = drmGetDevices2(0, devices, sizeof(devices)); > >> + if (max_devices < 1) > >> + return VK_ERROR_INCOMPATIBLE_DRIVER; > >> + > >> + for (unsigned i = 0; i < (unsigned)max_devices; i++) { > >> + if (devices[i]->available_nodes & 1 << DRM_NODE_RENDER && > >> + devices[i]->bustype == DRM_BUS_PCI && > >> + devices[i]->deviceinfo.pci->vendor_id == 0x8086) { > > > > Yay, magic values! > > I feel like we should replace all those with PCI_VENDOR_INTEL or > something. > > > We have another three instances of these for each Vulkan driver. > Barring any objections I'll do that as cleanup on top ? > > Thanks > Emil > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
