Skip to content

Commit

Permalink
v1.6.1
Browse files Browse the repository at this point in the history
  • Loading branch information
aurolou authored and rys committed Dec 17, 2020
1 parent 5bfc21b commit 8b2446d
Show file tree
Hide file tree
Showing 55 changed files with 621 additions and 6,546 deletions.
43 changes: 43 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
variables:
PLATFORM_TOOLSET: v141
OCAT_VERSION: 1.6.1

stages:
- build
- package

build_ocat:
before_script:
- 'nuget restore'
tags:
- windows
- amd64
stage: build
script:
- 'if exist .\OCAT-Installer\redist ( echo redist directory exists ) else ( mkdir .\OCAT-Installer\redist )'
- 'copy "%VS2019REDISTS%\vc_redist.x64.exe" .\OCAT-Installer\redist\vc_redist.x64.exe'
- 'copy "%VS2019REDISTS%\vc_redist.x64.exe" .\OCAT-Installer\redist\vc_redist.x86.exe'
- 'echo [assembly: AssemblyVersion("%OCAT_VERSION%.%CI_JOB_ID%")] >> Frontend\Properties\AssemblyInfo.cs'
- 'echo [assembly: AssemblyFileVersion("%OCAT_VERSION%.%CI_JOB_ID%")] >> Frontend\Properties\AssemblyInfo.cs'
- 'msbuild OCAT.sln /t:Build /p:Configuration=Release;Platform=x64 /p:PlatformToolset=%PLATFORM_TOOLSET% /verbosity:minimal'
- 'msbuild OCAT.sln /t:Installer /p:Configuration=Release;Platform=x64 /verbosity:minimal'
- 'msbuild OCAT.sln /t:Install-Bundle /p:Configuration=Release;Platform=x64 /verbosity:minimal'
artifacts:
name: "OCAT-Installer"
paths:
- "OCAT-Installer/bin/x64/Release/OCAT.exe"

package_ocat:
tags:
- windows
- amd64
stage: package
dependencies:
- build_ocat
script:
- echo "Packaging build %CI_COMMIT_REF_NAME%-%CI_COMMIT_SHORT_SHA%"
- 'copy .\OCAT-Installer\bin\x64\Release\OCAT.exe OCAT-%CI_COMMIT_REF_NAME%-%CI_COMMIT_SHORT_SHA%.exe'
artifacts:
name: "OCAT-%CI_COMMIT_REF_NAME%-%CI_COMMIT_SHORT_SHA%"
paths:
- "OCAT-%CI_COMMIT_REF_NAME%-%CI_COMMIT_SHORT_SHA%.exe"
2 changes: 1 addition & 1 deletion Commons/Commons.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{62089454-A7BA-4416-9E4B-EB0085797582}</ProjectGuid>
<RootNamespace>Commons</RootNamespace>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
Expand Down
2 changes: 1 addition & 1 deletion DLLInjector/DLLInjector.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<ProjectGuid>{2CB4EFA8-1B5D-4BF8-AE28-8F42B99A740E}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>DLLInjector</RootNamespace>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
Expand Down
2 changes: 0 additions & 2 deletions Frontend/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,3 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.*")]
[assembly: AssemblyFileVersion("1.0.0.0")]
2 changes: 1 addition & 1 deletion GameOverlay/d3d/gameoverlay.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{73D3DECB-E915-4759-ABD0-FDAC8104B1CB}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
Expand Down
4 changes: 2 additions & 2 deletions GameOverlay/d3d/source/d3d/d3d12_renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ bool d3d12_renderer::CreateRootSignature()
}

CD3DX12_DESCRIPTOR_RANGE1 range[1];
range[0].Init(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 2, 0, 0,
range[0].Init(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1, 0, 0,
D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE);

CD3DX12_ROOT_PARAMETER1 rootParam[2];
Expand Down Expand Up @@ -440,7 +440,7 @@ bool d3d12_renderer::CreateOverlayTextures()

// create srv
D3D12_DESCRIPTOR_HEAP_DESC srvHeapDesc = {};
srvHeapDesc.NumDescriptors = 2;
srvHeapDesc.NumDescriptors = 1;
srvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
srvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
hr = device_->CreateDescriptorHeap(&srvHeapDesc, IID_PPV_ARGS(&displayHeap_));
Expand Down
22 changes: 12 additions & 10 deletions GameOverlay/d3d/source/d3d/dxgi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ void hook_factory_object(T **factoryTarget)

template <typename T>
void hook_swapchain_object(IUnknown *device, T **swapchainTarget)
{
{
g_messageLog.LogInfo("dxgi", "hook_swapchain_object");
T *const swapchain = *swapchainTarget;

Expand All @@ -90,12 +90,11 @@ void hook_swapchain_object(IUnknown *device, T **swapchainTarget)
}

// compositors
// TODO: check if we actually need a compositor -> has any of the compositor dlls been loaded?
g_OculusD3D.reset(new CompositorOverlay::Oculus_D3D());
g_OculusD3D->SetDevice(device);
g_SteamVRD3D.reset(new CompositorOverlay::SteamVR_D3D());
g_SteamVRD3D->SetDevice(device);

// D3D11
{
ID3D11Device *d3d11Device = nullptr;
Expand All @@ -110,7 +109,7 @@ void hook_swapchain_object(IUnknown *device, T **swapchainTarget)
g_messageLog.LogWarning("dxgi", "query d3d11 device interface failed", hr);
}
}

// D3D12
{
ID3D12CommandQueue *d3d12CommandQueue = nullptr;
Expand All @@ -135,7 +134,7 @@ void hook_swapchain_object(IUnknown *device, T **swapchainTarget)
g_messageLog.LogWarning("dxgi", "query d3d12 device interface failed", hr);
}
}

