[Mesa-dev] [Mesa-stable] [PATCH 12/25] dri/i9*5: correctly calculate the amount of system memory

Emil Velikov emil.l.velikov at gmail.com
Fri Feb 28 16:52:50 PST 2014


On 28/02/14 17:32, Ian Romanick wrote:
> On 02/21/2014 07:04 PM, Emil Velikov wrote:
>> The variable name states megabytes, while we calculate the amount in
>> kilobytes. Correct this by dividing with the correct amount.
>>
>> Cc: "10.0 10.1" <mesa-stable at lists.freedesktop.org>
>> Cc: Ian Romanick <ian.d.romanick at intel.com>
>> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
>> ---
>>   src/mesa/drivers/dri/i915/intel_screen.c | 2 +-
>>   src/mesa/drivers/dri/i965/intel_screen.c | 2 +-
>>   2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/mesa/drivers/dri/i915/intel_screen.c
>> b/src/mesa/drivers/dri/i915/intel_screen.c
>> index 296df16..884fdb5 100644
>> --- a/src/mesa/drivers/dri/i915/intel_screen.c
>> +++ b/src/mesa/drivers/dri/i915/intel_screen.c
>> @@ -744,7 +744,7 @@ i915_query_renderer_integer(__DRIscreen *psp, int
>> param, unsigned int *value)
>>            * (uint64_t) system_page_size;
>>
>>         const unsigned system_memory_megabytes =
>> -         (unsigned) (system_memory_bytes / 1024);
>> +         (unsigned) (system_memory_bytes / (1024 * 1024));
> 
> I don't think this is correct.  When I run piglit's
> glx-query-renderer-coverage, it says
> 
> glXQueryRendererIntegerMESA(GLX_RENDERER_VIDEO_MEMORY_MESA) values:
>     1534
> 
> That's 1.5GiB, and that's the value I expect.  I guess the variable
> system_memory_bytes should be called system_memory_kbytes instead.
> 
> I see you have similar code in other patches in the series.  Does
> glx-query-renderer-coverage give sensible values in those drivers?
> 
I can only test swrast (both classic and gallium, patches 11 and 24) and
gallium nouveau. The former gives a sensible result for my 4GiB machine.

glXQueryRendererIntegerMESA(GLX_RENDERER_VIDEO_MEMORY_MESA) values:
    3957


$ man sysconf
PAGESIZE - _SC_PAGESIZE
              Size of a page in bytes.
_SC_PHYS_PAGES
              The number of pages of physical memory.

... so I'm not sure how we get such a difference.

Mind checking if the following gives reasonable result on your system ?

printf("%ul\n", sysconf(_SC_PAGE_SIZE)*sysconf(_SC_PHYS_PAGES);


-Emil



More information about the mesa-dev mailing list