[repos] lgprotocol: import shared protocol definitions
Some checks failed
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled

Add LGProtocol as a pinned submodule and consume its KVMFR protocol
definitions throughout the client, host, IDD, OBS, and profiler.

Keep Looking Glass framebuffer helpers local while removing duplicated
protocol headers and migrating users to KVMFR-scoped types.
This commit is contained in:
Geoffrey McRae
2026-09-01 20:58:25 +10:00
parent 8e43d41873
commit 8fbe3e7454
94 changed files with 619 additions and 2062 deletions

View File

@@ -20,7 +20,7 @@
#pragma once
#include "common/KVMFRClipboard.h"
#include <LGProtocol/KVMFRClipboard.h>
#include <stddef.h>
#include <stdint.h>

View File

@@ -20,7 +20,7 @@
#pragma once
#include "common/KVMFRInput.h"
#include <LGProtocol/KVMFRInput.h>
#include <stddef.h>
#include <stdint.h>

View File

@@ -61,7 +61,7 @@
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PreprocessorDefinitions>UMDF_USING_NTSTATUS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalOptions>/EHsc /D_ATL_NO_WIN_SUPPORT %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)..\repos\LGProtocol\include;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>

View File

@@ -291,7 +291,7 @@
<WppRecorderEnabled>true</WppRecorderEnabled>
<WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
<AdditionalOptions>/EHsc /D_ATL_NO_WIN_SUPPORT /DIDDCX_VERSION_MAJOR=1 /DIDDCX_VERSION_MINOR=10 /DIDDCX_MINIMUM_VERSION_REQUIRED=4 %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)LGCommon;$(ProjectDir)..\..\repos\LGMP\lgmp\include;$(ProjectDir)..\..\vendor;$(ProjectDir)..\..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)LGCommon;$(ProjectDir)..\..\repos\LGMP\lgmp\include;$(ProjectDir)..\..\vendor;$(ProjectDir)..\..\repos\LGProtocol\include;$(ProjectDir)..\..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies);OneCoreUAP.lib;avrt.lib;bcrypt.lib;d3d12.lib;d3dcompiler.lib</AdditionalDependencies>
@@ -306,7 +306,7 @@
<WppRecorderEnabled>true</WppRecorderEnabled>
<WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
<AdditionalOptions>/EHsc /D_ATL_NO_WIN_SUPPORT /DIDDCX_VERSION_MAJOR=1 /DIDDCX_VERSION_MINOR=10 /DIDDCX_MINIMUM_VERSION_REQUIRED=4 %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)LGCommon;$(ProjectDir)..\..\repos\LGMP\lgmp\include;$(ProjectDir)..\..\vendor;$(ProjectDir)..\..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)LGCommon;$(ProjectDir)..\..\repos\LGMP\lgmp\include;$(ProjectDir)..\..\vendor;$(ProjectDir)..\..\repos\LGProtocol\include;$(ProjectDir)..\..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies);OneCoreUAP.lib;avrt.lib;bcrypt.lib;d3d12.lib;d3dcompiler.lib</AdditionalDependencies>
@@ -321,7 +321,7 @@
<WppRecorderEnabled>true</WppRecorderEnabled>
<WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
<AdditionalOptions>/EHsc /D_ATL_NO_WIN_SUPPORT /DIDDCX_VERSION_MAJOR=1 /DIDDCX_VERSION_MINOR=10 /DIDDCX_MINIMUM_VERSION_REQUIRED=4 %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)LGCommon;$(ProjectDir)..\..\repos\LGMP\lgmp\include;$(ProjectDir)..\..\vendor;$(ProjectDir)..\..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)LGCommon;$(ProjectDir)..\..\repos\LGMP\lgmp\include;$(ProjectDir)..\..\vendor;$(ProjectDir)..\..\repos\LGProtocol\include;$(ProjectDir)..\..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies);OneCoreUAP.lib;avrt.lib;bcrypt.lib;d3d12.lib;d3dcompiler.lib</AdditionalDependencies>
@@ -336,7 +336,7 @@
<WppRecorderEnabled>true</WppRecorderEnabled>
<WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData>
<AdditionalOptions>/EHsc /D_ATL_NO_WIN_SUPPORT /DIDDCX_VERSION_MAJOR=1 /DIDDCX_VERSION_MINOR=10 /DIDDCX_MINIMUM_VERSION_REQUIRED=4 %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)LGCommon;$(ProjectDir)..\..\repos\LGMP\lgmp\include;$(ProjectDir)..\..\vendor;$(ProjectDir)..\..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)LGCommon;$(ProjectDir)..\..\repos\LGMP\lgmp\include;$(ProjectDir)..\..\vendor;$(ProjectDir)..\..\repos\LGProtocol\include;$(ProjectDir)..\..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies);OneCoreUAP.lib;avrt.lib;bcrypt.lib;d3d12.lib;d3dcompiler.lib</AdditionalDependencies>

