From 58050e89ef42dbf63cc18f10a1e1be7c5bead4be Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 28 Apr 2017 16:48:44 +0100 Subject: [PATCH] Remove hardcoded version numbers from vulkan layer json, set in build * In CMake this is easy as we're already passing it through sed, but in msbuild it's a little more complex as we need to write a little in-line C# code to read out the version number and replace the * We also update the JSON generation for layer registration on linux. --- renderdoc/driver/vulkan/CMakeLists.txt | 2 +- renderdoc/driver/vulkan/renderdoc.json | 4 +- .../driver/vulkan/renderdoc_vulkan.vcxproj | 40 ++++++++++++++++--- renderdoc/driver/vulkan/vk_linux.cpp | 27 ++++++++++++- 4 files changed, 63 insertions(+), 10 deletions(-) diff --git a/renderdoc/driver/vulkan/CMakeLists.txt b/renderdoc/driver/vulkan/CMakeLists.txt index 6fa7a2875..9ddd2ba7d 100644 --- a/renderdoc/driver/vulkan/CMakeLists.txt +++ b/renderdoc/driver/vulkan/CMakeLists.txt @@ -65,7 +65,7 @@ elseif(UNIX) set(json_in ${CMAKE_CURRENT_SOURCE_DIR}/renderdoc.json) set(json_out ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/renderdoc_capture.json) add_custom_command(OUTPUT ${json_out} - COMMAND sed '{s%...renderdoc.dll%${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/librenderdoc.so%}' < ${json_in} > ${json_out} + COMMAND sed '{s%\\[MAJOR\\]%${RENDERDOC_VERSION_MAJOR}%\; s%\\[MINOR\\]%${RENDERDOC_VERSION_MINOR}%\; s%...renderdoc.dll%${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/librenderdoc.so%}' < ${json_in} > ${json_out} DEPENDS ${json_in}) add_custom_target(generate-json ALL DEPENDS ${json_out}) diff --git a/renderdoc/driver/vulkan/renderdoc.json b/renderdoc/driver/vulkan/renderdoc.json index 2cf2668ea..fd1acfdf9 100644 --- a/renderdoc/driver/vulkan/renderdoc.json +++ b/renderdoc/driver/vulkan/renderdoc.json @@ -5,7 +5,7 @@ "type": "GLOBAL", "library_path": ".\\renderdoc.dll", "api_version": "1.0.0", - "implementation_version": "34", + "implementation_version": "[MINOR]", "description": "Debugging capture layer for RenderDoc", "functions": { "vkGetInstanceProcAddr": "VK_LAYER_RENDERDOC_CaptureGetInstanceProcAddr", @@ -28,7 +28,7 @@ "ENABLE_VULKAN_RENDERDOC_CAPTURE": "1" }, "disable_environment": { - "DISABLE_VULKAN_RENDERDOC_CAPTURE_0_34": "1" + "DISABLE_VULKAN_RENDERDOC_CAPTURE_[MAJOR]_[MINOR]": "1" } } } diff --git a/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj b/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj index 9ac8c0346..b37e5a172 100644 --- a/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj +++ b/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj @@ -162,12 +162,40 @@ - - - renderdoc.json - PreserveNewest - - + + + + $([System.IO.File]::ReadAllText('$(SolutionDir)renderdoc/api/replay/version.h').Trim()) + + + + + + $(VersionFile.IndexOf('#define RENDERDOC_VERSION_MAJOR')) + + + $(VersionFile.Substring($(MajorVersionStart)).Split(' +')[0].Split(' ')[2]) + + $(VersionFile.IndexOf('#define RENDERDOC_VERSION_MINOR')) + $(VersionFile.Substring($(MinorVersionStart)).Split(' +')[0].Split(' ')[2]) + + + + + + + $([System.IO.File]::ReadAllText('$(ProjectDir)renderdoc.json').Replace('[MAJOR]', '$(MajorVersion)').Replace('[MINOR]', '$(MinorVersion)')) + + + + + {0aae0ad1-371b-4a36-9ed1-80e10e960605} diff --git a/renderdoc/driver/vulkan/vk_linux.cpp b/renderdoc/driver/vulkan/vk_linux.cpp index fc986d508..edaefe3f7 100644 --- a/renderdoc/driver/vulkan/vk_linux.cpp +++ b/renderdoc/driver/vulkan/vk_linux.cpp @@ -23,6 +23,7 @@ ******************************************************************************/ #include "api/replay/renderdoc_replay.h" +#include "api/replay/version.h" #include "serialise/string_utils.h" #include @@ -157,7 +158,31 @@ static std::string GenerateJSON(const std::string &sopath) size_t idx = json.find(dllPathString); - return json.substr(0, idx) + sopath + json.substr(idx + sizeof(dllPathString) - 1); + json = json.substr(0, idx) + sopath + json.substr(idx + sizeof(dllPathString) - 1); + + const char majorString[] = "[MAJOR]"; + + idx = json.find(majorString); + while(idx != string::npos) + { + json = json.substr(0, idx) + STRINGIZE(RENDERDOC_VERSION_MAJOR) + + json.substr(idx + sizeof(majorString) - 1); + + idx = json.find(majorString); + } + + const char minorString[] = "[MINOR]"; + + idx = json.find(minorString); + while(idx != string::npos) + { + json = json.substr(0, idx) + STRINGIZE(RENDERDOC_VERSION_MINOR) + + json.substr(idx + sizeof(minorString) - 1); + + idx = json.find(minorString); + } + + return json; } static bool FileExists(const std::string &path)