apitrace
9 years agoUse skiplist-based FastCallSet within trace::CallSet master
Carl Worth [Mon, 11 Mar 2013 20:22:05 +0000 (13:22 -0700)]
Use skiplist-based FastCallSet within trace::CallSet

The FastCallSet supports only ranges step of 1 and freq of
FREQUENCY_ALL, so store any such ranges there, and store all other
ranges in the existing, linear list of CallRange.

For manually entered call sets on the command line, the performance
hit of the linear lookup was not generally a problem. But when taking
the (potentially huge) output of "apitrace trim --print-callset" the
performance hit made things quite painful. This makes things usable
again.

9 years agoRename trim::CallSet to trace::FastCallSet
Carl Worth [Mon, 11 Mar 2013 20:05:52 +0000 (13:05 -0700)]
Rename trim::CallSet to trace::FastCallSet

This is in preparation for being able to use this code to optimize the common
cases in trace::CallSet, (callsets without step or freq).

9 years agoExtend trim::CallSet with a new range-based add method.
Carl Worth [Mon, 11 Mar 2013 19:14:06 +0000 (12:14 -0700)]
Extend trim::CallSet with a new range-based add method.

Previously, individual calls had to be added one-at-a-time. This was
adequate for trimming functionality where one call is examined at a
time.

