summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-01-09retrace: Add --loopsecs argument.loopsecsEmma Anholt3-8/+45
The traces-db traces are all trimmed to be one giant setup frame and one frame of rendering. If you want to do performance work on that, you really just care about measuring the rendering frame, not the setup frame. People have suggested ranking "--loop=" up high enough, but it turns out that there's not really a useful value of "high enough" if the setup time might be also changing (such as when evaluating zink vs native GL). Sample output: eglretrace ~/src/traces-db/valve/portal-2-v2.trace --loopsecs=5 warning: --loop blindly repeats the last frame calls, therefore frames might not necessarily render correctly (https://github.com/apitrace/apitrace/issues/800) [...] Rendered the last frame 2305 times in 5.00101 secs, average of 460.907 fps Rendered 2308 frames in 7.15039 secs, average of 322.78 fps
2022-12-16#848. All three states of GL_ATI_mem_info are int x 4 arrays.stgatilov1-3/+3
2022-12-06gltrim: move gen calls and shader setup from the last frameGert Wollny5-11/+104
One major use case for this trimming is to run the final frame in a loop to capture some performance numbers. However, if an object is created in the last frame, and not destroyed, then these allocations will accumulate and may lead to memory exhaustion. Therefore, move gen calls that are not paired with delete calls and and shader compilation and linking calls before the last frame so that they will not be repeated when the last frame runs in a loop. We still may se errors in loops, because calls like glTexStorage or glBufferStorage created immutable objects that can only be set up once, but moving these calls before the last frame is difficult, because then we also have to replicated the bind calls, therefore we don't take these calls into account with this optimization. Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
2022-12-06d3d8trace: Remap state block handlesAlpyne1-5/+6
2022-11-28cli: Dump machine representation when dumping blobs.Jose Fonseca1-0/+4
Fixes https://github.com/apitrace/apitrace/issues/840
2022-11-16d3dretrace: Implement -w/--wait.Jose Fonseca1-2/+6
Fixes: https://github.com/apitrace/apitrace/issues/837
2022-11-12d3d8trace: Remap shader handlesAlpyne1-11/+15
2022-11-12gui: Add iconKirill Izmestev3-0/+3
2022-11-10glstate: Detect/skip SPIR-V binary shaders.Jose Fonseca1-1/+10
2022-11-10specs: Handle GL_ARB_gl_spirv better.Jose Fonseca1-0/+4
2022-11-09specs: Handle GL_COMPUTE_WORK_GROUP_SIZE.Jose Fonseca1-1/+1
Fixes https://github.com/apitrace/apitrace/issues/832
2022-10-27gltrace: Handle repeated glBufferStorage of same buffer name.Jose Fonseca1-1/+1
std::map insert method is a no-op when the key exists. Thanks to jirongjiao for finding and proposing a fix for this issue. Fixes https://github.com/apitrace/apitrace/issues/830
2022-10-26cmake: Provide option to build with Qt6.Jose Fonseca2-10/+15
It builds, but running quickly asserts/segfaults.
2022-10-26gui: Drop QDesktopWidget includes.Jose Fonseca3-3/+0
2022-10-26gui: Switch from QRegExp to QRegularExpression.Jose Fonseca7-34/+45
2022-10-26gui: Address deprecation warnings.Jose Fonseca6-10/+11
2022-10-17gltrace: Intercept libOpenGL.so too.Jose Fonseca1-0/+6
https://github.com/apitrace/apitrace/issues/829
2022-10-17gltrace: Intercept libGLX.so.Jose Fonseca2-0/+10
There's probably more to support glvnd than intercepting libGLX.so, as applications can call libOpenGL.so too. But this is enough for applications which obtain OpenGL symbols through libGLX.so's glXGetProcAddress(ARB). Fixes https://github.com/apitrace/apitrace/issues/829
2022-10-17cmake: Require Qt 5.15.Jose Fonseca2-2/+2
2022-10-17ci: Upgrade macOS Qt to 5.15.2.Jose Fonseca2-4/+7
2022-10-17cmake: Simplify.Jose Fonseca2-22/+5
2022-10-17cmake: Fix GenerateVersion.cmake path.Jose Fonseca1-1/+1
2022-10-05github: Add missing apt-get update.Jose Fonseca1-0/+1
2022-10-05ci: Build Windows Arm packages too.Jose Fonseca2-47/+62
2022-10-05cmake: Distinguish Windows Arm packages.Jose Fonseca1-0/+14
2022-10-05cmake: Fix MSVC 32bits Arm build.Jose Fonseca4-0/+15
2022-10-05cmake: Allow building for Windows Arm.Jose Fonseca7-37/+60
Tested with llvm-clang crosscompilers.
2022-10-05os: Remove pre-Vista KiUserExceptionDispatcher CLD workaround.Jose Fonseca1-15/+0
We only support Windows7 onwards.
2022-10-03scripts: Refactor pickling into a single helper function.Jose Fonseca3-42/+52
2022-09-28cli: Pickle thread ids.Jose Fonseca2-1/+5
2022-09-28cli: Terminate pickling early when possible.Jose Fonseca1-0/+4
2022-09-28cli: Fix thinko in pickle.Jose Fonseca1-1/+1
The number before 0x80 is 0x7f, not 0x79...
2022-09-28Revert "trace: Prioritize IUnknown::Release calls."Jose Fonseca2-75/+13
This reverts commit aee153a43f405831a7ee581a28591f70dd439c9e. It leads to misordered calls. Revert for now.
2022-09-28retrace: Add --version option.Jose Fonseca2-0/+9
2022-09-27Fix MinGW warnings about printf specifiers.Jose Fonseca6-10/+20
2022-09-27gltrim: Avoid compiler warnings about end of function without return.Jose Fonseca1-0/+1
2022-09-27dispatch: Remove compatibility with old Windows SDK headers.Jose Fonseca1-40/+0
2022-09-27appveyor: Remove.Jose Fonseca6-80/+1
AppVeyor had the advantage of having static URLs to the latest artifacts, but I managed to workaround this GitHub limitation with a cron job that uploads latest binaries files to freedesktop.org.
2022-09-27retrace: Don't use std::string for g_processName on Windows.Jose Fonseca1-11/+13
Like done on Linux, to prevent calls after tear down to fail (with assertion failure.)
2022-09-27github: Update Ubuntu images to 22.04.Jose Fonseca1-13/+13
2022-09-27cglretrace: Better error message when failing to load system's OpenGL framework.Jose Fonseca1-16/+38
https://github.com/apitrace/apitrace/issues/826
2022-09-27lib: Fix leak in StringPrefixes::StringPrefixes.Jose Fonseca1-1/+3
Courtesy of clang-tidy.
2022-09-27wrappers: Silience overloaded method warnings.Jose Fonseca1-5/+0
Not very helpful.
2022-09-27trace: Prioritize IUnknown::Release calls.Jose Fonseca3-22/+80
An application might call Release() on one object on one thread, and receive a newly created object with the same point on another thread, _before_ the Release call completes. In such cases, replaying calls by any static order (either enter or leave) is bound to lead to spurious use-after-free bugs. However this can be avoided by prioritizing Release calls, so they are always executed before creation, as the opposite can never be intended by a race-free application.
2022-09-26directxmath: Upgrade to may2022 release.Jose Fonseca1-0/+0
2022-09-26snappy: Upgrade to v1.1.9.Jose Fonseca1-0/+0
2022-09-26brotli: Upgrade to v1.0.7.Jose Fonseca2-0/+7
2022-09-26gtest: Upgrade to v1.12.1.Jose Fonseca2-1/+1
2022-09-26d3dretrace: Actually use szSoftware when replaying ↵Jose Fonseca1-2/+2
IDXGIFactory::CreateSoftwareAdapter.
2022-09-26gui: deprecated qSort -> std::sort.Jose Fonseca2-2/+6