Tighten XCUI compositor texture registration
This commit is contained in:
@@ -67,21 +67,27 @@ public:
|
||||
bool CreateTextureDescriptor(
|
||||
::XCEngine::RHI::RHIDevice* device,
|
||||
::XCEngine::RHI::RHITexture* texture,
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE* outCpuHandle,
|
||||
D3D12_GPU_DESCRIPTOR_HANDLE* outGpuHandle,
|
||||
ImTextureID* outTextureId) override {
|
||||
return m_backend.CreateTextureDescriptor(
|
||||
UITextureRegistration& outRegistration) override {
|
||||
ImTextureID textureId = {};
|
||||
if (!m_backend.CreateTextureDescriptor(
|
||||
device,
|
||||
texture,
|
||||
outCpuHandle,
|
||||
outGpuHandle,
|
||||
outTextureId);
|
||||
&outRegistration.cpuHandle,
|
||||
&outRegistration.gpuHandle,
|
||||
&textureId)) {
|
||||
outRegistration = {};
|
||||
return false;
|
||||
}
|
||||
|
||||
outRegistration.texture.nativeHandle = (std::uintptr_t)textureId;
|
||||
outRegistration.texture.width = texture != nullptr ? texture->GetWidth() : 0u;
|
||||
outRegistration.texture.height = texture != nullptr ? texture->GetHeight() : 0u;
|
||||
outRegistration.texture.kind = ::XCEngine::UI::UITextureHandleKind::ImGuiDescriptor;
|
||||
return outRegistration.IsValid();
|
||||
}
|
||||
|
||||
void FreeTextureDescriptor(
|
||||
D3D12_CPU_DESCRIPTOR_HANDLE cpuHandle,
|
||||
D3D12_GPU_DESCRIPTOR_HANDLE gpuHandle) override {
|
||||
m_backend.FreeTextureDescriptor(cpuHandle, gpuHandle);
|
||||
void FreeTextureDescriptor(const UITextureRegistration& registration) override {
|
||||
m_backend.FreeTextureDescriptor(registration.cpuHandle, registration.gpuHandle);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user