g_messageLog.LogError("dxgi", "no swap chain created");
}

Expand Down Expand Up @@ -248,7 +247,8 @@ EXTERN_C HRESULT WINAPI CreateDXGIFactory(REFIID riid, void **ppFactory)
g_messageLog.LogInfo("dxgi", "CreateDXGIFactory");

IDXGIFactory* unmodifiedFactory;
const HRESULT hr = GameOverlay::find_hook_trampoline(&CreateDXGIFactory)(riid, (void**)&unmodifiedFactory);
const HRESULT hr =
GameOverlay::find_hook_trampoline(&CreateDXGIFactory)(riid, (void **)&unmodifiedFactory);
if (SUCCEEDED(hr)) {

#if WRAP_DXGI
Expand All @@ -272,7 +272,8 @@ EXTERN_C HRESULT WINAPI CreateDXGIFactory1(REFIID riid, void **ppFactory)
g_messageLog.LogInfo("dxgi", "CreateDXGIFactory1");

IDXGIFactory1* unmodifiedFactory;
const HRESULT hr = GameOverlay::find_hook_trampoline(&CreateDXGIFactory1)(riid, (void**)&unmodifiedFactory);
const HRESULT hr =
GameOverlay::find_hook_trampoline(&CreateDXGIFactory1)(riid, (void **)&unmodifiedFactory);
if (SUCCEEDED(hr)) {

#if WRAP_DXGI
Expand All @@ -299,7 +300,8 @@ EXTERN_C HRESULT WINAPI CreateDXGIFactory2(UINT flags, REFIID riid, void **ppFac
#endif

IDXGIFactory2* unmodifiedFactory;
const HRESULT hr = GameOverlay::find_hook_trampoline(&CreateDXGIFactory2)(flags, riid, (void**)&unmodifiedFactory);
const HRESULT hr =
GameOverlay::find_hook_trampoline(&CreateDXGIFactory2)(flags, riid, (void **)&unmodifiedFactory);
if (SUCCEEDED(hr)) {
#if WRAP_DXGI
WrappedIDXGIFactory2* wrappedFactory2 = new WrappedIDXGIFactory2(unmodifiedFactory);
Expand All @@ -319,14 +321,14 @@ EXTERN_C HRESULT WINAPI CreateDXGIFactory2(UINT flags, REFIID riid, void **ppFac
EXTERN_C HRESULT WINAPI D3D12CreateDevice(
IUnknown *pAdapter, D3D_FEATURE_LEVEL MinimumFeatureLevel,
REFIID riid, void **ppDevice)
{
{
g_messageLog.LogInfo("dxgi", "D3D12CreateDevice");
const HRESULT hr = GameOverlay::find_hook_trampoline(&D3D12CreateDevice)(pAdapter, MinimumFeatureLevel, riid, ppDevice);

// create temporary factory to hook factory object
// usually this should already have happened but in some cases we could have missed it
ComPtr<IDXGIFactory> factory;
CreateDXGIFactory(IID_PPV_ARGS((&factory)));

return hr;
}
71 changes: 61 additions & 10 deletions GameOverlay/d3d/source/d3d/dxgi_swapchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@

#include "Logging/MessageLog.h"

#include "oculus.h"
#include "steamvr.h"

using namespace Microsoft::WRL;
extern bool g_uwpApp;

Expand Down Expand Up @@ -209,6 +212,20 @@ ULONG STDMETHODCALLTYPE DXGISwapChain::Release()
{
ULONG ref = swapChain_->Release();

switch (d3dVersion_) {
case D3DVersion_11:
d3d11Device_->Release();
d3d11Renderer_.reset();
break;
case D3DVersion_12:
d3d12CommandQueue_->Release();
d3d12Renderer_.reset();
break;
}

g_SteamVRD3D.reset();
g_OculusD3D.reset();

if (ref == 1) {
delete this;
}
Expand Down Expand Up @@ -265,12 +282,24 @@ HRESULT STDMETHODCALLTYPE DXGISwapChain::Present(UINT SyncInterval, UINT Flags)
if (Flags != DXGI_PRESENT_TEST) {
switch (d3dVersion_) {
case D3DVersion_11:
if (!d3d11Renderer_->HideOverlay())
d3d11Renderer_->on_present(lagIndicatorState_);
if (d3d11Renderer_) {
if (!d3d11Renderer_->HideOverlay()) d3d11Renderer_->on_present(lagIndicatorState_);
}
else {
d3d11Renderer_ = std::make_unique<GameOverlay::d3d11_renderer>(
d3d11Device_.Get(), swapChain_);
d3d11Renderer_->on_present(lagIndicatorState_);
}
break;
case D3DVersion_12:
if (!d3d12Renderer_->HideOverlay())
d3d12Renderer_->on_present(lagIndicatorState_);
if (d3d12Renderer_) {
if (!d3d12Renderer_->HideOverlay()) d3d12Renderer_->on_present(lagIndicatorState_);
}
else {
d3d12Renderer_ = std::make_unique<GameOverlay::d3d12_renderer>(
d3d12CommandQueue_.Get(), static_cast<IDXGISwapChain3 *>(swapChain_));
d3d12Renderer_->on_present(lagIndicatorState_);
}
break;
}
}
Expand All @@ -281,10 +310,14 @@ HRESULT STDMETHODCALLTYPE DXGISwapChain::Present(UINT SyncInterval, UINT Flags)
mutex_.lock();
switch (d3dVersion_) {
case D3DVersion_11:
lagIndicatorState_ = KEY_DOWN(d3d11Renderer_->GetLagIndicatorHotkey());
if (d3d11Renderer_) {
lagIndicatorState_ = KEY_DOWN(d3d11Renderer_->GetLagIndicatorHotkey());
}
break;
case D3DVersion_12:
lagIndicatorState_ = KEY_DOWN(d3d12Renderer_->GetLagIndicatorHotkey());
if (d3d12Renderer_) {
lagIndicatorState_ = KEY_DOWN(d3d12Renderer_->GetLagIndicatorHotkey());
}
break;
}
mutex_.unlock();
Expand Down Expand Up @@ -378,10 +411,24 @@ HRESULT STDMETHODCALLTYPE DXGISwapChain::Present1(UINT SyncInterval, UINT Presen
if (PresentFlags != DXGI_PRESENT_TEST) {
switch (d3dVersion_) {
case D3DVersion_11:
d3d11Renderer_->on_present(lagIndicatorState_);
if (d3d11Renderer_) {
d3d11Renderer_->on_present(lagIndicatorState_);
}
else {
d3d11Renderer_ = std::make_unique<GameOverlay::d3d11_renderer>(
d3d11Device_.Get(), swapChain_);
d3d11Renderer_->on_present(lagIndicatorState_);
}
break;
case D3DVersion_12:
d3d12Renderer_->on_present(lagIndicatorState_);
if (d3d12Renderer_) {
d3d12Renderer_->on_present(lagIndicatorState_);
}
else {
d3d12Renderer_ = std::make_unique<GameOverlay::d3d12_renderer>(
d3d12CommandQueue_.Get(), static_cast<IDXGISwapChain3 *>(swapChain_));
d3d12Renderer_->on_present(lagIndicatorState_);
}
break;
}
}
Expand All @@ -393,10 +440,14 @@ HRESULT STDMETHODCALLTYPE DXGISwapChain::Present1(UINT SyncInterval, UINT Presen
mutex_.lock();
switch (d3dVersion_) {
case D3DVersion_11:
lagIndicatorState_ = KEY_DOWN(d3d11Renderer_->GetLagIndicatorHotkey());
if (d3d11Renderer_) {
lagIndicatorState_ = KEY_DOWN(d3d11Renderer_->GetLagIndicatorHotkey());
}
break;
case D3DVersion_12:
lagIndicatorState_ = KEY_DOWN(d3d12Renderer_->GetLagIndicatorHotkey());
if (d3d12Renderer_) {
lagIndicatorState_ = KEY_DOWN(d3d12Renderer_->GetLagIndicatorHotkey());
}
break;
}
mutex_.unlock();
Expand Down
2 changes: 2 additions & 0 deletions GameOverlay/d3d/source/d3d/oculus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ void Oculus_D3D::SetDevice(IUnknown* device)
if (SUCCEEDED(hr)) {
d3d11Device_ = d3d11Device;
d3dVersion_ = D3DVersion_11;
d3d11Device->Release();
}

ID3D12CommandQueue *d3d12CommandQueue = nullptr;
Expand All @@ -171,6 +172,7 @@ void Oculus_D3D::SetDevice(IUnknown* device)
d3d12Commandqueue_ = d3d12CommandQueue;
d3d12Commandqueue_->GetDevice(IID_PPV_ARGS(&d3d12Device_));
d3dVersion_ = D3DVersion_12;
d3d12CommandQueue->Release();
}
}

Expand Down
Loading

0 comments on commit 8b2446d

Please sign in to comment.