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 <jerem...@apple.com> 
>> wrote:
>>
>> Fixes regression from commit 64b1dc44495890cbc2c7c5509cb830264020998c
>>
>> Signed-off-by: Jeremy Huddleston Sequoia <jerem...@apple.com>
>> CC: Emil Velikov <emil.l.veli...@gmail.com>
>> CC: jon.tur...@dronecode.org.uk
>> CC: io...@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
>>
> 

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to