apitrace: Changes to 'master'
.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 <raof@ubuntu.com>
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 <berriers@uwstout.edu>
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 <raof@ubuntu.com>
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 <raof@ubuntu.com>
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 <raof@ubuntu.com>
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 <jfonseca@vmware.com>
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 <jfonseca@vmware.com>
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 <jfonseca@vmware.com>
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 <jfonseca@vmware.com>
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 <jfonseca@vmware.com>
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 <jfonseca@vmware.com>
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 <jfonseca@vmware.com>
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);
Reply to: