title: Getting a pixelformat/context with stencil buffer with Mesa OpenGL
body: <p>I need to change a very old application to be able to work through Remote Desktop Connection (which only supports a subset of opengl 1.1). It only needs various opengl 1.x functions, so I'm trying to use the trick of placing a mesa opengl32.dll file in the application folder. The application only makes sparse use of opengl so it's ok to go with a low performance software renderer.</p>
  
  <p>Anyway, I obtained a precompiled mesa opengl32.dll file from <a href="https://wiki.qt.io/Cross_compiling_Mesa_for_Windows" rel="nofollow">https://wiki.qt.io/Cross_compiling_Mesa_for_Windows</a> but I can't get a pixelformat/context with stencil buffer enabled. If I disable stencil buffer use then everything else works but really it would be best if I could figure out how to get a pixelformat/context with stencil buffer enabled.</p>
  
  <p>Here's the pixelformat part of context creation code:</p>
  
  <pre><code>function gl_context_create_init(adevice_context:hdc):int;
  var
   pfd,pfd2:tpixelformatdescriptor;
  begin
   mem_zero(pfd,sizeof(pfd));
   pfd.nSize:=sizeof(pfd);
   pfd.nVersion:=1;
   pfd.dwFlags:=PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
   pfd.iPixelType:=PFD_TYPE_RGBA;
   pfd.cColorBits:=32;
   pfd.iLayerType:=PFD_MAIN_PLANE;
   pfd.cStencilBits:=4;
  
   gl_pixel_format:=choosepixelformat(adevice_context,@pfd);
   if gl_pixel_format=0 then
    gl_error('choosepixelformat');
   if not setpixelformat(adevice_context,gl_pixel_format,@pfd) then
    gl_error('setpixelformat');
   describepixelformat(adevice_context,gl_pixel_format,sizeof(pfd2),pfd2);
   if ((pfd.dwFlags and pfd2.dwFlags)&lt;&gt;pfd.dwFlags) or
       (pfd.iPixelType&lt;&gt;pfd2.iPixelType) or
       (pfd.cColorBits&lt;&gt;pfd2.cColorBits) or
       (pfd.iLayerType&lt;&gt;pfd2.iLayerType) or
       (pfd.cStencilBits&gt;pfd2.cStencilBits) then
    gl_error('describepixelformat');
  
   ...
  end;
  </code></pre>
  
  <p>The error happens at the line (pfd.cStencilBits>pfd2.cStencilBits), i can't seem to find a pixelformat that has cStencilBits not 0 through mesa, so I can't get a context that supports stencils.</p>