diff --git a/qrenderdoc/CMakeLists.txt b/qrenderdoc/CMakeLists.txt index bbd69cd13..ea94bd756 100644 --- a/qrenderdoc/CMakeLists.txt +++ b/qrenderdoc/CMakeLists.txt @@ -1,11 +1,14 @@ set(output_dir ${CMAKE_BINARY_DIR}/bin) +get_git_hash(GIT_COMMIT_HASH) +string(STRIP ${GIT_COMMIT_HASH} GIT_COMMIT_HASH) + # The case here is deliberately not matching the executable name # This means the custom command doesn't create this output file, # which causes CMake to rerun this target every time so that Qt # can do dependency checking and rebuild anything necessary. add_custom_command(OUTPUT QRenderDoc - COMMAND qmake "CONFIG+=debug" "DESTDIR=${output_dir}" ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND qmake "CONFIG+=debug" "DEFINES+=GIT_COMMIT_HASH_LITERAL=${GIT_COMMIT_HASH}" "DESTDIR=${output_dir}" ${CMAKE_CURRENT_SOURCE_DIR} COMMAND MAKEFLAGS= make --no-print-directory) add_custom_target(build-qrenderdoc ALL DEPENDS QRenderDoc) diff --git a/qrenderdoc/Resources/qrenderdoc.rc b/qrenderdoc/Resources/qrenderdoc.rc index d7f0af3b1..5edcc02e1 100644 --- a/qrenderdoc/Resources/qrenderdoc.rc +++ b/qrenderdoc/Resources/qrenderdoc.rc @@ -90,7 +90,7 @@ BEGIN VALUE "LegalCopyright", "Copyright © 2016 Baldur Karlsson" VALUE "OriginalFilename", "qrenderdoc.exe" VALUE "ProductName", "RenderDoc" - VALUE "ProductVersion", RENDERDOC_VERSION_STRING ".0.0" + VALUE "ProductVersion", RENDERDOC_VERSION_STRING "-" GIT_COMMIT_HASH END END BLOCK "VarFileInfo" diff --git a/qrenderdoc/Resources/resource.h b/qrenderdoc/Resources/resource.h index f1c0c4bb4..57b9fef58 100644 --- a/qrenderdoc/Resources/resource.h +++ b/qrenderdoc/Resources/resource.h @@ -2,11 +2,13 @@ // Microsoft Visual C++ generated include file. // Used by qrenderdoc.rc // -#define STR(a) #a +#include "version.h" -#define RENDERDOC_VERSION_MAJOR 0 -#define RENDERDOC_VERSION_MINOR 32 -#define RENDERDOC_VERSION_STRING STR(RENDERDOC_VERSION_MAJOR) "." STR(RENDERDOC_VERSION_MINOR) +#ifdef GIT_COMMIT_HASH_LITERAL +#define GIT_COMMIT_HASH VER_STR(GIT_COMMIT_HASH_LITERAL) +#else +#define GIT_COMMIT_HASH "NO_GIT_COMMIT_HASH_DEFINED" +#endif // Next default values for new objects // diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index e2a924ae8..43eea8370 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -29,15 +29,31 @@ #include #include "Code/CaptureContext.h" #include "Code/QRDUtils.h" +#include "Resources/resource.h" #include "Windows/Dialogs/AboutDialog.h" #include "Windows/Dialogs/CaptureDialog.h" #include "EventBrowser.h" #include "TextureViewer.h" #include "ui_MainWindow.h" +#include "version.h" #define JSON_ID "rdocLayoutData" #define JSON_VER 1 +struct Version +{ + static bool isOfficialVersion() { return QString(GIT_COMMIT_HASH).indexOf("-official") > 0; } + static bool isBetaVersion() { return QString(GIT_COMMIT_HASH).indexOf("-beta") > 0; } + static QString bareString() { return RENDERDOC_VERSION_STRING; } + static QString string() { return "v" RENDERDOC_VERSION_STRING; } + static QString gitCommitHash() + { + return QString(GIT_COMMIT_HASH).replace("-official", "").replace("-beta", ""); + } + + static bool isMismatched() { return RENDERDOC_GetVersionString() != bareString(); } +}; + MainWindow::MainWindow(CaptureContext *ctx) : QMainWindow(NULL), ui(new Ui::MainWindow), m_Ctx(ctx) { ui->setupUi(this); @@ -605,19 +621,15 @@ void MainWindow::SetTitle(const QString &filename) QString text = prefix + "RenderDoc "; - // TODO Versioning - /* - if(OfficialVersion) - text += VersionString; - else if(BetaVersion) - text += String.Format("{0}-beta - {1}", VersionString, GitCommitHash); - else */ - text += - tr("Unofficial release (%1 - %2)").arg(RENDERDOC_GetVersionString()).arg(RENDERDOC_GetCommitHash()); + if(Version::isOfficialVersion()) + text += Version::string(); + else if(Version::isBetaVersion()) + text += tr("%1-beta - %2").arg(Version::string()).arg(Version::gitCommitHash()); + else + text += tr("Unofficial release (%1 - %2)").arg(Version::string()).arg(Version::gitCommitHash()); - // TODO Versioning - // if(IsVersionMismatched()) - // text += " - !! VERSION MISMATCH DETECTED !!"; + if(Version::isMismatched()) + text += " - !! VERSION MISMATCH DETECTED !!"; setWindowTitle(text); } diff --git a/qrenderdoc/qrenderdoc.pro b/qrenderdoc/qrenderdoc.pro index 91e4db609..474a4f161 100644 --- a/qrenderdoc/qrenderdoc.pro +++ b/qrenderdoc/qrenderdoc.pro @@ -25,6 +25,7 @@ INCLUDEPATH += $$_PRO_FILE_PWD_/3rdparty/flowlayout # Different output folders per platform win32 { + RC_INCLUDEPATH = $$_PRO_FILE_PWD_/../renderdoc/api/replay RC_FILE = Resources/qrenderdoc.rc # it is fine to alias these across targets, because the output diff --git a/qrenderdoc/qrenderdoc_local.vcxproj b/qrenderdoc/qrenderdoc_local.vcxproj index ededc7511..b9bb706ef 100644 --- a/qrenderdoc/qrenderdoc_local.vcxproj +++ b/qrenderdoc/qrenderdoc_local.vcxproj @@ -144,6 +144,7 @@ _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + $(SolutionDir)\renderdoc\api\replay @@ -189,6 +190,7 @@ _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;%(PreprocessorDefinitions) + $(SolutionDir)\renderdoc\api\replay @@ -231,6 +233,7 @@ _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) + $(SolutionDir)\renderdoc\api\replay @@ -273,6 +276,7 @@ _WINDOWS;UNICODE;WIN32;WIN64;RENDERDOC_PLATFORM_WIN32;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions) + $(SolutionDir)\renderdoc\api\replay diff --git a/renderdoc/CMakeLists.txt b/renderdoc/CMakeLists.txt index 68a8d2cff..4e499298a 100644 --- a/renderdoc/CMakeLists.txt +++ b/renderdoc/CMakeLists.txt @@ -71,6 +71,7 @@ set(sources api/replay/replay_enums.h api/replay/shader_types.h api/replay/vk_pipestate.h + api/replay/version.h common/common.cpp common/common.h common/custom_assert.h @@ -98,7 +99,6 @@ set(sources data/glsl/gl_texsample.h data/glsl_shaders.cpp data/glsl_shaders.h - data/version.h hooks/hooks.cpp hooks/hooks.h maths/camera.cpp diff --git a/renderdoc/data/version.h b/renderdoc/api/replay/version.h similarity index 91% rename from renderdoc/data/version.h rename to renderdoc/api/replay/version.h index 69eaf8604..7b790071b 100644 --- a/renderdoc/data/version.h +++ b/renderdoc/api/replay/version.h @@ -24,7 +24,10 @@ #pragma once +#define VER_STR2(a) #a +#define VER_STR(a) VER_STR2(a) + #define RENDERDOC_VERSION_MAJOR 0 #define RENDERDOC_VERSION_MINOR 32 #define RENDERDOC_VERSION_STRING \ - STRINGIZE(RENDERDOC_VERSION_MAJOR) "." STRINGIZE(RENDERDOC_VERSION_MINOR) + VER_STR(RENDERDOC_VERSION_MAJOR) "." VER_STR(RENDERDOC_VERSION_MINOR) diff --git a/renderdoc/core/core.cpp b/renderdoc/core/core.cpp index 540436fbd..dce7db3cc 100644 --- a/renderdoc/core/core.cpp +++ b/renderdoc/core/core.cpp @@ -26,9 +26,9 @@ #include "core/core.h" #include #include +#include "api/replay/version.h" #include "common/common.h" #include "common/dds_readwrite.h" -#include "data/version.h" #include "hooks/hooks.h" #include "replay/replay_driver.h" #include "serialise/serialiser.h" diff --git a/renderdoc/data/renderdoc.rc b/renderdoc/data/renderdoc.rc index eb8794189..7062830f0 100644 --- a/renderdoc/data/renderdoc.rc +++ b/renderdoc/data/renderdoc.rc @@ -90,7 +90,7 @@ BEGIN VALUE "LegalCopyright", "Copyright © 2016 Baldur Karlsson" VALUE "OriginalFilename", "renderdoc.dll" VALUE "ProductName", "RenderDoc" - VALUE "ProductVersion", RENDERDOC_VERSION_STRING ".0.0" + VALUE "ProductVersion", RENDERDOC_VERSION_STRING "-" GIT_COMMIT_HASH END END BLOCK "VarFileInfo" diff --git a/renderdoc/data/resource.h b/renderdoc/data/resource.h index e673e4047..bb62b6154 100644 --- a/renderdoc/data/resource.h +++ b/renderdoc/data/resource.h @@ -40,11 +40,6 @@ #define RESOURCE_glsl_deptharr2ms_frag 426 #define RESOURCE_glsl_depthms2arr_frag 427 -#if !defined(STRINGIZE) -#define STRINGIZE2(a) #a -#define STRINGIZE(a) STRINGIZE2(a) -#endif - #define GIT_COMMIT_HASH "NO_GIT_COMMIT_HASH_DEFINED" //#define RENDERDOC_OFFICIAL_BUILD // used to determine whether to submit auto crash reports @@ -59,4 +54,4 @@ #endif #endif -#include "version.h" +#include "api/replay/version.h" diff --git a/renderdoc/driver/vulkan/vk_tracelayer.cpp b/renderdoc/driver/vulkan/vk_tracelayer.cpp index 878323b60..52e3ff8ad 100644 --- a/renderdoc/driver/vulkan/vk_tracelayer.cpp +++ b/renderdoc/driver/vulkan/vk_tracelayer.cpp @@ -24,9 +24,9 @@ #include #include +#include "api/replay/version.h" #include "common/common.h" #include "common/threading.h" -#include "data/version.h" #include "hooks/hooks.h" #include "official/vk_layer.h" #include "os/os_specific.h" diff --git a/renderdoc/renderdoc.vcxproj b/renderdoc/renderdoc.vcxproj index 6d73abb5b..2e0fe38f6 100644 --- a/renderdoc/renderdoc.vcxproj +++ b/renderdoc/renderdoc.vcxproj @@ -240,6 +240,7 @@ + @@ -261,7 +262,6 @@ - diff --git a/renderdoc/renderdoc.vcxproj.filters b/renderdoc/renderdoc.vcxproj.filters index b50265f26..0749eff5b 100644 --- a/renderdoc/renderdoc.vcxproj.filters +++ b/renderdoc/renderdoc.vcxproj.filters @@ -159,9 +159,6 @@ OS\Win32 - - Resources - API\Replay @@ -261,6 +258,9 @@ 3rdparty\stb + + API\Replay + diff --git a/renderdoc/replay/entry_points.cpp b/renderdoc/replay/entry_points.cpp index 4749fa8fa..ae55164dc 100644 --- a/renderdoc/replay/entry_points.cpp +++ b/renderdoc/replay/entry_points.cpp @@ -25,9 +25,9 @@ #include #include "api/replay/renderdoc_replay.h" +#include "api/replay/version.h" #include "common/common.h" #include "core/core.h" -#include "data/version.h" #include "jpeg-compressor/jpgd.h" #include "jpeg-compressor/jpge.h" #include "maths/camera.h" diff --git a/renderdoccmd/renderdoccmd.rc b/renderdoccmd/renderdoccmd.rc index 81e95486c..490ae3b99 100644 Binary files a/renderdoccmd/renderdoccmd.rc and b/renderdoccmd/renderdoccmd.rc differ diff --git a/renderdoccmd/renderdoccmd.vcxproj b/renderdoccmd/renderdoccmd.vcxproj index 2fdc87d0e..33a016a37 100644 --- a/renderdoccmd/renderdoccmd.vcxproj +++ b/renderdoccmd/renderdoccmd.vcxproj @@ -93,7 +93,7 @@ Level3 Disabled WIN32;_CRT_SECURE_NO_WARNINGS;RENDERDOC_PLATFORM_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\3rdparty\ + $(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\api\replay;$(SolutionDir)renderdoc\3rdparty\ MultiThreadedDLL true @@ -102,6 +102,9 @@ true psapi.lib;ws2_32.lib;Wininet.lib;%(AdditionalDependencies) + + $(SolutionDir)renderdoc\api\replay + @@ -110,7 +113,7 @@ Level3 Disabled WIN32;_CRT_SECURE_NO_WARNINGS;WIN64;RENDERDOC_PLATFORM_WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - $(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\3rdparty\ + $(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\api\replay;$(SolutionDir)renderdoc\3rdparty\ MultiThreadedDLL true @@ -119,6 +122,9 @@ true psapi.lib;ws2_32.lib;Wininet.lib;%(AdditionalDependencies) + + $(SolutionDir)renderdoc\api\replay + @@ -129,7 +135,7 @@ true true WIN32;_CRT_SECURE_NO_WARNINGS;RENDERDOC_PLATFORM_WIN32;NDEBUG;RELEASE;_CONSOLE;%(PreprocessorDefinitions) - $(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\3rdparty\ + $(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\api\replay;$(SolutionDir)renderdoc\3rdparty\ true @@ -139,6 +145,9 @@ true $(SolutionDir)\renderdoc\3rdparty\breakpad\$(Platform)\$(Configuration)\breakpad_common.lib;$(SolutionDir)\renderdoc\3rdparty\breakpad\$(Platform)\$(Configuration)\crash_generation_server.lib;psapi.lib;ws2_32.lib;Wininet.lib;%(AdditionalDependencies) + + $(SolutionDir)renderdoc\api\replay + @@ -149,7 +158,7 @@ true true WIN32;_CRT_SECURE_NO_WARNINGS;WIN64;RENDERDOC_PLATFORM_WIN32;NDEBUG;RELEASE;_CONSOLE;%(PreprocessorDefinitions) - $(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\3rdparty\ + $(SolutionDir)renderdocshim\;$(SolutionDir)renderdoc\api\;$(SolutionDir)renderdoc\api\replay;$(SolutionDir)renderdoc\3rdparty\ true @@ -159,6 +168,9 @@ true $(SolutionDir)\renderdoc\3rdparty\breakpad\$(Platform)\$(Configuration)\breakpad_common.lib;$(SolutionDir)\renderdoc\3rdparty\breakpad\$(Platform)\$(Configuration)\crash_generation_server.lib;psapi.lib;ws2_32.lib;Wininet.lib;%(AdditionalDependencies) + + $(SolutionDir)renderdoc\api\replay + @@ -200,4 +212,4 @@ - + \ No newline at end of file diff --git a/renderdoccmd/resource.h b/renderdoccmd/resource.h index b03efd5ef..da468673e 100644 Binary files a/renderdoccmd/resource.h and b/renderdoccmd/resource.h differ diff --git a/scripts/dist.sh b/scripts/dist.sh index b0dce1b9f..ed1dfa218 100644 --- a/scripts/dist.sh +++ b/scripts/dist.sh @@ -103,7 +103,7 @@ if [[ $AUTOBUILD -eq 0 ]]; then read; fi -VERSION=`grep -E "#define RENDERDOC_VERSION_(MAJOR|MINOR)" renderdoc/data/version.h | tr -dc '[0-9\n]' | tr '\n' '.' | grep -Eo '[0-9]+\.[0-9]+'` +VERSION=`grep -E "#define RENDERDOC_VERSION_(MAJOR|MINOR)" renderdoc/api/replay/version.h | tr -dc '[0-9\n]' | tr '\n' '.' | grep -Eo '[0-9]+\.[0-9]+'` export RENDERDOC_VERSION="${VERSION}.0" diff --git a/scripts/hash_version.sh b/scripts/hash_version.sh index 10b90f27b..9b686d035 100644 --- a/scripts/hash_version.sh +++ b/scripts/hash_version.sh @@ -10,5 +10,7 @@ GIT_HASH=`git status > /dev/null 2>&1 && git rev-parse HEAD || echo NO_GIT_COMMI rm -f ver sed -b "s/NO_GIT_COMMIT_HASH_DEFINED/$GIT_HASH$1/" renderdoc/data/resource.h > ver && mv ver renderdoc/data/resource.h +sed -b "s/NO_GIT_COMMIT_HASH_DEFINED/$GIT_HASH$1/" qrenderdoc/Resources/resource.h > ver && mv ver qrenderdoc/Resources/resource.h +sed -b "s/NO_GIT_COMMIT_HASH_DEFINED/$GIT_HASH$1/" renderdoccmd/resource.h > ver && mv ver renderdoccmd/resource.h sed -b "s/NO_GIT_COMMIT_HASH_DEFINED/$GIT_HASH$1/" renderdocui/Properties/AssemblyInfo.cs > ver && mv ver renderdocui/Properties/AssemblyInfo.cs rm -f ver