[Mesa-dev] [PATCH 6/6] anv: do not open random render node(s)

Jason Ekstrand jason at jlekstrand.net
Fri Dec 2 19:53:26 UTC 2016


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 <emil.l.velikov at gmail.com>
wrote:

> On 2 December 2016 at 17:33, Eric Engestrom <eric.engestrom at imgtec.com>
> wrote:
> > On Friday, 2016-12-02 16:31:49 +0000, Emil Velikov wrote:
> >> From: Emil Velikov <emil.velikov at collabora.com>
> >>
> >> 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 <jason.ekstrand at intel.com>
> >> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
> >> ---
> >>  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
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161202/ee198718/attachment.html>


More information about the mesa-dev mailing list