<div dir="ltr">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.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 2, 2016 at 10:31 AM, Emil Velikov <span dir="ltr"><<a href="mailto:emil.l.velikov@gmail.com" target="_blank">emil.l.velikov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 2 December 2016 at 17:33, Eric Engestrom <<a href="mailto:eric.engestrom@imgtec.com">eric.engestrom@imgtec.com</a>> wrote:<br>
> On Friday, 2016-12-02 16:31:49 +0000, Emil Velikov wrote:<br>
>> From: Emil Velikov <<a href="mailto:emil.velikov@collabora.com">emil.velikov@collabora.com</a>><br>
>><br>
>> drmGetDevices2() provides us with enough flexibility to build heuristics<br>
>> upon. Opening a random node on the other hand will wake up the device,<br>
>> regardless if it's the one we're intereseted or not.<br>
><br>
> "interested"<br>
> (same in the previous patch)<br>
><br>
>><br>
>> Cc: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>><br>
>> Signed-off-by: Emil Velikov <<a href="mailto:emil.velikov@collabora.com">emil.velikov@collabora.com</a>><br>
>> ---<br>
>>  src/intel/vulkan/Makefile.am  |  3 ++-<br>
>>  src/intel/vulkan/anv_device.c | 53 ++++++++++++++++++++++++++++++<wbr>+------------<br>
>>  2 files changed, 40 insertions(+), 16 deletions(-)<br>
>><br>
>> diff --git a/src/intel/vulkan/Makefile.am b/src/intel/vulkan/Makefile.am<br>
>> index df7645f..e309491 100644<br>
>> --- a/src/intel/vulkan/Makefile.am<br>
>> +++ b/src/intel/vulkan/Makefile.am<br>
>> @@ -66,7 +66,7 @@ AM_CPPFLAGS += \<br>
>>  endif<br>
>><br>
>>  AM_CPPFLAGS += \<br>
>> -     $(INTEL_CFLAGS) \<br>
>> +     $(LIBDRM_CFLAGS) \<br>
>>       $(VALGRIND_CFLAGS) \<br>
>>       $(DEFINES)<br>
>><br>
>> @@ -131,6 +131,7 @@ VULKAN_LIB_DEPS += \<br>
>>       $(top_builddir)/src/intel/isl/<a href="http://libisl.la" rel="noreferrer" target="_blank"><wbr>libisl.la</a> \<br>
>>       $(top_builddir)/src/intel/<wbr>blorp/<a href="http://libblorp.la" rel="noreferrer" target="_blank">libblorp.la</a> \<br>
>>       $(PER_GEN_LIBS) \<br>
>> +     $(LIBDRM_LIBS) \<br>
>>       $(PTHREAD_LIBS) \<br>
>>       $(DLOPEN_LIBS) \<br>
>>       -lm<br>
><br>
> Unrelated -> separate patch?<br>
><br>
</div></div>It's related: libvulkan_intel.so does not pull libdrm.so as dependency<br>
(up-to this patch). As we use it below, we ought to add the link here.<br>
Otherwise we'll end up with interment breakage.<br>
<br>
Note: libvulkan_radeon.so already depends on libdrm, which is why the<br>
hunk is missing from that patch.<br>
<div><div class="h5"><br>
>> diff --git a/src/intel/vulkan/anv_device.<wbr>c b/src/intel/vulkan/anv_device.<wbr>c<br>
>> index d594df7..9927ac2 100644<br>
>> --- a/src/intel/vulkan/anv_device.<wbr>c<br>
>> +++ b/src/intel/vulkan/anv_device.<wbr>c<br>
>> @@ -29,6 +29,7 @@<br>
>>  #include <sys/stat.h><br>
>>  #include <unistd.h><br>
>>  #include <fcntl.h><br>
>> +#include <xf86drm.h><br>
>><br>
>>  #include "anv_private.h"<br>
>>  #include "util/strtod.h"<br>
>> @@ -375,6 +376,40 @@ void anv_DestroyInstance(<br>
>>     vk_free(&instance->alloc, instance);<br>
>>  }<br>
>><br>
>> +static VkResult<br>
>> +anv_enumerate_devices(struct anv_instance *instance)<br>
>> +{<br>
>> +   /* TODO: Check for more devices ? */<br>
>> +   drmDevicePtr devices[8];<br>
>> +   VkResult result = VK_SUCCESS;<br>
>> +   int max_devices;<br>
>> +<br>
>> +   max_devices = drmGetDevices2(0, devices, sizeof(devices));<br>
>> +   if (max_devices < 1)<br>
>> +      return VK_ERROR_INCOMPATIBLE_DRIVER;<br>
>> +<br>
>> +   for (unsigned i = 0; i < (unsigned)max_devices; i++) {<br>
>> +      if (devices[i]->available_nodes & 1 << DRM_NODE_RENDER &&<br>
>> +          devices[i]->bustype == DRM_BUS_PCI &&<br>
>> +          devices[i]->deviceinfo.pci-><wbr>vendor_id == 0x8086) {<br>
><br>
> Yay, magic values!<br>
> I feel like we should replace all those with PCI_VENDOR_INTEL or something.<br>
><br>
</div></div>We have another three instances of these for each Vulkan driver.<br>
Barring any objections I'll do that as cleanup on top ?<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888">Emil<br>
</font></span><div class="HOEnZb"><div class="h5">______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</div></div></blockquote></div><br></div>