<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p><span style="font-size:10pt">series l</span><span style="font-size:10pt">ooks good to me.</span></p>
<p><br>
</p>
<p><br>
</p>
<p><span style="font-size:10pt">Reviewed-by : Neha Bhende <bhenden@vmware.com></span><br>
</p>
<p><br>
</p>
<div id="x_Signature"><span style="font-size:10pt"></span>
<div id="x_divtagdefaultwrapper" style="font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif">
<span style="font-size:10pt"></span>
<p><span style="font-size:10pt">Regards,</span></p>
<span style="font-size:10pt"></span>
<p><span style="font-size:10pt">Neha</span><br>
</p>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Brian Paul <brianp@vmware.com><br>
<b>Sent:</b> Thursday, April 27, 2017 10:19:07 AM<br>
<b>To:</b> mesa-dev@lists.freedesktop.org<br>
<b>Cc:</b> Charmaine Lee; Neha Bhende<br>
<b>Subject:</b> [PATCH 2/2] wglinfo: query/print sRGB and float pixel format info</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Print the columns in the same place as glxinfo.<br>
Use 3 digit hexadecimal field for printing pixel format number.<br>
Remove the 'caveat' field which is non-existant in WGL.<br>
<br>
This also fixes a minor bug when we query WGL_PIXEL_TYPE_ARB.<br>
We previously stored the result in info->pfd.iPixelType which is a BYTE<br>
type but the WGL_TYPE_* values are all larger than 255.  Use a temporary<br>
variable instead.<br>
---<br>
 src/wgl/wglinfo.c | 61 +++++++++++++++++++++++++++++++++++--------------------<br>
 1 file changed, 39 insertions(+), 22 deletions(-)<br>
<br>
diff --git a/src/wgl/wglinfo.c b/src/wgl/wglinfo.c<br>
index 8693450..f81978b 100644<br>
--- a/src/wgl/wglinfo.c<br>
+++ b/src/wgl/wglinfo.c<br>
@@ -31,8 +31,9 @@<br>
  *  -l                     print interesting OpenGL limits (added 5 Sep 2002)<br>
  */<br>
 <br>
-#include <windows.h><br>
 <br>
+#include <windows.h><br>
+#include <stdbool.h><br>
 #include <GL/glew.h><br>
 #include <GL/wglew.h><br>
 #include <assert.h><br>
@@ -45,6 +46,7 @@<br>
 static GLboolean have_WGL_ARB_create_context;<br>
 static GLboolean have_WGL_ARB_pixel_format;<br>
 static GLboolean have_WGL_ARB_multisample;<br>
+static GLboolean have_WGL_ARB_framebuffer_sRGB; /* or EXT version */<br>
 <br>
 static PFNWGLGETPIXELFORMATATTRIBIVARBPROC wglGetPixelFormatAttribivARB_func;<br>
 static PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB_func;<br>
@@ -57,6 +59,8 @@ struct format_info {<br>
    PIXELFORMATDESCRIPTOR pfd;<br>
    int sampleBuffers, numSamples;<br>
    int transparency;<br>
+   bool floatComponents;<br>
+   bool srgb;<br>
 };<br>
 <br>
 <br>
@@ -172,6 +176,10 @@ print_screen_info(HDC _hdc, const struct options *opts, GLboolean coreProfile)<br>
          if (extension_supported("WGL_ARB_create_context", wglExtensions)) {<br>
             have_WGL_ARB_create_context = GL_TRUE;<br>
          }<br>
+         if (extension_supported("WGL_ARB_framebuffer_sRGB", wglExtensions) ||<br>
+             extension_supported("WGL_EXT_framebuffer_sRGB", wglExtensions)) {<br>
+            have_WGL_ARB_framebuffer_sRGB = GL_TRUE;<br>
+         }<br>
       }<br>
 #endif<br>
 <br>
@@ -327,9 +335,11 @@ print_visual_attribs_verbose(int iPixelFormat, const struct format_info *info)<br>
           visual_render_type_name(info->pfd.iPixelType),<br>
           info->pfd.dwFlags & PFD_DOUBLEBUFFER ? 1 : 0, <br>
           info->pfd.dwFlags & PFD_STEREO ? 1 : 0);<br>
