[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

apitrace: Changes to 'master'



New branch 'master' available with the following commits:
commit 561f413fc31aff5431b4fe892c7365f196aa9306
Author: Christopher James Halse Rogers <raof@ubuntu.com>
Date:   Sun May 18 16:07:53 2014 +1000

    Initial Debian packaging

commit e5a449b4392dd3d0297b1d571e40f947127a74f0
Merge: 6ed3174 eb64121
Author: Christopher James Halse Rogers <raof@ubuntu.com>
Date:   Sat May 17 21:35:32 2014 +1000

    Merge tag 'upstream/5.0+repack'
    
    Upstream version 5.0+repack

commit eb64121bcba01794b6a9efe2ea1574c8e2248123
Author: Christopher James Halse Rogers <raof@ubuntu.com>
Date:   Sat May 17 21:35:32 2014 +1000

    Imported Upstream version 5.0+repack

commit 6ed3174842e9f7490478cd38502dcfa0b39158c5
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri May 2 23:11:08 2014 +0100

    Tag a new release 5.0.
    
    There are still many outstanding patches / pull requests that deserve to
    be in this release.  But instead of delaying a release any further, I'll
    simply make a new minor release when I get around to go through these.
    
    Fixes issue #239.

commit 158f409bfcd5901201d5ae9ad0e34d6382b86470
Author: Lawrence L Love <lawrencex.l.love@intel.com>
Date:   Thu Mar 13 09:24:05 2014 -0700

    qapitrace: arrow-key selected Call is obstructed
    
    If the Frame at the bottom of the current view is expanded and
    the down arrow-key is used to select the first Call in the Frame
    then the Details View window that pops up obstructs the Call.
    
    NOTE: If the first Call is instead selected with a mouse-click
          then the Call appropriately scrolls into view
    
    Not a big deal but disconcerting.
    
    DIRECTIONS
    1) Select and expand the Frame at the bottom of the current view
    2) Use the down arrow-key to move to the first Call in the Frame
    
    FIX
    In selection callback for Call (MainWindow::callItemSelected) add
        m_ui.callView->scrollTo(index)
    after the Details View window is shown
    
    TESTING
    Manual testing.
    
    Signed-off-by: Lawrence L Love <lawrencex.l.love@intel.com>

