90 lines
2.4 KiB
C++
90 lines
2.4 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "RHITextureReference.h"
|
|
#include "RHI.h"
|
|
#include "RHICommandList.h"
|
|
#include "RHIShaderPlatform.h"
|
|
|
|
FRHITextureReference::FRHITextureReference(FRHITexture* InReferencedTexture)
|
|
: FRHITexture(RRT_TextureReference)
|
|
, ReferencedTexture(InReferencedTexture ? InReferencedTexture : DefaultTexture.GetReference())
|
|
#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
|
|
, BindlessHandle(FRHIDescriptorHandle())
|
|
#endif
|
|
{
|
|
check(DefaultTexture);
|
|
}
|
|
|
|
#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
|
|
FRHITextureReference::FRHITextureReference(FRHITexture* InReferencedTexture, FRHIDescriptorHandle InBindlessHandle)
|
|
: FRHITexture(RRT_TextureReference)
|
|
, ReferencedTexture(InReferencedTexture ? InReferencedTexture : DefaultTexture.GetReference())
|
|
, BindlessHandle(InBindlessHandle)
|
|
{
|
|
check(DefaultTexture);
|
|
}
|
|
#endif // PLATFORM_SUPPORTS_BINDLESS_RENDERING
|
|
|
|
FRHITextureReference::~FRHITextureReference() = default;
|
|
|
|
FRHITextureReference* FRHITextureReference::GetTextureReference()
|
|
{
|
|
return this;
|
|
}
|
|
|
|
FRHIDescriptorHandle FRHITextureReference::GetDefaultBindlessHandle() const
|
|
{
|
|
#if PLATFORM_SUPPORTS_BINDLESS_RENDERING
|
|
if (BindlessHandle.IsValid())
|
|
{
|
|
return BindlessHandle;
|
|
}
|
|
#endif // PLATFORM_SUPPORTS_BINDLESS_RENDERING
|
|
|
|
check(ReferencedTexture);
|
|
return ReferencedTexture->GetDefaultBindlessHandle();
|
|
}
|
|
|
|
void* FRHITextureReference::GetNativeResource() const
|
|
{
|
|
check(ReferencedTexture);
|
|
return ReferencedTexture->GetNativeResource();
|
|
}
|
|
|
|
void* FRHITextureReference::GetNativeShaderResourceView() const
|
|
{
|
|
check(ReferencedTexture);
|
|
return ReferencedTexture->GetNativeShaderResourceView();
|
|
}
|
|
|
|
void* FRHITextureReference::GetTextureBaseRHI()
|
|
{
|
|
check(ReferencedTexture);
|
|
return ReferencedTexture->GetTextureBaseRHI();
|
|
}
|
|
|
|
void FRHITextureReference::GetWriteMaskProperties(void*& OutData, uint32& OutSize)
|
|
{
|
|
check(ReferencedTexture);
|
|
return ReferencedTexture->GetWriteMaskProperties(OutData, OutSize);
|
|
}
|
|
|
|
#if ENABLE_RHI_VALIDATION
|
|
RHIValidation::FResource* FRHITextureReference::GetTrackerResource()
|
|
{
|
|
check(ReferencedTexture);
|
|
return ReferencedTexture->GetTrackerResource();
|
|
}
|
|
#endif
|
|
|
|
const FRHITextureDesc& FRHITextureReference::GetDesc() const
|
|
{
|
|
check(ReferencedTexture);
|
|
return ReferencedTexture->GetDesc();
|
|
}
|
|
|
|
void FRHITextureReference::SetTrackedAccessFromContext(FRHITrackedAccess InTrackedAccess)
|
|
{
|
|
check(ReferencedTexture);
|
|
ReferencedTexture->SetTrackedAccessFromContext(InTrackedAccess);
|
|
} |