[Mesa-dev] [PATCH] swrast: Build fix for darwin

Emil Velikov emil.l.velikov at gmail.com
Sat Jan 3 08:00:59 PST 2015


On 02/01/15 04:14, Jeremy Huddleston Sequoia wrote:
> This is certainly not the best solution to the problem, so I'm just sending this patch to the list to get the discussion started on the best way to solve this problem.  Currently, any platform that does not support _SC_PHYS_PAGES and _SC_PAGESIZE will fail to build swrast.  _SC_PHYS_PAGES is not POSIX and thus there are many platforms out there that don't support it (such as OS X).
> 
With the indentation fixed and a guard around the new includes this
should be safe to go as is. Pretty sure the latter don't exist on all of
mesa's supported platforms. Cc'ing Alexander (Haiku).

> We may want to put os_get_total_physical_memory() from src/gallium/auxiliary/os/os_misc.c into a more common location, so it could be used here.
> 
This might be a better (long term) solution indeed. The recent trend is
to move common (classic & gallium) code to src/util. I don't have a
strong opinion if you'd like to do the re-factoring or not.

> However, as the existing comment indicates, maybe we don't even want to return the full size of system memory for __DRI2_RENDERER_VIDEO_MEMORY.
> 
Iirc the topic of video memory and what it means has been picked upon a
couple of times already. Having this covered and added to the spec's Q&A
might be useful.

Ian can we bother you one final time about this ?

-Emil

> 
>> On Jan 1, 2015, at 20:10, Jeremy Huddleston Sequoia <jeremyhu at apple.com> wrote:
>>
>> Fixes regression from commit 64b1dc44495890cbc2c7c5509cb830264020998c
>>
>> Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
>> CC: Emil Velikov <emil.l.velikov at gmail.com>
>> CC: jon.turney at dronecode.org.uk
>> CC: ionic at macports.org
>> ---
>> src/mesa/drivers/dri/swrast/swrast.c | 16 ++++++++++++++++
>> 1 file changed, 16 insertions(+)
>>
>> diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c
>> index d62fed3..0b7329a 100644
>> --- a/src/mesa/drivers/dri/swrast/swrast.c
>> +++ b/src/mesa/drivers/dri/swrast/swrast.c
>> @@ -59,6 +59,9 @@
>> #include "swrast_priv.h"
>> #include "swrast/s_context.h"
>>
>> +#include <sys/types.h>
>> +#include <sys/sysctl.h>
>> +
>> const __DRIextension **__driDriverGetExtensions_swrast(void);
>>
>> const char * const swrast_vendor_string = "Mesa Project";
>> @@ -135,6 +138,16 @@ swrast_query_renderer_integer(__DRIscreen *psp, int param,
>>       value[0] = 0;
>>       return 0;
>>    case __DRI2_RENDERER_VIDEO_MEMORY: {
>> +      /* This should probably share code with os_get_total_physical_memory()
>> +       * from src/gallium/auxiliary/os/os_misc.c
>> +       */
>> +#if defined(CTL_HW) && defined(HW_MEMSIZE)
>> +        int mib[2] = { CTL_HW, HW_MEMSIZE };
>> +        unsigned long system_memory_bytes;
>> +        size_t len = sizeof(system_memory_bytes);
>> +        if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
>> +            return -1;
>> +#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE)
>>       /* XXX: Do we want to return the full amount of system memory ? */
>>       const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
>>       const long system_page_size = sysconf(_SC_PAGE_SIZE);
>> @@ -144,6 +157,9 @@ swrast_query_renderer_integer(__DRIscreen *psp, int param,
>>
>>       const uint64_t system_memory_bytes = (uint64_t) system_memory_pages
>>          * (uint64_t) system_page_size;
>> +#else
>> +#error "Unsupported platform"
>> +#endif
>>
>>       const unsigned system_memory_megabytes =
>>          (unsigned) (system_memory_bytes / (1024 * 1024));
>> -- 
>> 2.2.1
>>
> 



More information about the mesa-dev mailing list