commit c0dd09879fd88b9a2f6c311b6fa7d85c9eca3c51
Author: Lawrence L Love <lawrencex.l.love@intel.com>
Date:   Fri Feb 21 10:03:44 2014 -0800

    qapitrace: issue #218 crashes on glPopDebugGroup
    
    Problem:
    dereferencing a NULL pointer.
    
    Reason:
    As mentioned in the issue description, a glPushDebugGroup and
    glPopDebugGroup pair were in two different frames. The
    TraceLoader:fetchFrameContents() function assumes they're in the
    same frame and starts a new "groups" stack for each frame fetch.
    On encountering a CALL_FLAG_MARKER_POP call, does
    
        groups.top()->finishedAddingChildren();
    
    when in fact groups is empty and is dereferencing a NULL pointer.
    
    In the other sample trace (sample-effects.trace) all glPush/Pop pairs
    were in the same frame but one frame had an extra glPopDebugGroup
    causing the same error.
    
    Fix:
    Add a groups.count() check before dereferencing groups.top()
    
    Caveats:
    Any unpaired glPopDebugGroup calls will be listed as regular gl calls.
    Any unpaired glPushDebugGroup calls will end with the frame end.
    
    Tested both sample crash traces; they no longer crash.
    (apitrace-tests doesn't apply for testing this fix)
    
    Signed-off-by: Lawrence L Love <lawrencex.l.love@intel.com>

commit 3a5b5558016d693a9c70b230a30e35c57c9773cd
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri May 2 22:50:21 2014 +0100

    eglretrace: Support GL_OES_surfaceless_context by creating a dummy drawable.
    
    Should fix issue #248.

commit c6ae87379404a4a86adcab7a9701ff21bbb84030
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri May 2 22:34:05 2014 +0100

    tracediff: Don't crash if less is not present.

commit bdc0346b6292619224e25b37abb569e776927e8a
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri May 2 21:15:07 2014 +0100

    Remove githalytics.com snippet from the readme.
    
    Doesn't do anything useful, now that github is serving the URL as a
    static image from *.githubusercontent.com , and GitHub now provides some
    stats.

commit e7beb9c99abfc6328accbbd2f30c9d8c48cc5790
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Apr 29 22:26:25 2014 +0100

    cmake: Dump a message for each DirectX API found.

commit c91061d92dc87109bbb7e11da1cb6c187ccf7d02
Author: José Fonseca <jfonseca@vmware.com>
Date:   Sat Apr 26 18:07:24 2014 +0100

    Avoid unsafe cast.

commit d70d1ea6d58e131dcf5b2d250d33673463e8beaa
Author: José Fonseca <jfonseca@vmware.com>
Date:   Sat Apr 26 18:07:02 2014 +0100

    cli: Ensure variable is initialized.

commit a054c7385854b0e71b8d3071a465b9bc21581ee0
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Apr 29 12:10:48 2014 +0100

    msinttypes: Remove stdbool.h
    
    Not part of msinttypes and never used by us.

commit 5a285fb7a33b0c5b54b5af8ed0311981ea5c9d66
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Apr 29 12:07:39 2014 +0100

    msinttypes: Update to latest version.

commit f827897157f7736089096e24387a75d4ee2b4f30
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Apr 29 10:29:12 2014 +0100

    cmake: Don't use bundled stdint.h for recent MSVC versions.

commit 8d6c36d74ba9aefbc8c3618fc93dd4907a0dbf5e
Author: Zack Rusin <zack@kde.org>
Date:   Wed Apr 9 21:54:59 2014 -0400

    gui: respect the alpha channel in surfaces
    
    We weren't rendering any background which meant that surfaces
    that were fully transparent would just show garbage that was
    underneath. Lets make sure that the widget has a painted background
    instead of garbage underneath.

commit daa1a0266956272c8349c965c32f57d4a7b2ddde
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Apr 8 16:47:42 2014 +0100

    d3dretrace: Force windowed mode on D3D9 traces.
    
    Because there is no guarantee that the display mode is available.

commit a86667cc60d1d17ba8577e8c6cfc58479f8a6778
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Apr 8 16:45:54 2014 +0100

    d3dretrace: Terminate when CreateDevice fails.
    
    Like we do for D3D10+.

commit d85b927d3803fe1631bfac75ec643a58ff1343ea
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Apr 8 15:46:26 2014 +0100

    d3dretrace: Enable D3D9D when additional debug is requested.

commit d55418c567493a232fbf8b217af5aebf3f8e9ae5
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Apr 8 15:27:12 2014 +0100

    retrace: Allow multiple levels of debugging checks.

commit fcf044b1a0f89939e88442f4faf9c23335d2601c
Author: José Fonseca <jfonseca@vmware.com>
Date:   Thu Mar 27 17:39:04 2014 +0000

    tracediff: Don't highlight differences if the call nos are actually the same.

commit 89c5816399e71bda92a8959b5b771c04d6672ea3
Author: José Fonseca <jfonseca@vmware.com>
Date:   Thu Mar 27 17:10:28 2014 +0000

    glretrace: Don't rely on kCGLOGLPVersion_GL4_Core.
    
    It doesn't work, per https://github.com/apitrace/apitrace/issues/181#issuecomment-37119564

commit cb7c76fe29110ac98cdd2677e42370fe7e6b8796
Author: José Fonseca <jfonseca@vmware.com>
Date:   Thu Mar 27 16:57:22 2014 +0000

    Revert "qapitrace: fix an inline string FIXME request"
    
    This reverts commit 0d86efd38a375c526491c679f4d2185ebe51434e, from
    issue #244, due to two problems I just noticed:
    
    - strcasestr doesn't exist on Windows, and there seems to be no easy
      replacement.
    
    - ApiTraceCall::contains search the string in the whole call (not just
      the name)

commit 0d86efd38a375c526491c679f4d2185ebe51434e
Author: Lawrence L Love <lawrencex.l.love@intel.com>
Date:   Tue Mar 25 17:11:09 2014 -0700

    qapitrace: fix an inline string FIXME request
    
    Issue:
    TraceLoader::callContains() had the comment
        FIXME: do string comparison directly on trace::Call
    The existing code was doing a new/delete of an ApiTraceCall object
    in order to use its interface for a string search.
    
    Resolution:
    Assuming what was meant by a direct comparison is using C's
    strstr/strcasestr functions, that is what's implemented in
    this patch.
    
    An alternative would be to use a QString object's API
        return (QString(call->name()).contains(str, sensitivity));
    but no testing was done with that.
    
    Testing:
    This code is only hit when searching in unloaded frames. Frame 0 is
    pre-loaded so this code isn't exercised until the string is searched
    in another frame.
    
    Testing was done with case-sensitive and case-insensitive searches.
    Compared against existing previous code for same results.
    
    Timing:
    Did two searches each of old and new code using "gettimeofday" timing
    in TraceLoader::search with the following results searching for a
    nonsense string (to search entire trace), case-insensitive:
    
    warzone2100 180MB (180664407)     old         new
                                      ------      -------
    Total time in seconds:            89.047      16.3269
                                      88.9844     16.3358
    
    Signed-off-by: Lawrence L Love <lawrencex.l.love@intel.com>

commit 3d91a979947afe25314882a47db1b2853b23b676
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Mar 19 16:12:10 2014 +0000

    glstate: Describe a few more transform feedback states.

commit 485846b2a40d8ac7d6c1c5f8af6d15b0c10af19d
Author: Brian Paul <brianp@vmware.com>
Date:   Fri Mar 7 10:14:12 2014 -0700

    glretrace: avoid glXSwapBuffers failures because of "bad" windows
    
    Both Mesa's and NVIDIA's libGL generate an X protocol error in
    glXSwapBuffers() if the window has never been bound with
    glXMakeCurrent().  That causes glretrace to exit.  The X protocol
    error can't be trapped with XSetErrorHandler() for some reason.
    So, keep track of whether a window has ever been bound and skip
    glXSwapBuffers if the window has never been bound.
    
    This allows some WGL-based apitraces to be replayed on Linux/GLX.
    
    Reviewed-by: Jose Fonseca <jfonseca@vmware.com>

commit 707630df1b4270eae3dd49b7344c645f32c1b5f4
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Mar 7 14:20:35 2014 +0000

    gltrace: Handle GL_EXT_compiled_vertex_array correctly.
    
    Quake3 puts some vertices in its array buffer that it never renders.
    This happens for clouds rendering as well as flares. (In other words, it
    creates a vertex buffer with V vertices, and an index buffer that
    reference indices substantially lower than V, max(I) < V).
    
    It uses compiled vertex arrays, and will LockArrays(V) - more elements
    than it actually references. This is legal because Quake3's arrays have
    a static size, much bigger than however many vertices it puts in there,
    so the driver can safely read the whole locked area even though half of
    it is never referenced.
    
    With Apitrace, however, the situation changes a bit, because Apitrace's
    calculation for the length of a user pointer is based on max(draw
    element indices).
    
    Below is an example of Quake3's sky rendering:
    
      3466977 glLockArraysEXT(first = 0, count = 110)
      3466978 glEnableClientState(array = GL_TEXTURE_COORD_ARRAY)
      3466979 glEnableClientState(array = GL_COLOR_ARRAY)
      3466980 glEnableClientState(array = GL_COLOR_ARRAY)
      3466981 glBindTexture(target = GL_TEXTURE_2D, texture = 1132)
      3466982 glTexCoordPointer(size = 2, type = GL_FLOAT, stride = 0, pointer = blob(440))
      3466983 glClientActiveTexture(texture = GL_TEXTURE1)
      3466984 glTexCoordPointer(size = 2, type = GL_FLOAT, stride = 0, pointer = blob(440))
      3466985 glClientActiveTexture(texture = GL_TEXTURE0)
      3466986 glColorPointer(size = 4, type = GL_UNSIGNED_BYTE, stride = 0, pointer = blob(220))
      3466987 glVertexPointer(size = 3, type = GL_FLOAT, stride = 16, pointer = blob(876))
      3466988 glDrawElements(mode = GL_TRIANGLES, count = 192, type = GL_UNSIGNED_INT, indices = blob(768))
    
    The glDrawElements only references indices from 0 to 54.
    
    Under Apitrace, the trace only copies the 55 vertices, instead of the
    110 locked values. When replaying, the driver, which may want to read
    the whole locked area, will read past the 55 vertices. This doesn't
    always crash because we're lucky, but on the NVIDIA driver this crashes
    fairly reliably. According to the compiled array spec, the driver is
    allowed to read all of the locked memory.
    
    The fix is to change the array tracing so that its count is based on
    max(drawelements_count, locked_count).
    
    Thanks to Arthur Huillet for diagnosing the problem, the above
    description, suggesting the fix, and testing it.
    
    Tested-by: Arthur Huillet <arthur.huillet@free.fr>

commit 26be8f915bb8c3e443fdec9468060c54dad056c2
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Mar 7 14:08:50 2014 +0000

    gltrace: Use _glGetInteger where possible.
    
    Simplifies/condenses code somewhat.

commit 0cab2bf168b60020632c93bb8564aafd9dcb0a6e
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Mar 7 09:28:35 2014 +0000

    glretrace: Use glStringi for all 3.x contexts.
    
    And not just those we explicitly request to be core context.
    
    Fixes issue #236.

commit b2f773d8320d30648b89767dfe5b25ef94bc7e62
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 14:46:23 2014 +0000

    dxgitrace: Fix IDXGISwapChainDWM spec.

commit 0f49e44dd035a2579c38210a4349fca62318c6c4
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 14:46:01 2014 +0000

    glstate: Dump GL_ARB_buffer_storage state.

commit 3522cbdf837a4c825ff393e570f84e5093e57db2
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 14:45:32 2014 +0000

    gltrace: Warn about coherent/pinned memory mappings being unsupported.
    
    See issue #232.

commit 8c3fa76429cdbc366f95b124c2174001f949f43a
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 14:20:26 2014 +0000

    gui: Use more precision dumping pixels.

commit 9a2e56819def9093693bca6896cbfeef9a5950d2
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 14:17:35 2014 +0000

    eglretrace: Support non-compat GL profiles and debug contexts.
    
    Not really tested though, as I don't have an EGL_KHR_create_context
    implementation readily available.

commit c24f98f8356103a5999c14fbf382b3c8b3de29dd
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 13:51:15 2014 +0000

    glretrace: Centralise and complete the list of texture targets.

commit 3b350ff556a49050a7ade2c01dca9227b87d811a
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 12:10:03 2014 +0000

    egltrace: Drop debug.apitrace.procname support.
    
    As suggested by Alexander Monakov, given it is no longer necessary with
    Android 4.0 onwards.
    
    Also remove all isTracingEnabled logic with it, simplifying code
    substantially, and addressing issue #171.

commit 888112983ef9564b3a9d15699faa17c337d3942b
Author: Alexander Monakov <amonakov@ispras.ru>
Date:   Tue Jul 2 10:38:09 2013 +0400

    Use /data/data/$procname/$procname.trace on Android
    
    So that applications with apitrace built-in with WRITE_EXTERNAL_STORAGE
    permission can write traces on non-rooted devices too.
    
    See issue #149.

commit b4051e3c5fe78064141a9b8a73752af1a3f349ba
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 11:44:38 2014 +0000

    md5: Fix include for memcpy.
    
    It should be string.h.  This fixes warnings about undeclared memcpy
    when building for Android.

commit 1a95d61544e9e3f518beaeafbb4a700a6800c6a2
Author: Alexander Monakov <amonakov@ispras.ru>
Date:   Tue Jul 2 10:38:08 2013 +0400

    gltrace: Prefer process title over executable path on Android
    
    v2: Add comment (Jose Fonseca)

commit 2b0a0143dfcb1a5a1f6709f97a9cb11b5ae769ee
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 11:19:47 2014 +0000

    gltrace: Handle GL_AMD_sparse_texture bitmask.

commit 262da2daf99c3af1f0f04a4bae1ecdb0f333271e
Author: José Fonseca <jfonseca@vmware.com>
Date:   Fri Feb 28 11:19:16 2014 +0000

    glstate: Tweaks for GL_ARB_seamless_cubemap_per_texture.
    
    GL_TEXTURE_CUBE_MAP_SEAMLESS is now also per texture.

commit 990ddd9f96fd4bac333d1178e56985d09bb26173
Author: José Fonseca <jfonseca@vmware.com>
Date:   Thu Feb 27 14:18:43 2014 +0000

    specs/glparams: Add missing enums.
    
    Feed from gl.xml as opposed from deprecated .spec files.

commit 1f43101e74b5e199c0d77c041a133d4e22637154
Author: José Fonseca <jfonseca@vmware.com>
Date:   Thu Feb 27 13:19:35 2014 +0000

    specs/glparams: Reorder parameters numerically.
    
    No other change.

commit d32e52e77583dc23ab1db6fbee4fec2e23773bdc
Author: José Fonseca <jfonseca@vmware.com>
Date:   Thu Feb 27 15:03:59 2014 +0000

    cgltrace: Tweaks to CGL api support.

commit 52ca41d9fa6ef88e65d9da52e375716c68d48646
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Feb 26 16:47:53 2014 +0000

    gltrace: Trace GL_NV_vdpau_interop.
    
    Traces won't be replayable, but this will at least prevent the
    
      apitrace: warning: unknown function "glVDPAU*"
    
    warnings.

commit cea905bad6de3583c3b3f0672e02c79775f3aca7
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Feb 26 16:45:41 2014 +0000

    gltrace: Support GL_NV_blend_equation_advanced.

commit 25a8a2138afe4ccdcd1de36a04f870a8d60a45ad
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Feb 26 16:20:57 2014 +0000

    egltrace: Fix eglGetConfigs/eglChooseConfig prototypes.
    
    `configs` is an output parameter.

commit 7d990fecfb7febd857aa9496f176c064f4a16b07
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Feb 26 16:16:31 2014 +0000

    gltrace: Fix emission of fake viewport/scissor on MacOSX.

commit 8c449b53328059e9b55bb34baec9b27a15055a7e
Merge: 1c6c2bc 55d98e6
Author: zackr <zack@kde.org>
Date:   Tue Feb 25 12:28:36 2014 -0500

    Merge pull request #231 from lawlove/qapitrace-startnum
    
    qapitrace: fails to find [CALLNO] in first frame

commit 1c6c2bc52d088962a0b0a0cac9121d11b24eba0b
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Feb 25 15:28:03 2014 +0000

    gltrace: Detect the availability of tr1/memory header.
    
    Instead of trying to guess it.
    
    Should fix issue #224

commit b9adf67e972b58da5c017e82bab20438b56f353c
Author: Lawrence L Love <lawrencex.l.love@intel.com>
Date:   Wed Feb 12 10:40:25 2014 -0800

    apitrace documentation: add multiple callsets
    
    Documentation update for previous commit:
    
       apitrace: Allow multiple --calls and/or --frames input options
    
    Signed-off-by: Lawrence L Love <lawrencex.l.love@intel.com>

commit 53a4080ffa79234da4ed9a246d15b7604777ac64
Author: Lawrence L Love <lawrencex.l.love@intel.com>
Date:   Wed Feb 12 15:26:55 2014 -0800

    qapitrace: minor optimization to findCallIndex()
    
    Function continues searching after target call index is found
    
    Noticed that TraceLoader::findCallIndex(int index) continues looking
    through the entire list of calls after target call index is found
    
    Fix:
    Add a 'break;' after call is found.
    
    Testing:
    No real difference in time. Rough test /w 180MB file:
    
    $ ll warzone2100.trace
    -rw-r--r-- 1 lllove lllove 180664407 Feb 14 09:58 warzone2100.trace
    
    Selecting the first call (7797067) of 10362 calls in frame 1767
    
    Without change:
    $ time qapitrace warzone2100.trace 7797067
    real	0m13.495s
    user	0m12.592s
    sys	0m0.072s
    
    With change:
    $ time ../../src/qapitrace warzone2100.trace 7797067
    real	0m13.275s
    user	0m12.476s
    sys	0m0.092s
    
    (time based on my reaction time to kill qapitrace when frame 1767
     is expanded to call# 7797067)
    
    Signed-off-by: Lawrence L Love <lawrencex.l.love@intel.com>

commit 35857d9add2d4b50944474e6e89f121c1923b07e
Author: Doug Binks <doug@enkisoftware.com>
Date:   Mon Feb 17 16:42:33 2014 +0100

    glretrace: Improved support for GPUs which have GL_ARB_timer_query but not the EXT version.
    
    This also uses ARB query for occlusion as this is an ARB not an EXT
    extension.

commit a4d1c33bc6231886fe9fb62fc3ffd3c03c2a5058
Author: Nigel Stewart <nstewart@nvidia.com>
Date:   Wed Feb 12 13:21:47 2014 -0600

    glretrace: For multi-sampling back off the requested # of samples, until success.
    
    Fixes GLX crash.

commit 2dc9453a7ace2f41d693ad93a781511139f9d27a
Author: Doug Binks <doug@enkisoftware.com>
Date:   Mon Feb 17 15:58:32 2014 +0100

    Add includes for algorithm.
    
    Fixed compile errors for "error C2039: 'max' : is not a member of 'std'" with Visual Studio 2013 (and perhaps others).

commit 55d98e67b238a5e6d7d3e9ba76d60caa1f4e25f8
Author: Lawrence L Love <lawrencex.l.love@intel.com>
Date:   Fri Feb 21 16:46:30 2014 -0800

    qapitrace: fails to find [CALLNO] in first frame
    
       qapitrace <tracefile> [CALLNO]
    
    will mostly fail to find CALLNO if it resides in the first frame (not
    always). If CALLNO is in a frame other than frame 0 then it succeeds.
    
    Description
    -----------
    Apparently a race condition exists between two objects fetching the
    list of calls for frame 0. On initialization of the trace, frame 0 is
    automatically populated. If the specified CALLNO is also in frame 0
    then the function that returns the Frame's children
    (TraceLoader::fetchFrameContents) can be accessed simultaneously via
    separate SIGNALS. Details below.
    
    I don't think either of these address the issue but the implemented
    solution works. It seems there should be a better solution.
    
    Implemented solution
    --------------------
    Do one or the other:
    Pre-populate frame 0 if callno is not given. Otherwise, populate and
    expand to the given callno
    
    Solution alternative
    --------------------
    Don't force populate frame 0 on initialization. Hence, no conflict.
    (I don't see a need for pre-populating frame 0. The other frames
    load just as fast without being pre-populated.)
    
    Unsuccessful solution attempts
    ------------------------------
    Using QMutex around the fetch function
    Using Qt::BlockingQueuedConnection for both SIGNALs
    
    Details
    -------
    After the trace has been scanned a "finishedParsing()" SIGNAL is
    emitted from TraceLoader::loadTrace(). This SIGNAL is connected to
    two different objects in a separate thread from the emitting
    (TraceLoader) object:
    
    1) SLOT ApiTrace::finishedParsing()
    2) SLOT MainWindow::finishedLoadingTrace()
       (via SIGNAL ApiTrace::finishedLoadingTrace())
    
    SLOT ApiTrace::finishedParsing()         # only loads frame 0
    SLOT MainWindow::finishedLoadingTrace()  # expands to the given callno.
    
    If the callno is in frame 0 there can be a race condition.
    
    Both objects end up emitting SIGNALS from the ApiTrace object to
    TraceLoader object SLOTs where each SLOT in turn calls the
    
       TraceLoader:fetchFrameContents()
    
    function to retrieve the Frame's children, a list of pointers to
    call objects (QVector<ApiTraceCall*>). This list of calls for each
    frame should only be generated once. It then emits a SIGNAL to cause
    the ApiTrace object to load the calls into the frame. Any subsequent
    call to the fetch function just returns the frame's member set of
    children call objects.
    
    When the MainWindow SIGNAL is emitted, the fetch function may be
    accessed at the same time as the other SIGNAL result. When the
    check is made by the fetch function for whether the frame's children
    call objects have been loaded,  it receives a false and continues to
    create another list of the same calls. When this list is returned, the
    client looks for the call object associated with the index and then
    emits a SIGNAL with that call object. Eventually that call object is
    searched for in the (now loaded) Frame's children but has a different
    address and hence not found.
    
    Testing
    -------
    debug_khr.trace      # single frame
    sample-effects.trace # from issue#218
    warzone2100.trace    # from issue#218
    glxgears.trace
    
    Signed-off-by: Lawrence L Love <lawrencex.l.love@intel.com>

