[Mesa-dev] [PATCH 07/18] i915: Wire up initial support for DRI_RENDERER_QUERY extension

Ian Romanick idr at freedesktop.org
Mon Nov 11 11:03:49 PST 2013


On 11/09/2013 02:44 AM, Daniel Vetter wrote:
> On Fri, Oct 11, 2013 at 03:10:14PM -0700, Ian Romanick wrote:
>> From: Ian Romanick <ian.d.romanick at intel.com>
>>
>> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
>> ---
>>  src/mesa/drivers/dri/i915/intel_screen.c | 79 ++++++++++++++++++++++++++++++++
>>  1 file changed, 79 insertions(+)
>>
>> diff --git a/src/mesa/drivers/dri/i915/intel_screen.c b/src/mesa/drivers/dri/i915/intel_screen.c
>> index 4f8c342..fa4fdc0 100644
>> --- a/src/mesa/drivers/dri/i915/intel_screen.c
>> +++ b/src/mesa/drivers/dri/i915/intel_screen.c
>> @@ -27,6 +27,7 @@
>>  
>>  #include <errno.h>
>>  #include <time.h>
>> +#include <sys/sysinfo.h>
>>  #include "main/glheader.h"
>>  #include "main/context.h"
>>  #include "main/framebuffer.h"
>> @@ -741,6 +742,84 @@ static struct __DRIimageExtensionRec intelImageExtension = {
>>      .createImageFromFds                 = intel_create_image_from_fds
>>  };
>>  
>> +static int
>> +i915_query_renderer_integer(__DRIscreen *psp, int param, int *value)
>> +{
>> +   const struct intel_screen *const intelScreen =
>> +      (struct intel_screen *) psp->driverPrivate;
>> +
>> +   switch (param) {
>> +   case __DRI2_RENDERER_VENDOR_ID:
>> +      value[0] = 0x8086;
>> +      return 0;
>> +   case __DRI2_RENDERER_DEVICE_ID:
>> +      value[0] = intelScreen->deviceID;
>> +      return 0;
>> +   case __DRI2_RENDERER_ACCELERATED:
>> +      value[0] = 1;
>> +      return 0;
>> +   case __DRI2_RENDERER_VIDEO_MEMORY: {
>> +      struct sysinfo info;
>> +      uint64_t system_memory_bytes;
>> +      unsigned system_memory_megabytes;
>> +
>> +      /* Once a batch uses more than 75% of the maximum mappable size, we
>> +       * assume that there's some fragmentation, and we start doing extra
>> +       * flushing, etc.  That's the big cliff apps will care about.
>> +       */
>> +      const unsigned long agp_bytes = drmAgpSize(psp->fd);
> 
> So despite me shooting at this in the next patch saying that this is
> - the wrong interface, it doesn't actually really tell you what you want
>   to know (since it fails to take pinnned crap into account),
> - doesn't work on half the platforms i915_dri supports already,
> - and is massively deprecated on all others and a major pain for us to
>   keep on live support in the kernel

In fairness, you missed this specific issue on your first review and
shot at it after I committed it. :(  There was no malice... just
timezone fail.  In the future, I'll CC you any Mesa changes that
interact with the kernel so that you'll notice them sooner.

> you've decided to raise this particular zombie and commited it shortly
> before the branch point. Please rip this out asap before it shows up
> anywhere in a release and use the gem aperture ioctl instead.
> 
> That would also fix things for gen4, where the hardwired 2G isn't really
> the truth of things either.
>
> Yours, decently pissed,
> -Daniel



More information about the mesa-dev mailing list