Skip to content
This repository

Apr 10, 2014

  1. zackr

    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.
    authored April 09, 2014

Apr 08, 2014

  1. José Fonseca

    d3dretrace: Force windowed mode on D3D9 traces.

    Because there is no guarantee that the display mode is available.
    authored April 08, 2014
  2. José Fonseca

    d3dretrace: Terminate when CreateDevice fails.

    Like we do for D3D10+.
    authored April 08, 2014
  3. José Fonseca

    d3dretrace: Enable D3D9D when additional debug is requested.

    authored April 08, 2014
  4. José Fonseca

    retrace: Allow multiple levels of debugging checks.

    authored April 08, 2014
  5. José Fonseca

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

    …he same.
    authored March 27, 2014

Mar 27, 2014

  1. José Fonseca

    glretrace: Don't rely on kCGLOGLPVersion_GL4_Core.

    It doesn't work, per #181 (comment)
    authored March 27, 2014
  2. José Fonseca

    Revert "qapitrace: fix an inline string FIXME request"

    This reverts commit 0d86efd, from
    issue #244, due to two problems I just noticed:
    - strcasestr doesn't exist on Windows, and there seems to be no easy
    - ApiTraceCall::contains search the string in the whole call (not just
      the name)
    authored March 27, 2014
  3. Lawrence Love

    qapitrace: fix an inline string FIXME request

    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.
    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.
    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.
    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 <>
    authored March 25, 2014 jrfonseca committed March 27, 2014

Mar 19, 2014

  1. José Fonseca

    glstate: Describe a few more transform feedback states.

    authored March 19, 2014

Mar 10, 2014

  1. 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 <>
    authored March 07, 2014 jrfonseca committed March 10, 2014

Mar 07, 2014

  1. José Fonseca

    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 <>
    authored March 07, 2014
  2. José Fonseca

    gltrace: Use _glGetInteger where possible.

    Simplifies/condenses code somewhat.
    authored March 07, 2014
  3. José Fonseca

    glretrace: Use glStringi for all 3.x contexts.

    And not just those we explicitly request to be core context.
    Fixes issue #236.
    authored March 07, 2014

Feb 28, 2014

  1. José Fonseca

    dxgitrace: Fix IDXGISwapChainDWM spec.

    authored February 28, 2014
  2. José Fonseca

    glstate: Dump GL_ARB_buffer_storage state.

    authored February 28, 2014
  3. José Fonseca

    gltrace: Warn about coherent/pinned memory mappings being unsupported.

    See issue #232.
    authored February 28, 2014
  4. José Fonseca

    gui: Use more precision dumping pixels.

    authored February 28, 2014
  5. José Fonseca

    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.
    authored February 28, 2014
  6. José Fonseca

    glretrace: Centralise and complete the list of texture targets.

    authored February 28, 2014
  7. José Fonseca

    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.
    authored February 28, 2014
  8. Alexander Monakov

    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.
    authored July 02, 2013 jrfonseca committed February 28, 2014
  9. José Fonseca

    md5: Fix include for memcpy.

    It should be string.h.  This fixes warnings about undeclared memcpy
    when building for Android.
    authored February 28, 2014
  10. Alexander Monakov

    gltrace: Prefer process title over executable path on Android

    v2: Add comment (Jose Fonseca)
    authored July 02, 2013 jrfonseca committed February 28, 2014
  11. José Fonseca

    gltrace: Handle GL_AMD_sparse_texture bitmask.

    authored February 28, 2014
  12. José Fonseca

    glstate: Tweaks for GL_ARB_seamless_cubemap_per_texture.

    GL_TEXTURE_CUBE_MAP_SEAMLESS is now also per texture.
    authored February 28, 2014

Feb 27, 2014

  1. José Fonseca

    specs/glparams: Add missing enums.

    Feed from gl.xml as opposed from deprecated .spec files.
    authored February 27, 2014
  2. José Fonseca

    specs/glparams: Reorder parameters numerically.

    No other change.
    authored February 27, 2014
  3. José Fonseca

    cgltrace: Tweaks to CGL api support.

    authored February 27, 2014

Feb 26, 2014

  1. José Fonseca

    gltrace: Trace GL_NV_vdpau_interop.

    Traces won't be replayable, but this will at least prevent the
      apitrace: warning: unknown function "glVDPAU*"
    authored February 26, 2014
  2. José Fonseca

    gltrace: Support GL_NV_blend_equation_advanced.

    authored February 26, 2014
  3. José Fonseca

    egltrace: Fix eglGetConfigs/eglChooseConfig prototypes.

    `configs` is an output parameter.
    authored February 26, 2014
  4. José Fonseca

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

    authored February 26, 2014

Feb 25, 2014

  1. zackr

    Merge pull request #231 from lawlove/qapitrace-startnum

    qapitrace: fails to find [CALLNO] in first frame
    authored February 25, 2014
  2. José Fonseca

    gltrace: Detect the availability of tr1/memory header.

    Instead of trying to guess it.
    Should fix issue #224
    authored February 25, 2014
Something went wrong with that request. Please try again.