commit a314508e397c8f1814228d36259ea8708034444e
Author: Alexander Monakov <amonakov@ispras.ru>
Date:   Mon Feb 10 15:31:17 2014 +0400

    Dalvik.markdown: note that "adb root" is required (#225)

commit 353ce658cd24a39e5f5ef34997b44acb56ad19da
Author: Alexander Monakov <amonakov@ispras.ru>
Date:   Mon Feb 10 15:03:15 2014 +0400

    android.toolchain.cmake: update from upstream (#225)
    
    From https://github.com/taka-no-me/android-cmake/commit/5db45cfb87fec180b74963d3680dd60d4d8d8c3a

commit 788d9ce293a9b44f64536130cf4ad577e8101dbe
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Feb 4 19:02:04 2014 +0000

    glretrace: Support GL_EXT_debug_marker/label too.
    
    Just like KHR_debug.
    
    Untested, but should hopefully work fine.

commit 7ff82416a09d19922c18d211b0223399db1aeda3
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Feb 4 19:01:22 2014 +0000

    gltrace: Fake GL_EXT_debug_marker/label too.

commit fd67604d5932cce3617ff7ce725a0a686d129905
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Feb 4 18:09:57 2014 +0000

    gltrace: Move GL_EXT_debug_marker/label from GLES to ES specs.
    
    They are also available in GL, and Apple actually advertises them in MacOSX:
    https://developer.apple.com/graphicsimaging/opengl/capabilities/

commit cb07e2d632f412b2a4a903f85695bf8e24dc4f2d
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Feb 4 15:14:09 2014 +0000

    gltrace: Add a link to Mesa's glGetBufferParameteriv fix.
    
    For reference.

commit 38a2e4ec6c944f3cadebce68829479f36862cbb8
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Feb 4 15:12:27 2014 +0000

    glretrace: Remove assert in dumpProgramUniforms.
    
    As it can be triggered by some OpenGL drivers.

commit 98a91c92bb30f637b89b9c06a59c502f5bf28d0c
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Feb 4 15:11:28 2014 +0000

    glretrace: Swizzle uniform block indices.
    
    This may be necessary even when replaying with the same driver used
    while tracing, but a shader is edited in qapitrace causing an uniform
    block to become inactive.

commit 095fb95c67056c89adaf438f8da85bd6ba78828c
Author: José Fonseca <jfonseca@vmware.com>
Date:   Tue Feb 4 14:27:05 2014 +0000

    tracediff: Honour --call-nos option.

commit 8d1408b3a3c50cebcd8cafeca3ea363aa5f1b3fb
Author: José Fonseca <jfonseca@vmware.com>
Date:   Mon Feb 3 19:57:18 2014 +0000

    gltrace: Ensure GL_ARRAY_BUFFER is unbound before emiting fake gl*Pointer() calls.
    
    When tracing, just before every drawcall, ApiTrace inserts gl*Pointer()
    calls into the stream on attributes it detected as resident in user-mem
    (instead of in a VBO).
    
    ApiTrace wasn't inserting a glBindBuffer(GL_ARRAY_BUFFER, 0) and
    glBindBuffer(GL_ARRAY_BUFFER, prevBuf) around those auto-generated
    calls.  Thus, it misrepresented pointers as huge offsets into the
    currently bound VBO.
    
    Thanks to idinev for spotting and diagnosing this issue.  This achieves
    the same result as idinev's fix in issue #222, but from the trace side.

commit 26b0a7133940e548a46231cc8d93206787a0bed4
Author: José Fonseca <jfonseca@vmware.com>
Date:   Mon Feb 3 16:57:09 2014 +0000

    glretrace: Silence NVIDIA's "Buffer detailed info:".
    
    Merely informative.

commit db5ad3bd5803abf7cb87f6cfcd70540e2c493a04
Author: idinev <ultrano@hotmail.com>
Date:   Mon Feb 3 15:50:39 2014 +0000

    glretrace: Add glCompressedTex*Image*ARB to unpack function name list.
    
    Issue #222.

commit d8f68f4a606226fa8c4ba07951790ca1e1d39c32
Author: idinev <ultrano@hotmail.com>
Date:   Mon Feb 3 15:43:47 2014 +0000

    glretrace: Set GLX_SAMPLE_BUFFERS.
    
    Issue #222.

commit f300646b085595d53c87f9763d031960bc6f0325
Author: Corey Richardson <corey@octayn.net>
Date:   Sun Jan 26 17:15:42 2014 -0500

    qapitrace: Add option to retrace with core profile.
    
    This was preventing using qapitrace to debug issues using Mesa. The
    application being debugged used GL 3.3, but since a core profile wasn't
    requested, the max Mesa would give was 3.0.

commit e8272e25f1a0fc0c473e0f74a658493ccabbb688
Author: José Fonseca <jfonseca@vmware.com>
Date:   Mon Feb 3 14:55:53 2014 +0000

    glretrace: Fix typo.

commit fe6bb2b4082963f7ade0e59bda34e13e3983b730
Author: José Fonseca <jfonseca@vmware.com>
Date:   Mon Feb 3 14:55:46 2014 +0000

    glretrace: Limit the low severity messages.
    
    Otherwise some traces will be full of them...

commit aae9fc4f8683996cfe90f1997e428913a4d43dd4
Author: David Gow <david@ingeniumdigital.com>
Date:   Sun Feb 2 22:07:58 2014 +0800

    glretrace: Enable all debug output.
    
    On nVidia systems, not all debug output is enabled by default. If we wish to
    have the driver tell us where it is placing buffer objects, for example, we have
    to enable all the debug channels by passing GL_DONT_CARE to everything in
    glDebugMessageControlARB(...)

commit b49c0966b47e81bde66c2e544cdc8e18911c5632
Author: José Fonseca <jfonseca@vmware.com>
Date:   Mon Feb 3 14:35:43 2014 +0000

    d3dretrace: Assert SetWindowPos is called on the window thread.

commit de63b4817ae3a6951231fd89b94abcac55dd9fa8
Author: José Fonseca <jfonseca@vmware.com>
Date:   Mon Feb 3 14:35:15 2014 +0000

    glretrace: Prevent deadlock on SetWindowPos.
    
    Achieve this by using a dedicated thread to process window events.  It is
    the only practical solution for this.

commit 0ff2eb11982b9d3c7a3333900cf0d3a5c0f77e32
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 29 20:06:48 2014 +0000

    glretrace: Replay failing wglMakeCurrent calls correctly.
    
    If wglMakeCurrent failed in the trace, then just make current NULL.

commit a887bfabaed83c4588b40c845535c0388c8da0f3
Author: Lawrence L Love <lawrencex.l.love@intel.com>
Date:   Wed Jan 22 12:10:35 2014 -0800

    qapitrace: ignore more supporting files generated by qtcreator
    
    Missed this extension the previous commit:
    "qapitrace: ignore supporting files generated by qtcreator"
    
    Note: *.moc_parameters files are generated by cmake.  Without
    them, the following make error occurs:
    
    moc: Cannot open options file specified with @
    ...
    make[2]: *** [gui/apitrace.moc] Error 1
    
    Signed-off-by: Lawrence L Love <lawrencex.l.love@intel.com>

commit 4addd530e2dc1708745d11d81de21b5d1230ed41
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 22 14:06:23 2014 +0000

    image: Avoid snprintf.
    
    Fixes MSVC build failure, as MSVC only defined _snprintf.

commit 6c73f457ebfc40327fe1197fbb3a8927b1499b95
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 22 13:22:23 2014 +0000

    image: Simplify MD5 calculation and output.
    
    No intermediate buffer.

commit 3a6980cfb4c6cdacc6a195f8068a365bcd83023c
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 22 13:19:05 2014 +0000

    image: Fix bug in RAW image output.

commit f8da408f14983b1352b5bf54572c168b8337338a
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 22 13:03:24 2014 +0000

    retrace: Make --snapshot-format=MD5 work as documented.
    
    --snapshot-format is the standard output format. -s is the prefix, not
    the actual filename.
    
    That is, for MD5 one should do:
    
      ./glretrace --snapshot-format=MD5 -s - app.trace

commit daa154bb2d1213a7cc9fb4b697a0c77237e5760b
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 22 12:55:24 2014 +0000

    retrace: Document MD5 snapshot format.

commit 91ab493809b9dddd10bfafe21249d7a279402631
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 22 12:54:57 2014 +0000

    md5: Fix gcc warning.

commit 5ef7994209def7644bb582397aa2242ab95f1467
Author: Meng Mengmeng <mengmeng.meng@intel.com>
Date:   Wed Jan 22 12:44:46 2014 +0000

    glretrace: Add '--snapshot-format=MD5' option that allows write image MD5 to a text format file.
    
    Collecting MD5 is obtained based on raw buffer.  Rendering results are
    reproducd accurately.  Creating .txt in place of PNG Format, that would
    save more disk space and run faster.
    
    Reference command:
    
        glretrace  --snapshot-format=MD5  -s /tmp/MD5.log  smokinguns.trace

commit 093cf11c29fbb3db0ff8e390bf86ad29e61422a3
Author: Meng Mengmeng <mengmeng.meng@intel.com>
Date:   Wed Jan 22 12:49:20 2014 +0000

    md5: Add MD5 library.
    
    From http://www.fourmilab.ch/md5/ .

commit 87f9b199a0f9c00e1541727d1f4c96099759c96b
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 22 12:11:23 2014 +0000

    glretrace: Default to PROFILE_ES2 for EGL.
    
    It should the most common profile for EGL.
    
    Suggested Chad Versace, was quick workaround for issue #197.

commit c1e3971ca75a70fa1b9f77859bdb790e09042066
Author: José Fonseca <jfonseca@vmware.com>
Date:   Wed Jan 22 12:06:47 2014 +0000

    glws_waffle: Support shared contexts.

commit 857bb392261392508364992771fb12cef60af5f7
Author: Scott Nations <dsn@xyzw.us>
Date:   Tue Jan 21 14:35:54 2014 -0600

    Update GL/glext.h which has a modified argument list for glClearNamedBufferSubDataEXT.

commit 35125daf6f6ea68c24140ca68ac60f74869d14a7
Author: Lawrence L Love <lawrencex.l.love@intel.com>
Date:   Tue Jan 21 16:41:24 2014 -0800

    qapitrace: ignore supporting files generated by qtcreator
    
    When using qtcreator for build/debug, qtcreator creates miscellaneous
    helper files that don't need to be seen by git.
    
    Signed-off-by: Lawrence L Love <lawrencex.l.love@intel.com>

commit b3a965de28b5443e27a55aed0d8019266c569c7a
Author: Nigel Stewart <nigels@users.sourceforge.net>
Date:   Tue Jan 21 16:20:29 2014 -0600

    glretrace: Destroy Context only once via glXDestroyContext
    
    Handling adapted from retrace_wglDeleteContext

commit 8f6e5678843907a281417f7226b934341df3da09
Author: Scott Nations <dsn@xyzw.us>
Date:   Tue Jan 21 17:02:06 2014 -0600

    gltrace: Add support for NV_framebuffer_blit.


Reply to: