.gitignore | 2 .travis.yml | 59 BUGS.markdown | 210 CMakeLists.txt | 402 DEVELOPMENT.markdown | 169 Dalvik.markdown | 55 INSTALL.markdown | 142 NEWS.markdown | 72 README.markdown | 524 TODO.markdown | 1 appveyor.yml | 38 cli/CMakeLists.txt | 23 cli/cli.hpp | 4 cli/cli_diff.cpp | 10 cli/cli_diff_images.cpp | 10 cli/cli_diff_state.cpp | 71 cli/cli_dump.cpp | 14 cli/cli_pager.cpp | 47 cli/cli_pager.hpp | 4 cli/cli_pickle.cpp | 30 cli/cli_resources.cpp | 7 cli/cli_resources.hpp | 4 cli/cli_retrace.hpp | 4 cli/cli_sed.cpp | 59 cli/cli_trace.cpp | 114 cli/pickle.hpp | 65 cmake/ConvenienceLibrary.cmake | 15 cmake/FindDirectX.cmake | 497 cmake/FindSNAPPY.cmake | 13 cmake/Findprocps.cmake | 16 cmake/InstallPDB.cmake | 17 cmake/toolchain/android.toolchain.cmake | 391 common/formatter.hpp | 225 common/highlight.cpp | 324 common/highlight.hpp | 86 common/os.hpp | 27 common/os_backtrace.hpp | 5 common/os_binary.hpp | 4 common/os_dl.hpp | 4 common/os_memory.hpp | 23 common/os_posix.cpp | 111 common/os_process.hpp | 4 common/os_string.hpp | 6 common/os_thread.hpp | 198 common/os_time.hpp | 4 common/os_version.hpp | 61 common/os_win32.cpp | 88 common/trace_api.hpp | 5 common/trace_callset.hpp | 4 common/trace_dump.cpp | 67 common/trace_dump.hpp | 16 common/trace_fast_callset.hpp | 4 common/trace_file.hpp | 5 common/trace_file_snappy.cpp | 28 common/trace_file_zlib.cpp | 42 common/trace_format.hpp | 109 common/trace_loader.hpp | 4 common/trace_lookup.hpp | 4 common/trace_model.cpp | 95 common/trace_model.hpp | 31 common/trace_option.cpp | 9 common/trace_option.hpp | 7 common/trace_parser.cpp | 28 common/trace_parser.hpp | 7 common/trace_parser_flags.cpp | 85 common/trace_profiler.cpp | 1 common/trace_profiler.hpp | 4 common/trace_writer.cpp | 32 common/trace_writer.hpp | 5 common/trace_writer_local.cpp | 51 common/trace_writer_local.hpp | 6 common/trace_writer_model.cpp | 4 common/ubjson.hpp | 111 debian/apitrace-gl-frontend.install | 8 debian/apitrace-gl-tracers.install | 2 debian/apitrace-gui.install | 3 debian/apitrace-tracers.install | 2 debian/apitrace.install | 5 debian/control | 42 debian/patches/series | 7 debian/patches/use-system-libbacktrace | 11 debian/patches/use-system-md5 | 24 debian/patches/use-system-snappy.patch | 84 dispatch/.gitignore | 1 dispatch/CMakeLists.txt | 36 dispatch/compat.h | 23 dispatch/d2dimports.hpp | 4 dispatch/d3d10_1imports.hpp | 48 dispatch/d3d10imports.hpp | 9 dispatch/d3d11imports.hpp | 6 dispatch/d3d8imports.hpp | 4 dispatch/d3d9imports.hpp | 4 dispatch/d3derr.hpp | 43 dispatch/d3dimports.hpp | 57 dispatch/dispatch.py | 73 dispatch/dlopen.hpp | 4 dispatch/dxgiint.h | 25 dispatch/eglimports.hpp | 4 dispatch/glimports.hpp | 59 dispatch/glproc.py | 152 dispatch/glproc_egl.cpp | 27 dispatch/glproc_gl.cpp | 57 docs/BUGS.markdown | 215 docs/Dalvik.markdown | 52 docs/FORMAT.markdown | 128 docs/HACKING.markdown | 244 docs/INSTALL.markdown | 174 docs/NEWS.markdown | 100 docs/TODO.markdown | 1 docs/USAGE.markdown | 551 docs/VMWX_map_buffer_debug.txt | 116 gui/.gitignore | 3 gui/CMakeLists.txt | 80 gui/androiddevicedialog.cpp | 556 gui/androiddevicedialog.h | 65 gui/androidfiledialog.cpp | 279 gui/androidfiledialog.h | 45 gui/androidretracer.cpp | 326 gui/androidretracer.h | 33 gui/androidutils.cpp | 185 gui/androidutils.h | 71 gui/apicalldelegate.cpp | 18 gui/apicalldelegate.h | 5 gui/apisurface.cpp | 17 gui/apisurface.h | 14 gui/apitrace.cpp | 106 gui/apitrace.h | 24 gui/apitracecall.cpp | 258 gui/apitracecall.h | 47 gui/apitracefilter.cpp | 17 gui/apitracefilter.h | 5 gui/apitracemodel.cpp | 1 gui/apitracemodel.h | 5 gui/argumentseditor.h | 5 gui/calldurationgraph.h | 4 gui/glsledit.cpp | 2 gui/graphing/frameaxiswidget.h | 5 gui/graphing/graphaxiswidget.h | 5 gui/graphing/graphing.h | 5 gui/graphing/graphlabelwidget.h | 5 gui/graphing/graphview.h | 5 gui/graphing/graphwidget.h | 5 gui/graphing/heatmapverticalaxiswidget.h | 5 gui/graphing/heatmapview.h | 5 gui/graphing/histogramview.h | 5 gui/graphing/timeaxiswidget.h | 5 gui/imageviewer.cpp | 8 gui/imageviewer.h | 9 gui/jumpwidget.h | 5 gui/main.cpp | 5 gui/mainwindow.cpp | 392 gui/mainwindow.h | 24 gui/pixelwidget.h | 6 gui/profiledialog.cpp | 2 gui/profiledialog.h | 5 gui/profileheatmap.h | 13 gui/profiletablemodel.h | 4 gui/profiling.h | 5 gui/qapitrace.qrc | 46 gui/qubjson.cpp | 298 gui/qubjson.h | 34 gui/qubjson_test.cpp | 157 gui/resources/android-setup.png |binary gui/resources/android.png |binary gui/resources/glreference-man.sh | 10 gui/resources/glreference-registry.sh | 6 gui/resources/glreference.tsv | 6498 +++++----- gui/retracer.cpp | 183 gui/retracer.h | 22 gui/saverthread.cpp | 11 gui/saverthread.h | 6 gui/searchwidget.h | 5 gui/settingsdialog.cpp | 60 gui/settingsdialog.h | 11 gui/shaderssourcewidget.h | 5 gui/thumbnail.h | 5 gui/tracedialog.h | 5 gui/traceloader.cpp | 296 gui/traceloader.h | 34 gui/traceprocess.h | 5 gui/trimprocess.h | 6 gui/ui/androiddevicedialog.ui | 132 gui/ui/androidfiledialog.ui | 149 gui/ui/imageviewer.ui | 18 gui/ui/mainwindow.ui | 133 gui/ui/profilereplaydialog.ui | 12 gui/ui/settings.ui | 136 gui/vertexdatainterpreter.h | 5 helpers/CMakeLists.txt | 18 helpers/com_ptr.hpp | 87 helpers/d3d10size.hpp | 44 helpers/d3d11size.hpp | 44 helpers/d3d7size.hpp | 105 helpers/d3d8size.hpp | 4 helpers/d3d9size.hpp | 4 helpers/d3dcommonsize.hpp | 4 helpers/d3dshader.cpp | 4 helpers/d3dshader.hpp | 4 helpers/dxgisize.hpp | 4 helpers/eglsize.hpp | 5 helpers/glprofile.cpp | 325 helpers/glprofile.hpp | 143 helpers/glsize.hpp | 245 image/image.hpp | 13 image/image_md5.cpp | 6 image/image_png.cpp | 75 image/image_pnm.cpp | 11 inject/CMakeLists.txt | 11 inject/inject.h | 112 inject/injectee.cpp | 974 + inject/injector.cpp | 500 retrace/.gitignore | 2 retrace/CMakeLists.txt | 284 retrace/android/AndroidManifest.xml | 23 retrace/android/build.gradle | 46 retrace/android/java/apitrace/github/io/eglretrace/AbstractServer.java | 31 retrace/android/java/apitrace/github/io/eglretrace/QtCreatorDebugger.java | 242 retrace/android/java/apitrace/github/io/eglretrace/RetraceActivity.java | 114 retrace/android/java/apitrace/github/io/eglretrace/Servers.java | 54 retrace/android/local.properties.in | 7 retrace/android/res/drawable-hdpi/ic_launcher.png |binary retrace/android/res/drawable-mdpi/ic_launcher.png |binary retrace/android/res/drawable-xhdpi/ic_launcher.png |binary retrace/android/res/drawable-xxhdpi/ic_launcher.png |binary retrace/android/res/values/strings.xml | 4 retrace/d3d10state.cpp | 110 retrace/d3d10state.hpp | 89 retrace/d3d10state_images.cpp | 373 retrace/d3d11state.cpp | 137 retrace/d3d11state.hpp | 47 retrace/d3d11state_images.cpp | 435 retrace/d3d7state.cpp | 62 retrace/d3d7state_images.cpp | 216 retrace/d3d8state.cpp | 53 retrace/d3d8state_images.cpp | 231 retrace/d3d9retrace.py | 74 retrace/d3d9state.cpp | 52 retrace/d3d9state.hpp | 57 retrace/d3d9state_formats.cpp | 259 retrace/d3d9state_images.cpp | 191 retrace/d3dretrace.hpp | 18 retrace/d3dretrace_dxgi.hpp | 210 retrace/d3dretrace_dxgi_priv.cpp | 283 retrace/d3dretrace_main.cpp | 3 retrace/d3dstate.hpp | 70 retrace/ddrawretrace.py | 136 retrace/dllretrace.py | 1 retrace/dxgiretrace.py | 303 retrace/dxgistate.cpp | 348 retrace/dxgistate.hpp | 11 retrace/dxgistate_so.hpp | 116 retrace/dxgistate_so.py | 275 retrace/glretrace.hpp | 21 retrace/glretrace.py | 405 retrace/glretrace_cgl.cpp | 165 retrace/glretrace_egl.cpp | 102 retrace/glretrace_glx.cpp | 87 retrace/glretrace_main.cpp | 308 retrace/glretrace_wgl.cpp | 201 retrace/glretrace_ws.cpp | 84 retrace/glstate.cpp | 417 retrace/glstate.hpp | 12 retrace/glstate_formats.cpp | 662 + retrace/glstate_images.cpp | 667 - retrace/glstate_internal.hpp | 150 retrace/glstate_params.py | 369 retrace/glstate_shaders.cpp | 730 - retrace/glws.cpp | 55 retrace/glws.hpp | 37 retrace/glws_cocoa.mm | 42 retrace/glws_egl_android.cpp | 723 + retrace/glws_egl_xlib.cpp | 408 retrace/glws_glx.cpp | 340 retrace/glws_waffle.cpp | 90 retrace/glws_wgl.cpp | 197 retrace/glws_xlib.cpp | 245 retrace/glws_xlib.hpp | 69 retrace/json.cpp | 39 retrace/json.hpp | 49 retrace/retrace.cpp | 42 retrace/retrace.hpp | 49 retrace/retrace.py | 109 retrace/retrace_main.cpp | 149 retrace/retrace_stdc.cpp | 30 retrace/retrace_swizzle.cpp | 87 retrace/retrace_swizzle.hpp | 15 retrace/scoped_allocator.hpp | 9 retrace/state_writer.cpp | 81 retrace/state_writer.hpp | 182 retrace/state_writer_json.cpp | 126 retrace/state_writer_ubjson.cpp | 220 scripts/convert.py | 161 scripts/highlight.py | 4 scripts/jsondiff.py | 20 scripts/jsonextractimages.py | 21 scripts/retracediff.py | 1 scripts/tracediff.py | 87 scripts/unpickle.py | 57 specs/cglapi.py | 49 specs/d2d1.py | 5 specs/d3d.py | 116 specs/d3d10.py | 158 specs/d3d10_1.py | 119 specs/d3d10misc.py | 55 specs/d3d10sdklayers.py | 11 specs/d3d11.py | 369 specs/d3d11_1.py | 177 specs/d3d11sdklayers.py | 8 specs/d3d11shader.py | 186 specs/d3d8.py | 16 specs/d3d8types.py | 2 specs/d3d9.py | 33 specs/d3d9types.py | 2 specs/d3dcommon.py | 1 specs/d3dtypes.py | 4 specs/ddraw.py | 567 specs/dxgi.py | 584 specs/dxgi1_2.py | 52 specs/dxgiformat.py | 132 specs/dxgitype.py | 115 specs/eglapi.py | 40 specs/eglenum.py | 166 specs/glapi.py | 4217 +++--- specs/glesapi.py | 261 specs/glparams.py | 373 specs/gltypes.py | 8 specs/glxapi.py | 488 specs/scripts/.gitignore | 6 specs/scripts/Makefile | 46 specs/scripts/README.markdown | 8 specs/scripts/c2api.py | 442 specs/scripts/cdecl.py | 442 specs/scripts/eglenum.sh | 3 specs/scripts/glspec.py | 293 specs/scripts/gltxt.py | 244 specs/scripts/sort.sh | 2 specs/scripts/spec2api.py | 293 specs/scripts/txt2api.py | 244 specs/scripts/wglenum.sh | 5 specs/scripts/xml2api.py | 197 specs/scripts/xml2enum.py | 65 specs/scripts/xml2glparams.py | 43 specs/stdapi.py | 28 specs/wglapi.py | 84 specs/wglenum.py | 13 specs/winapi.py | 50 thirdparty/khronos/EGL/egl.h | 562 thirdparty/khronos/EGL/eglext.h | 292 thirdparty/khronos/EGL/eglplatform.h | 4 thirdparty/khronos/GL/glext.h | 1035 + thirdparty/khronos/GL/glxext.h | 102 thirdparty/khronos/GL/wglext.h | 13 thirdparty/khronos/GLES2/gl2.h | 154 thirdparty/khronos/GLES2/gl2ext.h | 1334 ++ thirdparty/khronos/Makefile | 14 thirdparty/snappy/CMakeLists.txt | 11 thirdparty/snappy/COPYING | 26 thirdparty/snappy/ChangeLog | 699 + thirdparty/snappy/NEWS | 39 thirdparty/snappy/config.h | 68 thirdparty/snappy/framing_format.txt | 35 thirdparty/snappy/snappy-c.h | 2 thirdparty/snappy/snappy-internal.h | 4 thirdparty/snappy/snappy-stubs-internal.h | 84 thirdparty/snappy/snappy-stubs-public.h | 17 thirdparty/snappy/snappy-stubs-public.h.in | 13 thirdparty/snappy/snappy-test.cc | 50 thirdparty/snappy/snappy-test.h | 99 thirdparty/snappy/snappy.cc | 347 thirdparty/snappy/snappy.h | 47 thirdparty/snappy/snappy_unittest.cc | 270 wrappers/.gitignore | 1 wrappers/CMakeLists.txt | 268 wrappers/assert.cpp | 65 wrappers/cgltrace.py | 24 wrappers/config.cpp | 448 wrappers/config.hpp | 74 wrappers/d2d1.def | 10 wrappers/d2d1trace.def | 8 wrappers/d3d10.def | 31 wrappers/d3d10_1.def | 32 wrappers/d3d10stubs.cpp | 522 wrappers/d3d11.def | 44 wrappers/d3d11stubs.cpp | 121 wrappers/d3d8trace.py | 2 wrappers/d3d9shader.hpp | 4 wrappers/d3d9trace.py | 54 wrappers/d3dcommonshader.hpp | 4 wrappers/d3dkmtstubs.cpp | 713 - wrappers/ddraw.def | 2 wrappers/ddrawtrace.py | 34 wrappers/dlltrace.py | 3 wrappers/dlsym.cpp | 79 wrappers/dwrite.def | 4 wrappers/dwritetrace.cpp | 6 wrappers/dxgi.def | 47 wrappers/dxgistubs.cpp | 114 wrappers/dxgitrace.def | 16 wrappers/dxgitrace.py | 73 wrappers/egltrace.py | 53 wrappers/egltrace.version | 10 wrappers/glcaps.cpp | 117 wrappers/gltrace.hpp | 23 wrappers/gltrace.py | 474 wrappers/gltrace_state.cpp | 9 wrappers/glxtrace.py | 2 wrappers/glxtrace.version | 9 wrappers/trace.py | 264 wrappers/wgltrace.py | 29 409 files changed, 35670 insertions(+), 18514 deletions(-)
New commits: commit ae9701ce908ae264b22e0a559348f983e2e8a31f Author: Christopher James Halse Rogers <[email protected]> Date: Fri Jun 26 17:08:26 2015 +1000 Update build-dependencies diff --git a/debian/control b/debian/control index 90296f7..f71c835 100644 --- a/debian/control +++ b/debian/control @@ -9,15 +9,15 @@ Build-Depends: libegl1-mesa-dev, libgles1-mesa-dev, libgles2-mesa-dev, - libqt4-dev, - libqtwebkit-dev, - libqjson-dev, + qtbase5-dev, + libqt5webkit5-dev, pkg-config, python, zlib1g-dev, libsnappy-dev, libpng12-dev, libbsd-dev, + libprocps-dev, Standards-Version: 3.9.5 Homepage: https://apitrace.github.io Vcs-Git: git://git.debian.org/pkg-xorg/app/apitrace.git commit 62ad71c6b6f770cd4ecc96f3a842cbf63c8bdc6c Author: Seth Berrier <[email protected]> Date: Fri Jun 26 07:20:04 2015 +0100 glretrace: Don't force GPU durations to zero. Fixes #359. diff --git a/common/trace_profiler.cpp b/common/trace_profiler.cpp index b765340..65c91aa 100644 --- a/common/trace_profiler.cpp +++ b/common/trace_profiler.cpp @@ -116,7 +116,6 @@ void Profiler::addCall(unsigned no, gpuStart -= baseGpuTime; } else { gpuStart = 0; - gpuDuration = 0; } if (cpuTimes && cpuStart) { commit 24f814ce25d7d649db9298c4fe89bc77c496a728 Author: Christopher James Halse Rogers <[email protected]> Date: Fri Jun 26 15:14:06 2015 +1000 Finish moving qapitrace to apitrace-gui diff --git a/debian/apitrace.install b/debian/apitrace.install index d5d680f..2ef8ecd 100644 --- a/debian/apitrace.install +++ b/debian/apitrace.install @@ -1,8 +1,5 @@ usr/bin/apitrace usr/bin/eglretrace usr/bin/glretrace -usr/bin/qapitrace - -debian/qapitrace.desktop usr/share/applications usr/lib/apitrace commit 976566a1de14c905041c4a6e3ddf73b2b2c7d38e Author: Christopher James Halse Rogers <[email protected]> Date: Fri Jun 26 15:13:01 2015 +1000 Use system libsnappy for playback. Still use the bundled libsnappy for the tracers, as we need to build it statically to ensure the tracer doesn't have any symbol conflicts with whatever it is we're tracing. diff --git a/debian/patches/series b/debian/patches/series index 948c569..65cc1b9 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,3 +2,4 @@ #02_no_zlib_internals.patch use-system-libbacktrace use-system-md5 +use-system-snappy.patch diff --git a/debian/patches/use-system-snappy.patch b/debian/patches/use-system-snappy.patch new file mode 100644 index 0000000..6b0cda9 --- /dev/null +++ b/debian/patches/use-system-snappy.patch @@ -0,0 +1,84 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -383,11 +383,18 @@ + find_package (SNAPPY) + endif () + if (ENABLE_STATIC_SNAPPY OR NOT SNAPPY_FOUND) +- set (SNAPPY_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/snappy) +- set (SNAPPY_LIBRARIES snappy_bundled) ++ # We want to use the system snappy for the retracers, as they run on ++ # potentially-untrusted input, but we need static snappy for the ++ # LD_PRELOADed tracers to avoid symbol collisions in the tracee. ++ # ++ # Predictably, the system libsnappy.a is built without PIC, so ++ # useless for us. So do both: find the system libsnappy for the ++ # retracers and and build the bundled libsnappy for the tracers. ++ find_package (SNAPPY REQUIRED) ++ set (SNAPPY_STATIC_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/snappy) ++ set (SNAPPY_STATIC_LIBRARIES snappy_bundled) + add_subdirectory (thirdparty/snappy) + endif () +-include_directories (${SNAPPY_INCLUDE_DIRS}) + + if (NOT WIN32) + # zlib 1.2.4-1.2.5 made it impossible to read the last block of incomplete +--- a/wrappers/CMakeLists.txt ++++ b/wrappers/CMakeLists.txt +@@ -2,6 +2,8 @@ + # API tracers + + ++include_directories (${SNAPPY_STATIC_INCLUDE_DIRS}) ++ + if (ENABLE_STATIC_LIBGCC) + add_linker_flags (-static-libgcc -Wl,--exclude-libs,libgcc.a) + endif () +@@ -337,7 +339,7 @@ + glhelpers + glproc_gl + common +- ${SNAPPY_LIBRARIES} ++ ${SNAPPY_STATIC_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + dl + ) +@@ -398,7 +400,7 @@ + glhelpers + glproc_egl + common +- ${SNAPPY_LIBRARIES} ++ ${SNAPPY_STATIC_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + dl + ) +--- a/cli/CMakeLists.txt ++++ b/cli/CMakeLists.txt +@@ -14,6 +14,8 @@ + add_definitions (-DAPITRACE_PYTHON_EXECUTABLE="${PYTHON_EXECUTABLE}") + endif () + ++include_directories(${SNAPPY_INCLUDE_DIRS}) ++ + add_executable (apitrace + cli_main.cpp + cli_diff.cpp +--- a/gui/CMakeLists.txt ++++ b/gui/CMakeLists.txt +@@ -63,6 +63,7 @@ + #add_app_icon(qapitrace_SRCS ../icons/hi*-qapitrace.png) + include_directories( + ${CMAKE_SOURCE_DIR} # for image/* ++ ${SNAPPY_INCLUDE_DIRS} + ) + + add_executable (qapitrace ${qapitrace_SRCS} ${qapitrace_UIS_H}) +--- a/retrace/CMakeLists.txt ++++ b/retrace/CMakeLists.txt +@@ -8,6 +8,7 @@ + ${CMAKE_SOURCE_DIR}/dispatch + ${CMAKE_SOURCE_DIR}/image + ${CMAKE_SOURCE_DIR}/thirdparty/dxerr ++ ${SNAPPY_INCLUDE_DIRS} + ) + + add_definitions (-DRETRACE) commit 9a03338766259dd9db4f124abcfbd969c75f05d4 Author: Christopher James Halse Rogers <[email protected]> Date: Fri Jun 26 13:10:27 2015 +1000 Update patches for system libbacktrace and system md5 diff --git a/debian/patches/series b/debian/patches/series index 65c18c1..948c569 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,2 +1,4 @@ -01_use-system-qjson.diff -02_no_zlib_internals.patch +#01_use-system-qjson.diff +#02_no_zlib_internals.patch +use-system-libbacktrace +use-system-md5 diff --git a/debian/patches/use-system-libbacktrace b/debian/patches/use-system-libbacktrace new file mode 100644 index 0000000..291fc40 --- /dev/null +++ b/debian/patches/use-system-libbacktrace @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -428,8 +428,6 @@ + endif () + + if (CMAKE_EXECUTABLE_FORMAT STREQUAL "ELF") +- add_subdirectory (thirdparty/libbacktrace) +- include_directories (${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libbacktrace) + set (LIBBACKTRACE_LIBRARIES dl backtrace) + add_definitions (-DHAVE_BACKTRACE=1) + endif () diff --git a/debian/patches/use-system-md5 b/debian/patches/use-system-md5 new file mode 100644 index 0000000..2f6a2f5 --- /dev/null +++ b/debian/patches/use-system-md5 @@ -0,0 +1,24 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -432,9 +432,7 @@ + add_definitions (-DHAVE_BACKTRACE=1) + endif () + +-add_subdirectory (thirdparty/md5) +-set (MD5_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/md5) +-set (MD5_LIBRARIES md5_bundled) ++set (MD5_LIBRARIES bsd) + + # We use bundled headers for all Khronos APIs, to guarantee support for both + # OpenGL and OpenGL ES at build time, because the OpenGL and OpenGL ES 1 APIs +--- a/image/image_md5.cpp ++++ b/image/image_md5.cpp +@@ -28,7 +28,7 @@ + #include <fstream> + #include "image.hpp" + +-#include "md5.h" ++#include <bsd/md5.h> + + + using namespace std; commit 0a749b6475889d1f7db8da4385c77aadfe5b06d5 Author: Jose Fonseca <[email protected]> Date: Thu Jun 25 15:52:05 2015 +0100 glretrace: Workaround unusable GL_TIMESTAMP on Mac. Fixes #359. diff --git a/retrace/glretrace_main.cpp b/retrace/glretrace_main.cpp index b02864f..ddb647e 100755 --- a/retrace/glretrace_main.cpp +++ b/retrace/glretrace_main.cpp @@ -374,6 +374,12 @@ initContext() { supportsDebugOutput = currentContext->hasExtension("GL_ARB_debug_output"); supportsARBShaderObjects = currentContext->hasExtension("GL_ARB_shader_objects"); +#ifdef __APPLE__ + // GL_TIMESTAMP doesn't work on Apple. GL_TIME_ELAPSED still does however. + // http://lists.apple.com/archives/mac-opengl/2014/Nov/threads.html#00001 + supportsTimestamp = false; +#endif + /* Check for timer query support */ if (retrace::profilingGpuTimes) { if (!supportsTimestamp && !supportsElapsed) { commit 04036909c0b0ffe0f49b1127e9d3693b4431eca7 Author: Jose Fonseca <[email protected]> Date: Thu Jun 25 15:51:04 2015 +0100 specs: Add type info for GL_TIMESTAMP. diff --git a/specs/glparams.py b/specs/glparams.py index 4636083..ad48a83 100644 --- a/specs/glparams.py +++ b/specs/glparams.py @@ -2802,7 +2802,7 @@ parameters = [ ("glGet", I, 1, "GL_TRANSFORM_FEEDBACK_BINDING"), # 0x8E25 ("", X, 1, "GL_FRAME_NV"), # 0x8E26 ("", X, 1, "GL_FIELDS_NV"), # 0x8E27 - ("", X, 1, "GL_TIMESTAMP"), # 0x8E28 + ("_glGet", I64, 1, "GL_TIMESTAMP"), # 0x8E28 ("", X, 1, "GL_NUM_FILL_STREAMS_NV"), # 0x8E29 ("", X, 1, "GL_PRESENT_TIME_NV"), # 0x8E2A ("", X, 1, "GL_PRESENT_DURATION_NV"), # 0x8E2B commit 5cd0ac50972bc8be658bb5315ff191afccb65aea Author: Jose Fonseca <[email protected]> Date: Thu Jun 25 14:36:10 2015 +0100 glretrace: Improve GL_ARB_timer_query support detection. Was part of core in GL_ARB_timer_query. diff --git a/retrace/glretrace_main.cpp b/retrace/glretrace_main.cpp index 48c214a..b02864f 100755 --- a/retrace/glretrace_main.cpp +++ b/retrace/glretrace_main.cpp @@ -367,7 +367,8 @@ initContext() { } /* Ensure we have adequate extension support */ - supportsTimestamp = currentContext->hasExtension("GL_ARB_timer_query"); + supportsTimestamp = currentProfile.versionGreaterOrEqual(glprofile::API_GL, 3, 3) || + currentContext->hasExtension("GL_ARB_timer_query"); supportsElapsed = currentContext->hasExtension("GL_EXT_timer_query") || supportsTimestamp; supportsOcclusion = currentProfile.versionGreaterOrEqual(glprofile::API_GL, 1, 5); supportsDebugOutput = currentContext->hasExtension("GL_ARB_debug_output"); commit 1b685b0bb3a33b7b9eac254b4c4172903ef2eb38 Author: Jose Fonseca <[email protected]> Date: Wed Jun 17 21:57:41 2015 +0100 common: Use GetModuleHandle to detect WINE. Simpler and safer. diff --git a/common/highlight.cpp b/common/highlight.cpp index 6a1e783..334ba57 100644 --- a/common/highlight.cpp +++ b/common/highlight.cpp @@ -254,10 +254,9 @@ haveAnsi(void) } // http://wiki.winehq.org/DeveloperFaq#detect-wine - HMODULE hNtDll = LoadLibraryA("ntdll"); + HMODULE hNtDll = GetModuleHandleA("ntdll"); if (hNtDll) { result = GetProcAddress(hNtDll, "wine_get_version") != NULL; - FreeLibrary(hNtDll); } checked = true; commit 1d46c903de4562a9b24a602ac7b6d3ef281e28d6 Author: Jose Fonseca <[email protected]> Date: Tue Jun 16 15:51:53 2015 +0100 retrace: Remove duplicate "warning: " from warning message. diff --git a/retrace/retrace_swizzle.cpp b/retrace/retrace_swizzle.cpp index 1a3544f..ce89276 100644 --- a/retrace/retrace_swizzle.cpp +++ b/retrace/retrace_swizzle.cpp @@ -133,7 +133,7 @@ addRegion(trace::Call &call, unsigned long long address, void *buffer, unsigned regionMap.erase(start, stop); } else { for (RegionMap::iterator it = start; it != stop; ++it) { - warning(call) << "warning: " << std::hex << + warning(call) << std::hex << "region 0x" << address << "-0x" << (address + size) << " " "intersects existing region 0x" << it->first << "-0x" << (it->first + it->second.size) << "\n" << std::dec; assert(intersects(it, address, size)); commit 53ea8108dd795a58b3a147e56a92afd21dc145f1 Author: Jose Fonseca <[email protected]> Date: Thu Jun 25 14:28:09 2015 +0100 glretrace: Fix occlusion query support detection. GL_ARB_occlusion_query was made part of core OpenGL 1.5. Furthermore we don't use the *ARB entry-points, so we really rely on the core support. Futhermore, on Mac OS, core 3.2+ profiles do not list core extensions, so we were wrongly assuming it was missing. Fixes #358. diff --git a/helpers/glprofile.hpp b/helpers/glprofile.hpp index be2a111..397777d 100644 --- a/helpers/glprofile.hpp +++ b/helpers/glprofile.hpp @@ -84,6 +84,11 @@ struct Profile { (major == refMajor && minor >= refMinor); } + inline bool + versionGreaterOrEqual(Api refApi, unsigned refMajor, unsigned refMinor) const { + return api == refApi && versionGreaterOrEqual(refMajor, refMinor); + } + bool matches(const Profile expected) const; diff --git a/retrace/glretrace_main.cpp b/retrace/glretrace_main.cpp index 599ebed..48c214a 100755 --- a/retrace/glretrace_main.cpp +++ b/retrace/glretrace_main.cpp @@ -369,7 +369,7 @@ initContext() { /* Ensure we have adequate extension support */ supportsTimestamp = currentContext->hasExtension("GL_ARB_timer_query"); supportsElapsed = currentContext->hasExtension("GL_EXT_timer_query") || supportsTimestamp; - supportsOcclusion = currentContext->hasExtension("GL_ARB_occlusion_query"); + supportsOcclusion = currentProfile.versionGreaterOrEqual(glprofile::API_GL, 1, 5); supportsDebugOutput = currentContext->hasExtension("GL_ARB_debug_output"); supportsARBShaderObjects = currentContext->hasExtension("GL_ARB_shader_objects"); commit d1f3582d14a1a496c248262ed873de34ab47bb58 Author: Jose Fonseca <[email protected]> Date: Thu Jun 25 13:31:09 2015 +0100 glstate: Support more texture buffer formats. diff --git a/retrace/glstate_formats.cpp b/retrace/glstate_formats.cpp index b784b8c..b07bd68 100644 --- a/retrace/glstate_formats.cpp +++ b/retrace/glstate_formats.cpp @@ -29,6 +29,8 @@ #include <assert.h> #include <iostream> +#include <limits> +#include <type_traits> #include "glsize.hpp" #include "glstate.hpp" @@ -65,6 +67,7 @@ formatToString(GLenum internalFormat) { static const InternalFormatDesc internalFormatDescs[] = { + // GLenum internalFormat, GLenum format, GLenum type, GLenum readType // Unsized UNORM { 1, GL_RED, GL_NONE, GL_UNSIGNED_BYTE }, @@ -416,4 +419,244 @@ getImageFormat(GLenum format, GLenum type, } +// Macros for describing arbitrary swizzles + +#define SWIZZLE_X 0 +#define SWIZZLE_Y 1 +#define SWIZZLE_Z 2 +#define SWIZZLE_W 3 +#define SWIZZLE_0 4 +#define SWIZZLE_1 5 +#define SWIZZLE_COUNT 6 + +#define SWIZZLE_BITS 4 +#define SWIZZLE_MASK ((1 << SWIZZLE_BITS) - 1) + +#define SWIZZLE(x, y, z, w) \ + (((SWIZZLE_##x) << (SWIZZLE_BITS*0)) | \ + ((SWIZZLE_##y) << (SWIZZLE_BITS*1)) | \ + ((SWIZZLE_##z) << (SWIZZLE_BITS*2)) | \ + ((SWIZZLE_##w) << (SWIZZLE_BITS*3))) + +#define SWIZZLE_RGBA SWIZZLE(X,Y,Z,W) +#define SWIZZLE_RGB SWIZZLE(X,Y,Z,1) +#define SWIZZLE_RG SWIZZLE(X,Y,0,1) +#define SWIZZLE_R SWIZZLE(X,0,0,1) +#define SWIZZLE_LA SWIZZLE(X,X,X,Y) +#define SWIZZLE_L SWIZZLE(X,X,X,1) +#define SWIZZLE_A SWIZZLE(0,0,0,X) +#define SWIZZLE_I SWIZZLE(X,X,X,X) + +#define SWIZZLE_EXTRACT(swizzle, channel) \ + ((swizzle) >> (SWIZZLE_BITS * (channel)) & SWIZZLE_MASK) + + +// Template that can describe all regular array-based pixel formats +template< typename Type, unsigned components, bool normalized, uint16_t swizzle > +class PixelTemplate : public PixelFormat +{ +protected: + + static_assert( 1 <= components && components <= 4, "invalid number of components" ); + + static const unsigned swizzle_r = SWIZZLE_EXTRACT(swizzle, 0); + static const unsigned swizzle_g = SWIZZLE_EXTRACT(swizzle, 1); + static const unsigned swizzle_b = SWIZZLE_EXTRACT(swizzle, 2); + static const unsigned swizzle_a = SWIZZLE_EXTRACT(swizzle, 3); + + static_assert( swizzle_r < components || swizzle_r == SWIZZLE_0 || swizzle_r == SWIZZLE_1, "invalid R swizzle" ); + static_assert( swizzle_g < components || swizzle_g == SWIZZLE_0 || swizzle_g == SWIZZLE_1, "invalid G swizzle" ); + static_assert( swizzle_b < components || swizzle_b == SWIZZLE_0 || swizzle_b == SWIZZLE_1, "invalid B swizzle" ); + static_assert( swizzle_a < components || swizzle_a == SWIZZLE_0 || swizzle_a == SWIZZLE_1, "invalid A swizzle" ); + + // We must use double precision intermediate values when normalizing 32bits integers. + typedef typename std::conditional< normalized && sizeof(Type) >= 4 , double , float >::type Scale; + + // Scale normalized types + template<typename T = void> + static inline Scale + scale(Scale value, typename std::enable_if<normalized, T>::type* = 0) + { + static_assert( normalized, "should only be instantiated for normalized types" ); +#ifndef _MSC_VER + static constexpr Type typeMax = std::numeric_limits<Type>::max(); + static_assert( static_cast<Type>(static_cast<Scale>(typeMax)) == typeMax, + "intermediate type cannot represent maximum value without loss of precission" ); + static constexpr Scale scaleFactor = Scale(1) / Scale(typeMax); + static_assert( Scale(typeMax) * scaleFactor == Scale(1), "cannot represent unity" ); + static_assert( Scale(0) * scaleFactor == Scale(0), "cannot represent zero" ); +#else + // XXX: MSCV doesn't support constexpr yet + static const Type typeMax = std::numeric_limits<Type>::max(); + assert( static_cast<Type>(static_cast<Scale>(typeMax)) == typeMax ); + static const Scale scaleFactor = Scale(1) / Scale(typeMax); + assert( Scale(typeMax) * scaleFactor == Scale(1) ); + assert( Scale(0) * scaleFactor == Scale(0) ); +#endif + return value * scaleFactor; + } + + // No-op for unormalized types + template<typename T = void> + static inline Scale + scale(Scale value, typename std::enable_if<!normalized, T>::type* = 0) + { + static_assert( !normalized, "should only be instantiated for non-normalized types" ); + return value; + } + + // Unpack a single pixel + static inline void + unpackPixel(const Type *inPixel, float outPixel[4]) + { + float scaledComponents[SWIZZLE_COUNT]; + for (unsigned component = 0; component < components; ++component) { + Scale scaledComponent = scale(static_cast<Scale>(inPixel[component])); + scaledComponents[component] = static_cast<float>(scaledComponent); + } + scaledComponents[SWIZZLE_0] = 0.0f; + scaledComponents[SWIZZLE_1] = 1.0f; + + outPixel[0] = scaledComponents[swizzle_r]; + outPixel[1] = scaledComponents[swizzle_g]; + outPixel[2] = scaledComponents[swizzle_b]; + outPixel[3] = scaledComponents[swizzle_a]; + } + +public: + + inline + PixelTemplate(void) { + } + + size_t + size(void) const { + return sizeof(Type) * components; + } + + void + unpackSpan(const uint8_t *inSpan, float *outSpan, unsigned width) const + { + const Type *inPixel = reinterpret_cast<const Type *>(inSpan); + + for (unsigned x = 0; x < width; ++x) { + unpackPixel(inPixel, outSpan); + inPixel += components; + outSpan += 4; + } + } +}; + + +const PixelFormat * +getPixelFormat(GLenum internalFormat) +{ + static const bool Y = true; + static const bool N = false; + +#define CASE(internalFormat, type, components, norm, swizzle) \ + case GL_##internalFormat: \ + { \ + static const PixelTemplate< GL##type, components, norm, SWIZZLE_##swizzle > pixel; \ + return &pixel; \ + } + + switch (internalFormat) { + + CASE(ALPHA8, ubyte, 1, Y, A); + CASE(ALPHA16, ushort, 1, Y, A); + CASE(ALPHA16F_ARB, half, 1, N, A); + CASE(ALPHA32F_ARB, float, 1, N, A); + CASE(ALPHA8I_EXT, byte, 1, N, A); + CASE(ALPHA16I_EXT, short, 1, N, A); + CASE(ALPHA32I_EXT, int, 1, N, A); + CASE(ALPHA8UI_EXT, ubyte, 1, N, A); + CASE(ALPHA16UI_EXT, ushort, 1, N, A); -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: https://lists.debian.org/[email protected]

