#if defined(PXR_METAL_SUPPORT_ENABLED)
#include "pxr/imaging/hgiMetal/hgi.h"
#include "pxr/imaging/hgiInterop/metal.h"
-#elif defined(PXR_VULKAN_SUPPORT_ENABLED)
- #include "pxr/imaging/hgiVulkan/hgi.h"
- #include "pxr/imaging/hgiInterop/vulkan.h"
#else
#include "pxr/imaging/hgiInterop/opengl.h"
#endif
+#if defined(PXR_VULKAN_SUPPORT_ENABLED)
+ #include "pxr/imaging/hgiVulkan/hgi.h"
+ #include "pxr/imaging/hgiInterop/vulkan.h"
+#endif
PXR_NAMESPACE_OPEN_SCOPE
{
TfToken const& srcApi = srcHgi->GetAPIName();
+ if (dstApi != HgiTokens->OpenGL) {
+ TF_CODING_ERROR("Unsupported destination Hgi backend: %s", dstApi.GetText());
+ return;
+ }
+
#if defined(PXR_METAL_SUPPORT_ENABLED)
- if (srcApi==HgiTokens->Metal && dstApi==HgiTokens->OpenGL) {
+ if (srcApi==HgiTokens->Metal) {
// Transfer Metal textures to OpenGL application
if (!_metalToOpenGL) {
_metalToOpenGL = std::make_unique<HgiInteropMetal>(srcHgi);
}
- _metalToOpenGL->CompositeToInterop(
- srcColor, srcDepth, dstFramebuffer, dstRegion);
- } else {
- TF_CODING_ERROR("Unsupported Hgi backend: %s", srcApi.GetText());
- }
-#elif defined(PXR_VULKAN_SUPPORT_ENABLED)
- if (srcApi==HgiTokens->Vulkan && dstApi==HgiTokens->OpenGL) {
- // Transfer Vulkan textures to OpenGL application
- if (!_vulkanToOpenGL) {
- _vulkanToOpenGL = std::make_unique<HgiInteropVulkan>(srcHgi);
- }
- _vulkanToOpenGL->CompositeToInterop(
+ return _metalToOpenGL->CompositeToInterop(
srcColor, srcDepth, dstFramebuffer, dstRegion);
- } else {
- TF_CODING_ERROR("Unsupported Hgi backend: %s", srcApi.GetText());
}
#else
- if (srcApi==HgiTokens->OpenGL && dstApi==HgiTokens->OpenGL) {
+ if (srcApi==HgiTokens->OpenGL) {
// Transfer OpenGL textures to OpenGL application
if (!_openGLToOpenGL) {
_openGLToOpenGL = std::make_unique<HgiInteropOpenGL>();
}
- _openGLToOpenGL->CompositeToInterop(
+ return _openGLToOpenGL->CompositeToInterop(
srcColor, srcDepth, dstFramebuffer, dstRegion);
- } else {
- TF_CODING_ERROR("Unsupported Hgi backend: %s", srcApi.GetText());
}
#endif
+
+#if defined(PXR_VULKAN_SUPPORT_ENABLED)
+ if (srcApi==HgiTokens->Vulkan) {
+ // Transfer Vulkan textures to OpenGL application
+ if (!_vulkanToOpenGL) {
+ _vulkanToOpenGL = std::make_unique<HgiInteropVulkan>(srcHgi);
+ }
+ return _vulkanToOpenGL->CompositeToInterop(
+ srcColor, srcDepth, dstFramebuffer, dstRegion);
+ }
+#endif
+
+ TF_CODING_ERROR("Unsupported source Hgi backend: %s", srcApi.GetText());
}
PXR_NAMESPACE_CLOSE_SCOPE