Files
UnrealEngineUWP/Engine/Source/Programs/VirtualProduction/TextureShare/Private/TextureShareSDKObject.h
peter tarasenko b7c5c86132 TextureShare: Plugin, nDisplay integration, SDK, and Samples
#jira UE-148999, UE-149598, UE-150041, UE-150042, UE-150043, UE-150044, UE-150045, UE-150046
#rb Alejandro.Arango, Vitalii.Boiko
#preflight 62b74f974869158fdb3ee0ca

[CL 20826306 by peter tarasenko in ue5-main branch]
2022-06-25 18:10:28 -04:00

79 lines
4.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "ITextureShareSDKObject.h"
class ITextureShareCoreObject;
/**
* TextureShareSDK object impl
*/
class TEXTURESHARESDK_API FTextureShareSDKObject
: public ITextureShareSDKObject
{
public:
FTextureShareSDKObject(const TSharedPtr<ITextureShareCoreObject, ESPMode::ThreadSafe>& InCoreObject);
virtual ~FTextureShareSDKObject();
public:
///////////////////////// State /////////////////////////
virtual const wchar_t* GetName() const override;
virtual void GetObjectDesc(TDataOutput<FTextureShareCoreObjectDesc>& OutObjectDesc) const override;
virtual bool IsActive() const override;
virtual bool IsFrameSyncActive() const override;
public:
///////////////////////// Settings /////////////////////////
virtual bool SetProcessId(const wchar_t* InProcessId) override;
virtual bool SetDeviceType(const ETextureShareDeviceType InDeviceType) override;
virtual bool SetSyncSetting(const TDataInput<FTextureShareCoreSyncSettings>& InSyncSetting) override;
virtual void GetSyncSetting(TDataOutput<FTextureShareCoreSyncSettings>& OutSyncSettings) const override;
virtual void GetFrameSyncSettings(const ETextureShareFrameSyncTemplate InType, TDataOutput<FTextureShareCoreFrameSyncSettings>& OutFrameSyncSettings) const override;
public:
///////////////////////// Session /////////////////////////
virtual bool BeginSession() override;
virtual bool EndSession() override;
virtual bool IsSessionActive() const override;
public:
///////////////////////// Thread sync support /////////////////////////
virtual bool LockThreadMutex(const ETextureShareThreadMutex InThreadMutex) override;
virtual bool UnlockThreadMutex(const ETextureShareThreadMutex InThreadMutex) override;
virtual bool IsBeginFrameSyncActive() const override;
virtual bool IsBeginFrameSyncActive_RenderThread() const override;
public:
///////////////////////// Interprocess Synchronization /////////////////////////
virtual bool BeginFrameSync() override;
virtual bool FrameSync(const ETextureShareSyncStep InSyncStep) override;
virtual bool EndFrameSync() override;
virtual bool BeginFrameSync_RenderThread() override;
virtual bool FrameSync_RenderThread(const ETextureShareSyncStep InSyncStep) override;
virtual bool EndFrameSync_RenderThread() override;
virtual void GetConnectedInterprocessObjects(TDataOutput<TArraySerializable<FTextureShareCoreObjectDesc>>& OutObjectList) const override;
public:
///////////////////////// Data Containers /////////////////////////
virtual void GetData(TDataOutput<FTextureShareCoreData>& OutObjectData) override;
virtual void SetData(const TDataInput<FTextureShareCoreData>& InObjectData) override;
virtual void GetProxyData_RenderThread(TDataOutput<FTextureShareCoreProxyData>& OutObjectProxyData) override;
virtual void SetProxyData_RenderThread(const TDataInput<FTextureShareCoreProxyData>& InObjectProxyData) override;
virtual void GetReceivedData(TDataOutput<TArraySerializable<FTextureShareCoreObjectData>>& OutReceivedObjectsData) const override;
virtual void GetReceivedProxyData_RenderThread(TDataOutput<TArraySerializable<FTextureShareCoreObjectProxyData>>& OutObjectsProxyData) const override;
public:
///////////////////////// Access to shared resources /////////////////////////
virtual ID3D11Texture2D* OpenSharedResourceD3D11(ID3D11Device* pD3D11Device, const TDataInput<FTextureShareCoreResourceDesc>& InResourceDesc) override;
virtual ID3D12Resource* OpenSharedResourceD3D12(ID3D12Device* pD3D12Device, const TDataInput<FTextureShareCoreResourceDesc>& InResourceDesc) override;
virtual bool OpenSharedResourceVulkan(const TDataInput<FTextureShareDeviceVulkanContext>& InDeviceVulkanContext, const TDataInput<FTextureShareCoreResourceDesc>& InResourceDesc, TDataOutput<FTextureShareDeviceVulkanResource>& OutVulkanResource) override;
private:
const struct FTextureShareCoreResourceHandle* ImplFindResource(const struct FTextureShareCoreResourceDesc& InResourceDesc) const;
private:
TSharedPtr<ITextureShareCoreObject, ESPMode::ThreadSafe> const CoreObject;
};