<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 21, 2014 at 8:04 PM, 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">Both drivers report 0xffffffff as vendor/device id, and the maximum<br>
amount of system memory as video memory. We might want to reconsider<br>
the latter.<br>
<br>
Cc: Brian Paul <<a href="mailto:brianp@vmware.com">brianp@vmware.com</a>><br>
Signed-off-by: Emil Velikov <<a href="mailto:emil.l.velikov@gmail.com">emil.l.velikov@gmail.com</a>><br>
---<br>
 src/gallium/drivers/llvmpipe/lp_screen.c | 25 +++++++++++++++++++++++++<br>
 src/gallium/drivers/softpipe/sp_screen.c | 25 +++++++++++++++++++++++++<br>
 2 files changed, 50 insertions(+)<br>
<br>
diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c<br>
index 604f853..c28f9a7 100644<br>
--- a/src/gallium/drivers/llvmpipe/lp_screen.c<br>
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c<br>
@@ -245,6 +245,31 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)<br>
       return 11;<br>
    case PIPE_CAP_MAX_GL_ES2_VERSION:<br>
       return 20;<br>
+<br>
+   case PIPE_CAP_VENDOR_ID:<br>
+      return 0xFFFFFFFF;<br>
+   case PIPE_CAP_DEVICE_ID:<br>
+      return 0xFFFFFFFF;<br>
</blockquote><div><br></div><div>Maybe just return zero since that's probably the default value returned by a driver when it doesn't support a particular cap.<br><br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+   case PIPE_CAP_ACCELERATED:<br>
+      return 0;<br>
+   case PIPE_CAP_VIDEO_MEMORY: {<br>
+      /* XXX: Do we want to return the full amount fo system memory ? */<br>
+      const long system_memory_pages = sysconf(_SC_PHYS_PAGES);<br>
+      const long system_page_size = sysconf(_SC_PAGE_SIZE);<br></blockquote><div><br></div><div>I'd bet sysconf() won't work on Windows or other non-Linux systems.<br><br></div><div>We should probably have a gallium utility function for doing memory size queries.  It would wrap whatever OS calls are needed.<br>
<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
+      if (system_memory_pages <= 0 || system_page_size <= 0)<br>
+         return 0;<br>
+<br>
+      const uint64_t system_memory_bytes = (uint64_t) system_memory_pages<br>
+         * (uint64_t) system_page_size;<br>
</blockquote><div><br></div><div>Declarations cannot follow code (MSVC).<br><br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">+<br>
+      const unsigned system_memory_megabytes =<br>
+          (unsigned) (system_memory_bytes / (1024 * 1024));<br>
+<br>
+      return system_memory_megabytes;<br>
+   }<br>
+   case PIPE_CAP_UMA:<br>
+      return 0;<br>
    }<br>
    /* should only get here on unhandled cases */<br>
    debug_printf("Unexpected PIPE_CAP %d query\n", param);<br>
diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c<br>
index 3a6d31a..bf91274 100644<br>
--- a/src/gallium/drivers/softpipe/sp_screen.c<br>
+++ b/src/gallium/drivers/softpipe/sp_screen.c<br>
@@ -195,6 +195,31 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)<br>
       return 11;<br>
    case PIPE_CAP_MAX_GL_ES2_VERSION:<br>
       return 20;<br>
+<br>
+   case PIPE_CAP_VENDOR_ID:<br>
+      return 0xFFFFFFFF;<br>
+   case PIPE_CAP_DEVICE_ID:<br>
+      return 0xFFFFFFFF;<br>
+   case PIPE_CAP_ACCELERATED:<br>
+      return 0;<br>
+   case PIPE_CAP_VIDEO_MEMORY: {<br>
+      /* XXX: Do we want to return the full amount fo system memory ? */<br>
+      const long system_memory_pages = sysconf(_SC_PHYS_PAGES);<br>
+      const long system_page_size = sysconf(_SC_PAGE_SIZE);<br>
+<br>
+      if (system_memory_pages <= 0 || system_page_size <= 0)<br>
+         return 0;<br>
+<br>
+      const uint64_t system_memory_bytes = (uint64_t) system_memory_pages<br>
+         * (uint64_t) system_page_size;<br>
+<br>
+      const unsigned system_memory_megabytes =<br>
+          (unsigned) (system_memory_bytes / (1024 * 1024));<br>
+<br>
+      return system_memory_megabytes;<br>
+   }<br>
+   case PIPE_CAP_UMA:<br>
+      return 0;<br>
    }<br>
    /* should only get here on unhandled cases */<br>
    debug_printf("Unexpected PIPE_CAP %d query\n", param);<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.9.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>