But I'm now wanting to use this same CallSet code to dramatically
optimize the performance of callset specifications on the apitrace
command-line, (in particular large callsets resulting from "apitrace
trim --print-callset"). In this case, we really want to add entire
call ranges rather than just one call at a time.

9 years agotrim: Use custom skiplist for required list (instead of std::set<unsigned>)
Carl Worth [Wed, 22 Aug 2012 18:59:12 +0000 (11:59 -0700)]
trim: Use custom skiplist for required list (instead of std::set<unsigned>)

The std::set<unsigned>::insert method has been dominating profile
output for trimming large traces. Meanwhile, the access patterns of
TraceAnalyzer on the required list is extremely structured; it often
adds the next sequential integer. So we can optimize this data
structure dramatically with two additions:

  1. Store ranges rather than single elements, so that the addition of
     a new number can expand an existing range rather than inserting a
     new element.

  2. Remember the most recent element looked-up so that we can check
     it first and not do any new lookup for in-order accesses.

With these two changes we get O(1) behavior for the access pattern of
adding sequential integers. For other cases we can still get
logarithmic behavior, but we can keep N dramatically smaller.

Unfortunately, we can't implement either change (that I can see) with
STL. I don't see any way to support lookup with range-based elements
in any STL data structure.

So here, I implement a skip-list based callset data structure. It
provides optimization (1) above and affords an easy implementation of
(2) as well, (though that is postponed to a later commit).

The skip-list implementation is ported from a C version which Keith
Packard and I implemented for cairo, and with the identical license as
the license of apitrace. The reference I used is the commit named
c2509f8a721ec489e1b44fa8a68be165363787a7 in the cairo repository.

In addition to changing from C to C++, I implemented range-based
elements.

9 years agotrim: Enable dependency analysis (--auto) by default.
Carl Worth [Thu, 21 Mar 2013 23:01:25 +0000 (16:01 -0700)]
trim: Enable dependency analysis (--auto) by default.

The --exact mode of trimming can be useful, but only if the user has
somehow performed all the dependency analysis needed manually, (such
as by extracting a list of calls from a previous run by
--print-callset). Since --exact inherently requires more care to be
used, it makes sense to also require an extra command-line option, and
to thus prefer the easier-to-use --auto mode by default.

9 years agotrim: Add --no-deps, --no-prune, and --exact options.
Carl Worth [Thu, 21 Mar 2013 22:49:58 +0000 (15:49 -0700)]
trim: Add --no-deps, --no-prune, and --exact options.

These allow for explicitly specifying the behavior desired. This
change anticipates some future change of the default trimming from
--exact to --auto. (That is, with these options in place, scripts can
be written today with either --exact or --auto and be immune to any
future change of the default.)

9 years agoFix sorting of callFlagTable
Carl Worth [Fri, 12 Apr 2013 21:23:00 +0000 (14:23 -0700)]
Fix sorting of callFlagTable

Commit 89681160639 inserted three entries in an unsorted position in
the list, tripping up an internal check and causing many apitrace
operations to abort. Fix this by restoring correct sorting.

9 years agotrim: Fix early-bailout bug when accepting both --calls and --frames
Carl Worth [Mon, 11 Mar 2013 22:49:17 +0000 (15:49 -0700)]
trim: Fix early-bailout bug when accepting both --calls and --frames

The trim code was inappropriately bailing once either list was
exhausted, before also exhausting the user's other requested list.

This fixes the traces/trim-frames-and-calls test recently added to the
apitrace-tests repository.

Thanks to Eric Anholt for reporting this bug.

9 years agotrim: Greatly expand the list of calls considered to have no side effects
Carl Worth [Fri, 15 Feb 2013 02:09:14 +0000 (18:09 -0800)]
trim: Greatly expand the list of calls considered to have no side effects

The list of calls added here with the NO_SIDE_EFFECTS flag was
obtained from the existing specs/glapi.py file, (most[*] calls with
"sideeffects=False").

It's a bit unfortunate that we have this duplication of information in
the source tree, (two different lists of calls with no side
effects). But that duplication was already present before this
commit. This commit merely brings this list into sync with the other.

[*] The following calls are not added here in spite of having
sideeffects=False in glapi.py:

    glGetTextureImageEXT
    glGetnCompressedTexImageARB
    glGetnColorTableARB

José reports that the above calls can have side effects when PBOs are
on, (and he plans to update glapi.py).

Then, while the following calls may not affect traditional "GL state"
they do have side effects that can be observed by the user. And these
are debugging side effects that can be very important when
replaying/analyzing a trace. For example, debug message or string
markers are used to decorate different portions of the graphics
command stream with user-supplied data that exists nowhere else. So
these calls are not considered as having no side effects:

    glDebugMessageControl
    glDebugMessageControlARB
    glDebugMessageEnableAMD
    glDebugMessageInsert
    glDebugMessageInsertAMD
    glDebugMessageInsertARB
    glPopDebugGroup
    glPushDebugGroup
    glStringMarkerGREMEDY

9 years agotrim: Don't consider a SwapBuffers call has having no side effects
Carl Worth [Sat, 16 Feb 2013 01:15:53 +0000 (17:15 -0800)]
trim: Don't consider a SwapBuffers call has having no side effects

I can't justify why I ever added this code. I can only guess that I was
trying to get qapitrace to not show frame markers for frames that had
largely been trimmed.

Anyway, the code is wrong. SwapBuffers call obviously have significant
side effects. And the effect I was trying to achieve is already well
satisified by the change in 2f0d1a3244c8953a4468759ac466b80c4965d38f
that will trim a SwapBuffers call when --trim-spec=drawing is in
force.

9 years agotrim --prune: Look at FLAG_NO_SIDE_EFFECTS rather than FLAG_VERBOSE
Carl Worth [Sat, 16 Feb 2013 00:31:11 +0000 (16:31 -0800)]
trim --prune: Look at FLAG_NO_SIDE_EFFECTS rather than FLAG_VERBOSE

The --prune option is documented precisely to prune calls with no side
effects, so that's the flag it should examine.

Previously, the trim --prune code was keying off of the VERBOSE
flag. This hasn't made a substantial difference in the past, (the
NO_SIDE_EFFECTS calls have historically all been VERBOSE as well). But
NO_SIDE_EFFECTS has the advantage that it can objectively determined,
so the set of calls that should have this flag should be
unambiguous. (Meanwhile, whether any particular call should be
classified as VERBOSE is inherently subjective.)

9 years agogltrace,glretrace: Properly handle PBOs with GL_EXT_direct_state_access.
José Fonseca [Fri, 12 Apr 2013 10:41:00 +0000 (11:41 +0100)]
gltrace,glretrace: Properly handle PBOs with GL_EXT_direct_state_access.

- glCompressed*Tex*ImageEXT receive intptr instead of blobs when PBO is used

- glGet*Tex*ImageEXT have side effects when PBO is used

9 years agoreplay: Add a --loop option to repeatedly loop over the final frame
Carl Worth [Thu, 21 Mar 2013 20:50:29 +0000 (13:50 -0700)]
replay: Add a --loop option to repeatedly loop over the final frame

This can be useful for repeatedly exercising the driver with the
operations of a single frame.

