51 lines
2.3 KiB
C
51 lines
2.3 KiB
C
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
#pragma once
|
|
|
|
#include "RHI.h"
|
|
|
|
#if PLATFORM_WINDOWS
|
|
#include "Windows/D3D11ThirdParty.h"
|
|
#else
|
|
#include "D3D11ThirdParty.h"
|
|
#endif
|
|
|
|
typedef ID3D11DeviceContext FD3D11DeviceContext;
|
|
typedef ID3D11Device FD3D11Device;
|
|
|
|
struct ID3D11DynamicRHI : public FDynamicRHIPSOFallback
|
|
{
|
|
virtual ERHIInterfaceType GetInterfaceType() const override final { return ERHIInterfaceType::D3D11; }
|
|
|
|
virtual ID3D11Device* RHIGetDevice() const = 0;
|
|
virtual ID3D11DeviceContext* RHIGetDeviceContext() const = 0;
|
|
virtual IDXGIAdapter* RHIGetAdapter() const = 0;
|
|
virtual IDXGISwapChain* RHIGetSwapChain(FRHIViewport* InViewport) const = 0;
|
|
virtual DXGI_FORMAT RHIGetSwapChainFormat(EPixelFormat InFormat) const = 0;
|
|
|
|
virtual FTextureRHIRef RHICreateTexture2DFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding& ClearValueBinding, ID3D11Texture2D* Resource) = 0;
|
|
virtual FTextureRHIRef RHICreateTexture2DArrayFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding& ClearValueBinding, ID3D11Texture2D* Resource) = 0;
|
|
virtual FTextureRHIRef RHICreateTextureCubeFromResource(EPixelFormat Format, ETextureCreateFlags TexCreateFlags, const FClearValueBinding& ClearValueBinding, ID3D11Texture2D* Resource) = 0;
|
|
|
|
virtual ID3D11Buffer* RHIGetResource(FRHIBuffer* InBuffer) const = 0;
|
|
virtual ID3D11Resource* RHIGetResource(FRHITexture* InTexture) const = 0;
|
|
virtual int64 RHIGetResourceMemorySize(FRHITexture* InTexture) const = 0;
|
|
|
|
virtual ID3D11RenderTargetView* RHIGetRenderTargetView(FRHITexture* InTexture, int32 InMipIndex = 0, int32 InArraySliceIndex = -1) const = 0;
|
|
virtual ID3D11ShaderResourceView* RHIGetShaderResourceView(FRHITexture* InTexture) const = 0;
|
|
|
|
virtual void RHIRegisterWork(uint32 NumPrimitives) = 0;
|
|
|
|
virtual void RHIVerifyResult(ID3D11Device* Device, HRESULT Result, const ANSICHAR* Code, const ANSICHAR* Filename, uint32 Line) const = 0;
|
|
};
|
|
|
|
inline bool IsRHID3D11()
|
|
{
|
|
return GDynamicRHI != nullptr && GDynamicRHI->GetInterfaceType() == ERHIInterfaceType::D3D11;
|
|
}
|
|
|
|
inline ID3D11DynamicRHI* GetID3D11DynamicRHI()
|
|
{
|
|
check(GDynamicRHI->GetInterfaceType() == ERHIInterfaceType::D3D11);
|
|
return GetDynamicRHI<ID3D11DynamicRHI>();
|
|
}
|