Windows & Conditional Variables Threading

"Charlie Charsie" <[email protected]>
Newsgroups gmane.comp.video.mesa3d.user
Message-ID <[email protected]>
Dear Brian, dear Jose,

I did some further tests with Mesa under Windows having the Conditional Variables threading mechanism enabled. 

One issue I encounter is that any application I test with Mesa does not exit properly. The GUI shuts down, however, the process remains in the process list of the task manager.

I will try to debug the exit procedure, but if any idea about that comes to your mind it would be appreciated.

Best regards,

Charlie


-------- Original-Nachricht --------
> Datum: Fri, 2 Nov 2012 03:34:56 -0700 (PDT)
> Von: Jose Fonseca <[email protected]>
> An: Charlie Charsie <[email protected]>
> CC: Brian Paul <[email protected]>
> Betreff: Re: Rer: [Mesa-users] How I succeeded in building Mesa llvmpipe 64-bit on Windows

> There's a missing dependency issue with scons on master.
> 
> If you remove build\windows-x86_64-debug\mesa\main\get_hash.h it should
> work.
> 
> Jose
> 
> ----- Original Message -----
> > 
> > 
> > Dear Brian,
> > 
> > While Mesa 9.0 release/debug compiled fine, I'm having trouble with
> > latest master:
> > 
> > scons: *** [src\glsl\builtin_stubs.obj] Source
> > `src\glsl\builtin_stubs.cpp' not
> > found, needed by target `src\glsl\builtin_stubs.obj'.
> > 
> > and as well with your suggested revision
> > 11070105f0b5ad20f12bb40a8dd0b357924bcfdd:
> > 
> >
> C:\git\mesa-master\mesa\build\windows-x86_64-debug\mesa\main\get_hash.h(470)
> > : error C2039: 'MinMapBufferAlignment' : is not a member of
> > 'gl_constants'
> >         c:\git\mesa-master\mesa\src\mesa\main\mtypes.h(2765) : see
> >         declaration of 'gl_constants'
> >
> C:\git\mesa-master\mesa\build\windows-x86_64-debug\mesa\main\get_hash.h(470)
> > : error C2065: 'extra_ARB_map_buffer_alignment' : undeclared
> > identifier
> >
> C:\git\mesa-master\mesa\build\windows-x86_64-debug\mesa\main\get_hash.h(470)
> > : error C2099: initializer is not a constant
> > 
> > If you could think of an infrastructure for a public compile
> > dashboard, I potentially could provide a virtual machine compiling
> > the latest master as nightly dart client on Windows.
> > 
> > Best
> > Charlie
> > 
> > 
> > 
> > 
> > 
> > 
> > -------- Original-Nachricht --------
> > > Datum: Thu, 01 Nov 2012 09:25:56 -0600
> > > Von: Brian Paul <[email protected]>
> > > An: Charlie Charsie <[email protected]>
> > > CC: Jose Fonseca <[email protected]>,
> > > [email protected]
> > > Betreff: Re: Rer: [Mesa-users] How I succeeded in building Mesa
> > > llvmpipe 64-bit on Windows
> > 
> > > I just recently fixed that bug in commit
> > > 11070105f0b5ad20f12bb40a8dd0b357924bcfdd.
> > > 
> > > Can you try the latest sources from Mesa/git?
> > > 
> > > The next release of Mesa 9.x should have the fix too.
> > > 
> > > -Brian
> > > 
> > > On 11/01/2012 08:40 AM, Charlie Charsie wrote:
> > > > If I try the debug DLL along with other applications (e.g. OpenGL
> > > Extensions Viewer 4.0.8, Realtech VR), I get the stack trace
> > > attached to this.
> > > >
> > > >
> > > > Output:
> > > >
> src\mesa\state_tracker\st_mesa_to_tgsi.c:1264:st_translate_mesa_program:
> > > freeing bad or corrupted memory 0x2063f280
> > > > src\gallium\auxiliary\util\u_debug_memory.c:160:debug_free:
> > > > Assertion
> > > `0' failed.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > -------- Original-Nachricht --------
> > > >> Datum: Thu, 1 Nov 2012 04:36:41 -0700 (PDT)
> > > >> Von: Jose Fonseca<[email protected]>
> > > >> An: Charlie Charsie<[email protected]>
> > > >> CC: [email protected], [email protected]
> > > >> Betreff: Re: Rer: [Mesa-users] How I succeeded in building Mesa
> > > llvmpipe 64-bit on Windows
> > > >
> > > >>
> > > >>
> > > >> ----- Original Message -----
> > > >>>
> > > >>> Dear Jose,
> > > >>>
> > > >>> I followed your suggestion and modified os_thread.h (line 180)
> > > >>> to
> > > >>> enable the conditional variables. A simple change of #if 0 to
> > > >>> #if 1
> > > >>> was enough, as all code was already there.
> > > >>>
> > > >>> I recompiled and compared performance and behavior.
> > > >>>
> > > >>> - CPU is now busy to 80-90%.
> > > >>> - Performance on some intense tests is massively boosted. On
> > > >>> CPUs
> > > >>> with many cores this performance benefit scale directly with
> > > >>> number
> > > >>> of cores.
> > > >>>
> > > >>> - The renderings themselves looked all fine.
> > > >>>
> > > >>> - My simple benchmark tool reproducibly crashed on application
> > > >>> exit,
> > > >>> with a white-screen. Also toggling with other applications
> > > >>> sporadically showed simiar behavior. I only have few other
> > > >>> Opengl
> > > >>> applications that are 64 bits, they did NOT show this problem.
> > > >>
> > > >> If you could dig a bit deeped (by attaching a debugger and
> > > >> seeing the
> > > >> stack trace), we might be able to fix it.
> > > >>
> > > >>> The measurements have been conducted on my Core i5-520 laptop
> > > >>> with
> > > >>> Win7 64.
> > > >>> I used a very simple OpenGL benchmark in order to be able to
> > > >>> compare
> > > >>> to Microsoft's OpenGL software renderer. Also I did not find
> > > >>> good
> > > >>> 64-bit tools to benchmark OpenGL on Windows.
> > > >>>
> > > >>
> > >
> (http://homepage.virgin.net/roy.longbottom/64%20bit%20graphics%20tests.htm)
> > > >>>
> > > >>>
> > > >>> MESA 9.0
> > > >>>                    ........................ Frames Per Second
> > > >>>                    ........................
> > > >>>     Resolution    Single   Single    Multi    Multi     More
> > > >>>        More+
> > > >>>         Wire    Tiled
> > > >>>                    Plain  Texture    Plain  Texture  Texture
> > > >>>                     Texture
> > > >>>                     Kitchen  Kitchen
> > > >>>
> > > >>>   1600  900 32     81.60    80.06    71.51    67.74    45.65
> > > >>>      40.12
> > > >>>      24.72     5.13
> > > >>>   1600  900 32     83.26    82.97    70.80    68.58    45.56
> > > >>>      40.10
> > > >>>      25.94     5.15
> > > >>>
> > > >>> MESA 9.0 cond var
> > > >>>   1600  900 32    111.84   102.59    90.92    84.51    60.71
> > > >>>      50.28
> > > >>>      28.98    18.54
> > > >>>   1600  900 32     93.28    95.90    86.29    82.76    59.13
> > > >>>      49.37
> > > >>>      28.54    18.36
> > > >>
> > > >> Thanks for your results. That settles it then.
> > > >>
> > > >>> As for your second request:
> > > >>>
> > > >>> The condition right now is: #if 0&&  defined (_WIN32_WINNT)&&
> > > >>> (_WIN32_WINNT>= 0x0600)
> > > >>>
> > > >>> According to Windows documentation, WINVER and _WIN32_WINNT are
> > > >>> already fine to check for Windows version on runtime.
> > > >>> See
> > > >>> http://msdn.microsoft.com/en-us/library/aa383745(v=vs.85).aspx
> > > >>>
> > > >>> So I am not sure why we are not changing the line to:
> > > >>> #if (_WIN32_WINNT>= 0x0600)
> > > >>
> > > >> These are compile time checks, not runtime checks.
> > > >>
> > > >> We need to define _WIN32_WINNT in order to get the prototypes of
> > > >> the
> > > >> latest APIs, but we don't want to use them inconditionally.
> > > >>
> > > >> We will need to use a runtime check like explained on
> > > >>
> > >
> http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
> > > , and also use
> > > >> GetProcAddress for conditional variable functions, otherwise the
> > > >> DLL
> > > won't
> > > >> be even loaded on XP due to the missing symbols.
> > > >>
> > > >> Jose
> > > 
> >
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.