9 years agoglretrace: Flush outstanding requests when waiting for user input.
Carl Worth [Thu, 21 Mar 2013 22:52:19 +0000 (15:52 -0700)]
glretrace: Flush outstanding requests when waiting for user input.

This helps make "apitrace replay -sb" work in cases where the driver
really only exposes double-buffered rendering, (so a flush is required
to make anything appear if the trace doesn't include a final
SwapBuffers).

9 years agoCleanup README formatting.
José Fonseca [Fri, 12 Apr 2013 09:30:21 +0000 (10:30 +0100)]
Cleanup README formatting.

9 years agogui: Fix includes.
José Fonseca [Fri, 12 Apr 2013 09:27:31 +0000 (10:27 +0100)]
gui: Fix includes.

stdio.h doesn't seem necessary. stdlib.h might be though, for exit().

9 years agoqapitrace: Support executing glretrace on a remote target host.
Carl Worth [Thu, 9 Aug 2012 15:21:42 +0000 (08:21 -0700)]
qapitrace: Support executing glretrace on a remote target host.

This is supported with a new command-line argument:

qapitrace --remote-target <HOST> <trace-file>

See README.markdown for documentation on usage and current limitations
of this feature.

9 years agocmake: Update android.toolchain.cmake from upstream (issue #115).
José Fonseca [Fri, 12 Apr 2013 09:08:53 +0000 (10:08 +0100)]
cmake: Update android.toolchain.cmake from upstream (issue #115).

From https://github.com/taka-no-me/android-cmake/commit/62bcf2b40e8b8a943dd4923dfcf614e661af0678

9 years agoRename Android.markdown to Dalvik.markdown.
José Fonseca [Thu, 11 Apr 2013 21:49:35 +0000 (22:49 +0100)]
Rename Android.markdown to Dalvik.markdown.

As README still contains Android information.

Minor tweaks.

9 years agoImprove Android tracing instructions
Alexander Monakov [Fri, 5 Apr 2013 17:53:49 +0000 (21:53 +0400)]
Improve Android tracing instructions

Tracing of Java applications on Android is quite different from tracing native
executables, so move it to a separate file.

Add instructions on using wrapping support that appeared in Android 4.0, which
simplifies usage of apitrace on Android.

Add a reference to adjust-child-env tool that allows to inject tracing library
on Android without rebuilding and reflashing recovery image.

Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
9 years agogui: Handle calls stranded between frames gracefully (issue #117).
José Fonseca [Thu, 11 Apr 2013 17:54:06 +0000 (18:54 +0100)]
gui: Handle calls stranded between frames gracefully (issue #117).

Still a bit hackish (those calls will disappear), but at least the gui
doesn't crash now.

9 years agocli: Fix script search for out of source build.
José Fonseca [Wed, 10 Apr 2013 15:20:30 +0000 (16:20 +0100)]
cli: Fix script search for out of source build.

Only for debug builds.  Release must be installed.

9 years agogltrace: Handle negative lengths in glShaderSource* (issue #116).
José Fonseca [Mon, 8 Apr 2013 18:13:51 +0000 (19:13 +0100)]
gltrace: Handle negative lengths in glShaderSource* (issue #116).

9 years agoAdd per-directory synopsis.
José Fonseca [Wed, 27 Mar 2013 11:10:37 +0000 (11:10 +0000)]
Add per-directory synopsis.

9 years agoAdd a high-level overview of apitrace source tree.
José Fonseca [Wed, 27 Mar 2013 11:09:46 +0000 (11:09 +0000)]
Add a high-level overview of apitrace source tree.

9 years agocommon: Add more comments.
José Fonseca [Wed, 27 Mar 2013 10:16:03 +0000 (10:16 +0000)]
common: Add more comments.

9 years agocmake: Check for libproc library name
Laurent Carlier [Tue, 19 Mar 2013 19:46:57 +0000 (20:46 +0100)]
cmake: Check for libproc library name

libprocps can be replaced with libprocps-ng, so check for the proper library name.
This fix building with ArchLinux.

Reviewed-by: Arthur Huillet <arthur.huillet@free.fr>
Signed-off-by: José Fonseca <jfonseca@vmware.com>
9 years agocommon: Set flags for D3D11.1 calls too.
José Fonseca [Tue, 12 Mar 2013 22:27:21 +0000 (22:27 +0000)]
common: Set flags for D3D11.1 calls too.

9 years agod3dretrace: Add state dumping support for ID3D11DeviceContext1
Jeff Muizelaar [Tue, 12 Mar 2013 20:31:17 +0000 (16:31 -0400)]
d3dretrace: Add state dumping support for ID3D11DeviceContext1

Signed-off-by: José Fonseca <jfonseca@vmware.com>
9 years agoglretrace: Fix cpu timings when not measuring gpu times.
José Fonseca [Mon, 11 Mar 2013 23:35:22 +0000 (23:35 +0000)]
glretrace: Fix cpu timings when not measuring gpu times.

9 years agoAdd some missing DXGI and D3D11.1 api
Jeff Muizelaar [Mon, 11 Mar 2013 19:56:30 +0000 (15:56 -0400)]
Add some missing DXGI and D3D11.1 api

Signed-off-by: José Fonseca <jfonseca@vmware.com>
9 years agodispatch: Compensate for broken GL headers in Visual Studio 2012
José Fonseca [Mon, 11 Mar 2013 22:37:29 +0000 (22:37 +0000)]
dispatch: Compensate for broken GL headers in Visual Studio 2012

9 years agocmake: Fix D2D include path w/ Visual Studio 2012.
José Fonseca [Mon, 11 Mar 2013 22:37:59 +0000 (22:37 +0000)]
cmake: Fix D2D include path w/ Visual Studio 2012.

9 years agogui: Link against pthread.
Rob Clark [Mon, 11 Mar 2013 17:21:25 +0000 (13:21 -0400)]
gui: Link against pthread.

/usr/bin/ld: CMakeFiles/qapitrace.dir/apitracecall.cpp.o: undefined
reference to symbol '__pthread_key_create@@GLIBC_2.2.5'
/usr/bin/ld: note: '__pthread_key_create@@GLIBC_2.2.5' is defined in DSO
/lib64/libpthread.so.0 so try adding it to the linker command line
/lib64/libpthread.so.0: could not read symbols: Invalid operation

Signed-off-by: José Fonseca <jfonseca@vmware.com>
9 years agoglretrace: Fix several problems with the earlier commit.
José Fonseca [Wed, 6 Mar 2013 20:03:54 +0000 (20:03 +0000)]
glretrace: Fix several problems with the earlier commit.

9 years agoretrace: Add single thread option.
Jerome Glisse [Mon, 18 Feb 2013 17:22:11 +0000 (12:22 -0500)]
retrace: Add single thread option.

Allow to replay trace using only one thread, helpful when debugging
driver.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: José Fonseca <jfonseca@vmware.com>
9 years agoglretrace: Fix dumping of cube map FBO attachements.
José Fonseca [Wed, 6 Mar 2013 15:12:45 +0000 (15:12 +0000)]
glretrace: Fix dumping of cube map FBO attachements.

9 years agodirectxtex: Fix MinGW64 build.
José Fonseca [Wed, 6 Mar 2013 14:09:48 +0000 (14:09 +0000)]
directxtex: Fix MinGW64 build.

9 years agod3dretrace: Use DirectXTex for d3d10 state too.
José Fonseca [Wed, 6 Mar 2013 12:12:04 +0000 (12:12 +0000)]
d3dretrace: Use DirectXTex for d3d10 state too.

9 years agoMerge branch 'directxtex'
José Fonseca [Wed, 6 Mar 2013 11:46:41 +0000 (11:46 +0000)]
Merge branch 'directxtex'

9 years agoExtend profiling tool to support Vsize and Rss memory usage profile per call
Shuang He [Mon, 18 Feb 2013 02:09:44 +0000 (10:09 +0800)]
Extend profiling tool to support Vsize and Rss memory usage profile per call

Add one new option -pmem for retrace tool to track Visze and Rss usage during every call

Signed-off-by: Shuang He <shuang.he@intel.com>
Signed-off-by: José Fonseca <jfonseca@vmware.com>
9 years agoUpdate news for new nomenclature.
José Fonseca [Fri, 22 Feb 2013 16:38:11 +0000 (16:38 +0000)]
Update news for new nomenclature.

9 years agocli: Add an alias mechanism and alias "retrace" to "replay"
Carl Worth [Mon, 11 Feb 2013 22:56:15 +0000 (14:56 -0800)]
cli: Add an alias mechanism and alias "retrace" to "replay"

This allows any existing scripts calling "apitrace retrace" to
continue to work.

9 years agocli: Rename "apitrace retrace" to "apitrace replay".
Carl Worth [Mon, 11 Feb 2013 21:49:02 +0000 (13:49 -0800)]
cli: Rename "apitrace retrace" to "apitrace replay".

After some debate on the mailing list, the consensus favors the name
"replay" for this operation. Update the documentation in
README.markdown to match.

9 years agodxgitrace: Generalize the swapchain size for the entry functions too.
José Fonseca [Fri, 22 Feb 2013 15:00:26 +0000 (15:00 +0000)]
dxgitrace: Generalize the swapchain size for the entry functions too.

9 years agod3dretrace: Force DWM traces to run on a window.
José Fonseca [Fri, 22 Feb 2013 10:47:31 +0000 (10:47 +0000)]
d3dretrace: Force DWM traces to run on a window.

Fullscreen is hard to debug.

9 years agoSerialize swapchain dimensions.
José Fonseca [Fri, 22 Feb 2013 10:24:31 +0000 (10:24 +0000)]
Serialize swapchain dimensions.

9 years agotrace: Unwrap all args before serializing them.
José Fonseca [Fri, 22 Feb 2013 10:23:51 +0000 (10:23 +0000)]
trace: Unwrap all args before serializing them.

9 years agotrace: Remove unused Trace::unwrapRet method.
José Fonseca [Fri, 22 Feb 2013 10:08:46 +0000 (10:08 +0000)]
trace: Remove unused Trace::unwrapRet method.

9 years agoinject: Always output warning messages to debug output.
José Fonseca [Fri, 22 Feb 2013 09:41:54 +0000 (09:41 +0000)]
inject: Always output warning messages to debug output.

9 years agoinject: Add define to use environment var instead of shared memory.
José Fonseca [Fri, 22 Feb 2013 09:40:30 +0000 (09:40 +0000)]
inject: Add define to use environment var instead of shared memory.

9 years agod3dretrace: Cope with _MAP_FLAG_DO_NOT_WAIT flags.
José Fonseca [Tue, 19 Feb 2013 13:29:26 +0000 (13:29 +0000)]
d3dretrace: Cope with _MAP_FLAG_DO_NOT_WAIT flags.

If the map succeeded in the original trace, then we must wait.

9 years agod3dretrace: Replay IUnknown::AddRef/Release methods faithfully.
José Fonseca [Tue, 19 Feb 2013 13:28:24 +0000 (13:28 +0000)]
d3dretrace: Replay IUnknown::AddRef/Release methods faithfully.

Several D3D APIs (especially recent ones) keep track of reference counts
and will ensure errors if reference counting is not properly done.

For example, IDXGISwapChain::ResizeBuffers will fail if there are
outstanding references to its buffers.

9 years agotrace_parser: More comprehensive debug output.
José Fonseca [Thu, 21 Feb 2013 13:08:13 +0000 (13:08 +0000)]
trace_parser: More comprehensive debug output.

It was useful to diagnose issue #110.

9 years agoreplay: Support applications mixing glCreateProgramObjectARB and glUseProgram
Carl Worth [Tue, 28 Aug 2012 18:45:52 +0000 (11:45 -0700)]
replay: Support applications mixing glCreateProgramObjectARB and glUseProgram

As is known to happen with OpenGL, there are many more than one ways
to do the same thing. In this case, one can create a program
(glCreateProgram) or a program object (glCreateProgramObjectARB) along
with many similar pairs of functions.

In fact, a single application might even mix these two approaches,
(for example, calling glCreateProgramObjectARB and then calling
glUseProgram rather than glUseProgramObjectARB).

Historically, glretrace could fail with such mixed usage. The calls
into the ObjectARB function would go through _handleARB_map while the
other calls would go through _program_map, so after mixed calls the
desired object would not be found in the referenced map.

Making mixed usage work requires merging both _program_map and
_shader_map together with _handleARB map. This is correct for any
OpenGL implementation which supports the GL_ARB_shader_objects
extension, since there is no way to implement this extension correctly
without having shaders and programs in the same namespace.

However, we carefully maintain separate _shader_map and _program_map
for an OpenGL implementation not supporting GL_ARB_shader_objects. In
this case, it's not possible for an application to mix usage (since
none of the ObjectARB functions are guaranteed to exist). And it's
also possible for the implementation to provide separate namespaces
for shaders and programs, so they each need their own map.

9 years agoGet DWM traces working.
José Fonseca [Tue, 12 Feb 2013 16:19:23 +0000 (16:19 +0000)]
Get DWM traces working.

Sort-of -- shared resources still don't work correctly.

9 years agospecs/dxva: Try to define DXVA2_PVP_SETKEY.
José Fonseca [Fri, 8 Feb 2013 13:47:40 +0000 (13:47 +0000)]
specs/dxva: Try to define DXVA2_PVP_SETKEY.

9 years agotrim: Trim swapbuffers calls when --trim-spec=drawing
Carl Worth [Fri, 16 Nov 2012 20:41:52 +0000 (12:41 -0800)]
trim: Trim swapbuffers calls when --trim-spec=drawing

Previously, the SwapBuffers calls were only getting trimmed if
--trim-spec included "no-side-effects". It was counter-intuitive that
a trim-spec of "drawing" alone would leave all the SwapBuffers calls
in place. So catch them under this trim-spec as well.

9 years agotrim: Add a new --trim-spec option for fine-grained trimming
Carl Worth [Thu, 15 Nov 2012 04:55:31 +0000 (20:55 -0800)]
trim: Add a new --trim-spec option for fine-grained trimming

This has two benefits:

1. In cases where the dependency analysis goes wrong, using the --trim-spec
   option can help identify which portion of the code is misbehaving, (and
   allows the user to still get some trim benefit by avoiding the broken
   code).

2. The implementation of this change breaks the analysis code up into several
   more fine-grained functions, so it should be easier to review and maintain.

9 years agod3dtrace: Fix DXVA2_DecodeExecuteParams::pCompressedBuffers spec.
José Fonseca [Wed, 6 Feb 2013 12:26:50 +0000 (12:26 +0000)]
d3dtrace: Fix DXVA2_DecodeExecuteParams::pCompressedBuffers spec.

9 years agod3dtrace: Recognize YV12 format.
José Fonseca [Wed, 6 Feb 2013 11:36:59 +0000 (11:36 +0000)]
d3dtrace: Recognize YV12 format.

9 years agoUpdate Android instructions.
José Fonseca [Tue, 5 Feb 2013 11:44:26 +0000 (11:44 +0000)]
Update Android instructions.

Not really based from personal experience, but rather on what others wrote,
namely

  https://github.com/kanru/apitrace/commit/5948e72a25b1d2df07299db0d49f91677827478b

9 years agoglstate: Cleanup the read buffer selection code slightly.
José Fonseca [Fri, 1 Feb 2013 17:03:11 +0000 (17:03 +0000)]
glstate: Cleanup the read buffer selection code slightly.

We were calling glReadBuffer(draw_buffer) before reading the GL_READ_BUFFER.

9 years agoimage: make getDrawBufferImage() work for ES or !ARB_draw_buffers
Rob Clark [Tue, 29 Jan 2013 00:50:07 +0000 (18:50 -0600)]
image: make getDrawBufferImage() work for ES or !ARB_draw_buffers

Without this 'apitrace dump-images' was failing for me (GLES, freedreno
gallium driver) because attachment would be GL_NONE.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Carl Worth <cworth@cworth.org>
Signed-off-by: José Fonseca <jfonseca@vmware.com>
9 years agod3dretrace: Recognize IDirect3DDevice9Ex::PresentEx as frame terminator.
José Fonseca [Thu, 31 Jan 2013 20:26:23 +0000 (20:26 +0000)]
d3dretrace: Recognize IDirect3DDevice9Ex::PresentEx as frame terminator.

9 years agotrim: Fix short command-line option -a for "apitrace trim"
Carl Worth [Mon, 28 Jan 2013 12:37:17 +0000 (23:37 +1100)]
trim: Fix short command-line option -a for "apitrace trim"

This was documented as being equivalent to --auto, but one piece of
the plumbing was not in place.

9 years agoglretrace: Fix snapshots on GL 3.2 core contexts (issue #106).
José Fonseca [Wed, 23 Jan 2013 16:15:40 +0000 (16:15 +0000)]
glretrace: Fix snapshots on GL 3.2 core contexts (issue #106).

glPush/PopClientAttrib() are not available in core contexts. Simply
save/restore the state via glGet and pack API.

9 years agoglretrace: Ignore a few more CGL calls.
José Fonseca [Wed, 23 Jan 2013 15:16:22 +0000 (15:16 +0000)]
glretrace: Ignore a few more CGL calls.

9 years agoos: Cast pthread_create's arg parameter.
José Fonseca [Wed, 23 Jan 2013 15:00:47 +0000 (15:00 +0000)]
os: Cast pthread_create's arg parameter.

9 years agocli: Inject DLL on windows by default.
José Fonseca [Thu, 20 Dec 2012 16:29:01 +0000 (16:29 +0000)]
cli: Inject DLL on windows by default.

9 years agocli: Update description of windows trace apis.
José Fonseca [Thu, 20 Dec 2012 16:28:29 +0000 (16:28 +0000)]
cli: Update description of windows trace apis.

9 years agogltrace: Prevent use of uninitialised variable.
José Fonseca [Thu, 20 Dec 2012 16:26:29 +0000 (16:26 +0000)]
gltrace: Prevent use of uninitialised variable.

9 years agogltrace: Recognize more ES parameters.
José Fonseca [Thu, 20 Dec 2012 16:26:06 +0000 (16:26 +0000)]
gltrace: Recognize more ES parameters.

We now always use our bundled headers so no need to be conservative any
more.

9 years agogltrace: Support GL_(NUM_)PROGRAM_BINARY_FORMATS (issue #104).
José Fonseca [Thu, 20 Dec 2012 16:10:55 +0000 (16:10 +0000)]
gltrace: Support GL_(NUM_)PROGRAM_BINARY_FORMATS (issue #104).

9 years agogltrace/retrace: Full support for variable length parameters.
José Fonseca [Thu, 20 Dec 2012 15:34:50 +0000 (15:34 +0000)]
gltrace/retrace: Full support for variable length parameters.

Such as GL_COMPRESSED_TEXTURE_FORMATS.

9 years agoretrace: Split ScopedAllocator into its own header.
José Fonseca [Thu, 20 Dec 2012 15:29:09 +0000 (15:29 +0000)]
retrace: Split ScopedAllocator into its own header.

It will be useful outside of retrace.

9 years agoUpdate downloads link.
José Fonseca [Tue, 18 Dec 2012 10:45:39 +0000 (10:45 +0000)]
Update downloads link.

9 years agocli: Fix MSVC build.
José Fonseca [Wed, 12 Dec 2012 18:35:56 +0000 (18:35 +0000)]
cli: Fix MSVC build.

9 years agod3dretrace: presents may flip so set CALL_FLAG_SWAP_RENDERTARGET flag.
José Fonseca [Wed, 12 Dec 2012 09:18:32 +0000 (09:18 +0000)]
d3dretrace: presents may flip so set CALL_FLAG_SWAP_RENDERTARGET flag.

9 years agod3dretrace: Dump D3D8 images too.
José Fonseca [Wed, 12 Dec 2012 07:38:42 +0000 (07:38 +0000)]
d3dretrace: Dump D3D8 images too.

9 years agoscripts: Add some missing code.
José Fonseca [Tue, 11 Dec 2012 20:37:39 +0000 (20:37 +0000)]
scripts: Add some missing code.

9 years agoscripts: New script to convert to PIX.
José Fonseca [Tue, 11 Dec 2012 19:51:26 +0000 (19:51 +0000)]
scripts: New script to convert to PIX.

9 years agod3dretrace: Follow --driver option for d3d8/d3d9 too
José Fonseca [Tue, 11 Dec 2012 19:02:48 +0000 (19:02 +0000)]
d3dretrace: Follow --driver option for d3d8/d3d9 too

9 years agod3d9state: Upack D3DFMT_R5G6B5 too.
José Fonseca [Tue, 11 Dec 2012 17:50:50 +0000 (17:50 +0000)]
d3d9state: Upack D3DFMT_R5G6B5 too.

Quite common.

9 years agoscripts: Don't install bogus sample.py
José Fonseca [Tue, 11 Dec 2012 09:02:23 +0000 (09:02 +0000)]
scripts: Don't install bogus sample.py

9 years agoscripts: Install all of them.
José Fonseca [Tue, 11 Dec 2012 07:34:45 +0000 (07:34 +0000)]
scripts: Install all of them.

9 years agoInstall all thirdparty licenses.
José Fonseca [Tue, 11 Dec 2012 07:22:16 +0000 (07:22 +0000)]
Install all thirdparty licenses.

9 years agoMerge branch 'trim-auto'
José Fonseca [Tue, 11 Dec 2012 07:20:26 +0000 (07:20 +0000)]
Merge branch 'trim-auto'

Conflicts:
cli/CMakeLists.txt

9 years agoMerge remote-tracking branch 'github/timestamp'
José Fonseca [Mon, 10 Dec 2012 22:58:18 +0000 (22:58 +0000)]
Merge remote-tracking branch 'github/timestamp'

9 years agoglretrace: Remove the gpu/cpu time syncing code.
José Fonseca [Mon, 10 Dec 2012 17:11:36 +0000 (17:11 +0000)]
glretrace: Remove the gpu/cpu time syncing code.

No longer necessary now that we use the same clock (GL_TIMESTAMP) for
both GPU and CPU time measurements.

9 years agocmake: Move the binary/installs definitions to CLI.
José Fonseca [Sun, 9 Dec 2012 15:46:59 +0000 (15:46 +0000)]
cmake: Move the binary/installs definitions to CLI.

As that's the only place they are used.

9 years agoqapitrace: Determine binary dir in run-time.
José Fonseca [Sun, 9 Dec 2012 13:22:30 +0000 (13:22 +0000)]
qapitrace: Determine binary dir in run-time.

9 years agoqapitrace: Adjust PATH only once and for all.
José Fonseca [Sun, 9 Dec 2012 13:05:24 +0000 (13:05 +0000)]
qapitrace: Adjust PATH only once and for all.

9 years agoqapitrace: Fix histogram tooltip for profiles with small number of calls.
José Fonseca [Sun, 9 Dec 2012 12:38:48 +0000 (12:38 +0000)]
qapitrace: Fix histogram tooltip for profiles with small number of calls.

9 years agogui/tracedialog: Don't show warning when user cancel to browse.
Alexandr Akulich [Fri, 7 Dec 2012 11:22:49 +0000 (17:22 +0600)]
gui/tracedialog: Don't show warning when user cancel to browse.

And add three dots to browse button's label to indicate dialog.

9 years agogui/mainwindow: Add functions that toggle actions enables and use it.
Alexandr Akulich [Fri, 7 Dec 2012 10:59:52 +0000 (16:59 +0600)]
gui/mainwindow: Add functions that toggle actions enables and use it.

Added enabling/disabling of few more actions.
Cleanup .ui file (set actions to default state).

9 years agogui: Fix crash on trigger actions without loaded trace-file.
Alexandr Akulich [Fri, 7 Dec 2012 10:58:14 +0000 (16:58 +0600)]
gui: Fix crash on trigger actions without loaded trace-file.
gui/apitrace: findFrameStart(), findFrameEnd(): Do nothing, when passed frame is null-pointer.

9 years agogui: Small style/usability fixes.
Alexandr Akulich [Fri, 7 Dec 2012 10:12:03 +0000 (16:12 +0600)]
gui: Small style/usability fixes.

Add accelerator (F) to Edit->Find.
Add accelerator (N) and shortcut (Ctrl+N) to File->New.
Rename "File->New" to "File->New..." to indicate, that dialog will be showed.

9 years agoglretrace: Use GL_TIMESTAMP (if available) for CPU profiling.
Carl Worth [Thu, 15 Nov 2012 18:51:01 +0000 (10:51 -0800)]
glretrace: Use GL_TIMESTAMP (if available) for CPU profiling.

The prior scheme of trying to continuously re-synchronize separate CPU
and GPU counters is doomed to always be unreliable. Instead, simply prefer
to use the GL_TIMESTAMP values for both GPU and for CPU profiling.

v2: José Fonseca: use glGet(GL_TIMESTAMP)

9 years agod3d11state: Use DirectXTex for format conversion.
José Fonseca [Fri, 7 Dec 2012 15:33:47 +0000 (15:33 +0000)]
d3d11state: Use DirectXTex for format conversion.