View File

@@ -87,12 +87,12 @@ DXGI_FORMAT D12::Dxgi(FramePixel pixel)
return DXGI_FORMAT_UNKNOWN;
}
FrameType D12::Type(FramePixel pixel)
KVMFRFrameType D12::Type(FramePixel pixel)
{
return Type(Dxgi(pixel));
}
FrameType D12::Type(DXGI_FORMAT format)
KVMFRFrameType D12::Type(DXGI_FORMAT format)
{
switch (format)
{

View File

@@ -48,7 +48,7 @@ struct D12FrameFormat
unsigned pitch = 0;
unsigned width = 0;
unsigned height = 0;
FrameType format = FRAME_TYPE_INVALID;
KVMFRFrameType format = FRAME_TYPE_INVALID;
bool hdr = false;
bool hdrPQ = false;
bool hdrMetadata = false;
@@ -88,8 +88,8 @@ namespace D12
};
DXGI_FORMAT Dxgi(FramePixel pixel);
FrameType Type(DXGI_FORMAT format);
FrameType Type(FramePixel pixel);
KVMFRFrameType Type(DXGI_FORMAT format);
KVMFRFrameType Type(FramePixel pixel);
bool Profile(const D12FrameFormat& format, FrameStorage storage,
FrameProfile& profile);

View File

@@ -191,8 +191,8 @@ PostProcessStatus CColorTransformEffect::Set(
if (!matrixEnabled && !lutEnabled)
return PostProcessStatus::BYPASS_EFFECT;
DXGI_FORMAT dstFormat;
FrameType frameType;
DXGI_FORMAT dstFormat;
KVMFRFrameType frameType;
switch (src.desc.Format)
{
case DXGI_FORMAT_B8G8R8A8_UNORM:

View File

@@ -56,7 +56,7 @@ struct CRGB24Effect::State
DXGI_FORMAT resourceFormat = DXGI_FORMAT_UNKNOWN;
unsigned width = 0;
unsigned height = 0;
FrameType format = FRAME_TYPE_INVALID;
KVMFRFrameType format = FRAME_TYPE_INVALID;
bool hdr = false;
bool hdrPQ = false;
std::shared_ptr<const D12ColorTransform> colorTransform;

View File

@@ -49,86 +49,86 @@ private:
bool valid = false;
bool busy = false;
FrameToken token = {};
CFrameScheduler::Schedule schedule = {};
uint64_t content = 0;
uint64_t captureTime = 0;
FrameToken token = {};
CFrameScheduler::Schedule schedule = {};
uint64_t content = 0;
uint64_t captureTime = 0;
uint64_t postProcessTime = 0;
uint64_t copyTime = 0;
uint64_t readyTime = 0;
uint64_t holdTime = 0;
uint64_t filledAt = 0;
uint64_t workStart = 0;
unsigned pitch = 0;
unsigned width = 0;
unsigned height = 0;
DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN;
FrameType frameType = FRAME_TYPE_INVALID;
Phase phase = IDLE;
FrameDone pendingResult = FrameDone::FAILED;
uint64_t pendingReadyAt = 0;
bool timingValid = false;
bool resultPending = false;
bool callActive = false;
uint64_t copyTime = 0;
uint64_t readyTime = 0;
uint64_t holdTime = 0;
uint64_t filledAt = 0;
uint64_t workStart = 0;
unsigned pitch = 0;
unsigned width = 0;
unsigned height = 0;
DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN;
KVMFRFrameType frameType = FRAME_TYPE_INVALID;
Phase phase = IDLE;
FrameDone pendingResult = FrameDone::FAILED;
uint64_t pendingReadyAt = 0;
bool timingValid = false;
bool resultPending = false;
bool callActive = false;
bool cancelRequested = false;
};
CSRWLock callLock;
CSRWLock laneLock;
IFrameSink * target = nullptr;
HANDLE drained = nullptr;
std::atomic<unsigned> outstanding = 0;
std::atomic_bool active = false;
std::atomic<BackendId> backend = 0;
std::atomic<uint32_t> epoch = 0;
bool reserved = false;
bool primary = false;
bool needsFullCopy = true;
uint64_t lastContent = 0;
uint64_t lastTerminalContent = 0;
uint64_t blockedContent = 0;
size_t blockedFrameSize = 0;
bool blockedAllocation = false;
unsigned pitch = 0;
unsigned width = 0;
unsigned height = 0;
DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN;
FrameType frameType = FRAME_TYPE_INVALID;
ResourceLane lanes[FRAME_SINK_BUFFERS] = {};
CSRWLock callLock;
CSRWLock laneLock;
IFrameSink * target = nullptr;
HANDLE drained = nullptr;
std::atomic<unsigned> outstanding = 0;
std::atomic_bool active = false;
std::atomic<BackendId> backend = 0;
std::atomic<uint32_t> epoch = 0;
bool reserved = false;
bool primary = false;
bool needsFullCopy = true;
uint64_t lastContent = 0;
uint64_t lastTerminalContent = 0;
uint64_t blockedContent = 0;
size_t blockedFrameSize = 0;
bool blockedAllocation = false;
unsigned pitch = 0;
unsigned width = 0;
unsigned height = 0;
DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN;
KVMFRFrameType frameType = FRAME_TYPE_INVALID;
ResourceLane lanes[FRAME_SINK_BUFFERS] = {};
};
struct BatchTarget
{
Sink * sink = nullptr;
BackendId backend = 0;
uint32_t epoch = 0;
unsigned localSlot = 0;
unsigned resourceLane = 0;
CFrameScheduler::Schedule schedule = {};
CFrameScheduler::Schedule deliverySchedule = {};
uint64_t content = 0;
unsigned pitch = 0;
unsigned width = 0;
unsigned height = 0;
DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN;
FrameType frameType = FRAME_TYPE_INVALID;
bool periodic = false;
bool published = false;
bool delivered = false;
bool submitted = false;
bool committed = false;
bool completionPending = false;
bool completionSucceeded = false;
bool releasePending = false;
uint64_t captureTime = 0;
uint64_t postProcessTime = 0;
uint64_t copyTime = 0;
uint64_t readyTime = 0;
uint64_t holdTime = 0;
uint64_t filledAt = 0;
uint64_t workStart = 0;
bool timingValid = false;
bool active = false;
Sink * sink = nullptr;
BackendId backend = 0;
uint32_t epoch = 0;
unsigned localSlot = 0;
unsigned resourceLane = 0;
CFrameScheduler::Schedule schedule = {};
CFrameScheduler::Schedule deliverySchedule = {};
uint64_t content = 0;
unsigned pitch = 0;
unsigned width = 0;
unsigned height = 0;
DXGI_FORMAT format = DXGI_FORMAT_UNKNOWN;
KVMFRFrameType frameType = FRAME_TYPE_INVALID;
bool periodic = false;
bool published = false;
bool delivered = false;
bool submitted = false;
bool committed = false;
bool completionPending = false;
bool completionSucceeded = false;
bool releasePending = false;
uint64_t captureTime = 0;
uint64_t postProcessTime = 0;
uint64_t copyTime = 0;
uint64_t readyTime = 0;
uint64_t holdTime = 0;
uint64_t filledAt = 0;
uint64_t workStart = 0;
bool timingValid = false;
bool active = false;
};
struct Batch

View File

@@ -21,7 +21,7 @@
#pragma once
#include "CClipboardChannel.h"
#include "common/KVMFRClipboard.h"
#include <LGProtocol/KVMFRClipboard.h>
#include <stdint.h>

View File

@@ -24,7 +24,7 @@
#include <SetupAPI.h>
#include <vector>
#include "common/KVMFRRecovery.h"
#include <LGProtocol/KVMFRRecovery.h>
class CIVSHMEM
{

View File

@@ -20,7 +20,7 @@
#pragma once
#include "common/KVMFRClipboard.h"
#include <LGProtocol/KVMFRClipboard.h>
#include <stdint.h>

View File

@@ -24,8 +24,8 @@
#include "transport/IClipboardSource.h"
#include "transport/lgmp/CLGMPClipboardFiles.h"
#include "common/KVMFRClipboard.h"
#include "common/LGMPConfig.h"
#include <LGProtocol/KVMFRClipboard.h>
#include <LGProtocol/LGMPConfig.h>
#include <Windows.h>

View File

@@ -25,7 +25,7 @@
#include "transport/lgmp/CLGMPHost.h"
#include "transport/IControlSink.h"
#include "common/KVMFR.h"
#include <LGProtocol/KVMFR.h>
#include <Windows.h>
#include <wdf.h>

View File

@@ -30,7 +30,7 @@ extern "C" {
#include "lgmp/host.h"
}
#include "common/KVMFR.h"
#include <LGProtocol/KVMFR.h>
#include "capture/CFrameScheduler.h"
#include "capture/FramePipeline.h"
#include "transport/FrameCaps.h"
@@ -117,13 +117,13 @@ private:
KVMFRFrame * m_frame [LGMP_Q_FRAME_BUFFER_LEN] = {};
LGMPBuffer * m_frameBuffer[LGMP_Q_FRAME_BUFFER_LEN] = {};
unsigned m_width = 0;
unsigned m_height = 0;
unsigned m_frameWidth = 0;
unsigned m_frameHeight = 0;
unsigned m_pitch = 0;
DXGI_FORMAT m_format = DXGI_FORMAT_UNKNOWN;
FrameType m_frameType = FRAME_TYPE_INVALID;
unsigned m_width = 0;
unsigned m_height = 0;
unsigned m_frameWidth = 0;
unsigned m_frameHeight = 0;
unsigned m_pitch = 0;
DXGI_FORMAT m_format = DXGI_FORMAT_UNKNOWN;
KVMFRFrameType m_frameType = FRAME_TYPE_INVALID;
// Previous HDR metadata used to detect changes for formatVer bumps.
uint16_t m_lastHDRDisplayPrimary[3][2] = {};

View File

@@ -25,7 +25,7 @@
#include "CDebug.h"
#include "VersionInfo.h"
#include "common/KVMFR.h"
#include <LGProtocol/KVMFR.h>
#include <stdlib.h>
#include <string.h>

View File

@@ -31,8 +31,8 @@
#include "CSRWLock.h"
#include "Seq.h"
#include "common/KVMFRInput.h"
#include "common/LGMPConfig.h"
#include <LGProtocol/KVMFRInput.h>
#include <LGProtocol/LGMPConfig.h>
#include <avrt.h>
#include <string.h>

View File

@@ -23,8 +23,8 @@
#include "Atomic.h"
#include "CSRWLock.h"
#include "transport/IInputSource.h"
#include "common/KVMFRInput.h"
#include "common/LGMPConfig.h"
#include <LGProtocol/KVMFRInput.h>
#include <LGProtocol/LGMPConfig.h>
#include <Windows.h>

View File

@@ -22,8 +22,8 @@
#include "Atomic.h"
#include "CDebug.h"
#include "common/KVMFR.h"
#include "common/KVMFRRecovery.h"
#include <LGProtocol/KVMFR.h>
#include <LGProtocol/KVMFRRecovery.h>
static bool TranslateFrameScheduleFlags(
uint32_t source, uint32_t& destination)

View File

@@ -26,8 +26,8 @@
#include "CDebug.h"
#include "VersionInfo.h"
#include "common/KVMFR.h"
#include "common/KVMFRRecovery.h"
#include <LGProtocol/KVMFR.h>
#include <LGProtocol/KVMFRRecovery.h>
#include <lgmp/lgmp.h>

View File

@@ -25,7 +25,7 @@
#include <OleIdl.h>
#include <ShellAPI.h>
#include <common/KVMFRClipboard.h>
#include <LGProtocol/KVMFRClipboard.h>
#include <atomic>
#include <cstdint>

View File

@@ -77,7 +77,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_CONSOLE;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)LGCommon;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)LGCommon;$(SolutionDir)..\repos\LGProtocol\include;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
@@ -103,7 +103,7 @@ copy /Y "$(ProjectDir)VERSION" "$(SolutionDir)$(Platform)\$(Configuration)\LGIdd
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>$(SolutionDir)LGCommon;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)LGCommon;$(SolutionDir)..\repos\LGProtocol\include;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
@@ -131,7 +131,7 @@ copy /Y "$(ProjectDir)VERSION" "$(SolutionDir)$(Platform)\$(Configuration)\LGIdd
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard_C>Default</LanguageStandard_C>
<AdditionalIncludeDirectories>$(SolutionDir)LGCommon;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)LGCommon;$(SolutionDir)..\repos\LGProtocol\include;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@@ -159,7 +159,7 @@ copy /Y "$(ProjectDir)VERSION" "$(SolutionDir)$(Platform)\$(Configuration)\LGIdd
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
<LanguageStandard_C>Default</LanguageStandard_C>
<AdditionalIncludeDirectories>$(SolutionDir)LGCommon;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)LGCommon;$(SolutionDir)..\repos\LGProtocol\include;$(SolutionDir)..\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>

View File

@@ -81,7 +81,7 @@
<WppRecorderEnabled>true</WppRecorderEnabled>
<WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">Trace.h</WppScanConfigurationData>
<AdditionalOptions>/EHsc /D_ATL_NO_WIN_SUPPORT %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>$(ProjectDir)..\LGCommon;$(ProjectDir)..\LGIdd;$(ProjectDir)..\..\common\include;$(DDK_INC_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir)..\LGCommon;$(ProjectDir)..\LGIdd;$(ProjectDir)..\..\repos\LGProtocol\include;$(ProjectDir)..\..\common\include;$(DDK_INC_PATH);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalDependencies>%(AdditionalDependencies);OneCoreUAP.lib</AdditionalDependencies>