-   printf("    rgba: cRedBits=%d cGreenBits=%d cBlueBits=%d cAlphaBits=%d\n",<br>
+   printf("    rgba: cRedBits=%d cGreenBits=%d cBlueBits=%d cAlphaBits=%d float=%c sRGB=%c\n",<br>
           info->pfd.cRedBits, info->pfd.cGreenBits,<br>
-          info->pfd.cBlueBits, info->pfd.cAlphaBits);<br>
+          info->pfd.cBlueBits, info->pfd.cAlphaBits,<br>
+          info->floatComponents ? 'Y' : 'N',<br>
+          info->srgb ? 'Y' : 'N');<br>
    printf("    cAuxBuffers=%d cDepthBits=%d cStencilBits=%d\n",<br>
           info->pfd.cAuxBuffers, info->pfd.cDepthBits, info->pfd.cStencilBits);<br>
    printf("    accum: cRedBits=%d cGreenBits=%d cBlueBits=%d cAlphaBits=%d\n",<br>
@@ -343,25 +353,22 @@ print_visual_attribs_verbose(int iPixelFormat, const struct format_info *info)<br>
       printf("    swapMethod = Copy\n");<br>
    else<br>
       printf("    swapMethod = Undefined\n");<br>
-<br>
 }<br>
 <br>
 <br>
 static void<br>
 print_visual_attribs_short_header(void)<br>
 {<br>
-   printf("   visual   x   bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav\n");<br>
-   printf(" id gen win sp  sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat\n");<br>
-   printf("------------------------------------------------------------------------\n");<br>
+   printf("    visual   x   bf lv rg d st colorbuffer   sr ax dp st accumbuffer  ms \n");<br>
+   printf("  id gen win sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b\n");<br>
+   printf("-------------------------------------------------------------------------\n");<br>
 }<br>
 <br>
 <br>
 static void<br>
 print_visual_attribs_short(int iPixelFormat, const struct format_info *info)<br>
 {<br>
-   char *caveat = "None";<br>
-<br>
-   printf("0x%02x %2d  %2d %2d %3d %2d %c%c %c  %c %2d %2d %2d %2d %2d %2d %2d",<br>
+   printf("0x%03x %2d  %2d %2d %3d %2d %c%c %c  %c %2d %2d %2d %2d %c  %c %2d %2d %2d",<br>
           iPixelFormat,<br>
           info->pfd.dwFlags & PFD_GENERIC_FORMAT ? 1 : 0,<br>
           info->pfd.dwFlags & PFD_DRAW_TO_WINDOW ? 1 : 0,<br>
@@ -374,33 +381,33 @@ print_visual_attribs_short(int iPixelFormat, const struct format_info *info)<br>
           info->pfd.dwFlags & PFD_STEREO ? 'y' : '.',<br>
           info->pfd.cRedBits, info->pfd.cGreenBits,<br>
           info->pfd.cBlueBits, info->pfd.cAlphaBits,<br>
+          info->floatComponents ? 'f' : '.',<br>
+          info->srgb ? 's' : '.',<br>
           info->pfd.cAuxBuffers,<br>
           info->pfd.cDepthBits,<br>
           info->pfd.cStencilBits<br>
           );<br>
 <br>
-   printf(" %2d %2d %2d %2d %2d %1d %s\n",<br>
+   printf(" %2d %2d %2d %2d %2d %1d\n",<br>
           info->pfd.cAccumRedBits, info->pfd.cAccumGreenBits,<br>
           info->pfd.cAccumBlueBits, info->pfd.cAccumAlphaBits,<br>
-          info->numSamples, info->sampleBuffers,<br>
-          caveat<br>
-          );<br>
+          info->numSamples, info->sampleBuffers);<br>
 }<br>
 <br>
 <br>
 static void<br>
 print_visual_attribs_long_header(void)<br>
 {<br>
- printf("Vis  Vis   Visual Trans  buff lev render DB ste  r   g   b   a  aux dep ste  accum buffers  MS   MS\n");<br>
- printf(" ID Depth   Type  parent size el   type     reo sz  sz  sz  sz  buf th  ncl  r   g   b   a  num bufs\n");<br>
- printf("----------------------------------------------------------------------------------------------------\n");<br>
+ printf("Vis   Vis   Visual Trans  buff lev render DB ste  r   g   b   a      s  aux dep ste  accum buffers  MS   MS \n");<br>
+ printf(" ID  Depth   Type  parent size el   type     reo sz  sz  sz  sz flt rgb buf th  ncl  r   g   b   a  num bufs\n");<br>
+ printf("------------------------------------------------------------------------------------------------------------\n");<br>
 }<br>
 <br>
 <br>
 static void<br>
 print_visual_attribs_long(int iPixelFormat, const struct format_info *info)<br>
 {<br>
-   printf("0x%2x %2d %11d %2d     %2d %2d  %4s %3d %3d %3d %3d %3d %3d",<br>
+   printf("0x%3x %2d %11d %2d     %2d %2d  %4s %3d %3d %3d %3d %3d %3d",<br>
           iPixelFormat,<br>
           info->pfd.dwFlags & PFD_GENERIC_FORMAT ? 1 : 0,<br>
           info->pfd.dwFlags & PFD_DRAW_TO_WINDOW ? 1 : 0,<br>
@@ -414,7 +421,9 @@ print_visual_attribs_long(int iPixelFormat, const struct format_info *info)<br>
           info->pfd.cBlueBits, info->pfd.cAlphaBits<br>
           );<br>
 <br>
-   printf(" %3d %4d %2d %3d %3d %3d %3d  %2d  %2d\n",<br>
+   printf("  %c   %c %3d %4d %2d %3d %3d %3d %3d  %2d  %2d\n",<br>
+          info->floatComponents ? 'f' : '.',<br>
+          info->srgb ? 's' : '.',<br>
           info->pfd.cAuxBuffers,<br>
           info->pfd.cDepthBits,<br>
           info->pfd.cStencilBits,<br>
@@ -473,11 +482,15 @@ get_format_info(HDC hdc, int pf, struct format_info *info)<br>
       else if (swapMethod == WGL_SWAP_COPY_ARB)<br>
          info->pfd.dwFlags |= PFD_SWAP_COPY;<br>
 <br>
-      info->pfd.iPixelType = get_pf_attrib(hdc, pf, WGL_PIXEL_TYPE_ARB);<br>
-      if (info->pfd.iPixelType == WGL_TYPE_RGBA_ARB)<br>
+      int pixel_type = get_pf_attrib(hdc, pf, WGL_PIXEL_TYPE_ARB);<br>
+      if (pixel_type == WGL_TYPE_RGBA_ARB)<br>
          info->pfd.iPixelType = PFD_TYPE_RGBA;<br>
-      else if (info->pfd.iPixelType == WGL_TYPE_COLORINDEX_ARB)<br>
+      else if (pixel_type == WGL_TYPE_COLORINDEX_ARB)<br>
          info->pfd.iPixelType = PFD_TYPE_COLORINDEX;<br>
+      else if (pixel_type == WGL_TYPE_RGBA_FLOAT_ARB) {<br>
+         info->pfd.iPixelType = PFD_TYPE_RGBA;<br>
+         info->floatComponents = true;<br>
+      }<br>
 <br>
       info->pfd.cColorBits = get_pf_attrib(hdc, pf, WGL_COLOR_BITS_ARB);<br>
       info->pfd.cRedBits = get_pf_attrib(hdc, pf, WGL_RED_BITS_ARB);<br>
@@ -502,6 +515,10 @@ get_format_info(HDC hdc, int pf, struct format_info *info)<br>
       info->numSamples = get_pf_attrib(hdc, pf, WGL_SAMPLES_ARB);<br>
 <br>
       info->transparency = get_pf_attrib(hdc, pf, WGL_TRANSPARENT_ARB);<br>
+<br>
+      if (have_WGL_ARB_framebuffer_sRGB) {<br>
+         info->srgb = get_pf_attrib(hdc, pf, WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB);<br>
+      }<br>
    }<br>
    else {<br>
       if (!DescribePixelFormat(hdc, pf,<br>
-- <br>
1.9.1<br>
<br>
</div>
</span></font>
</body>
</html>