diff --git a/cmake/defaults/Packages.cmake b/cmake/defaults/Packages.cmake index 1b69cad..9494278 100644 --- a/cmake/defaults/Packages.cmake +++ b/cmake/defaults/Packages.cmake @@ -178,7 +178,12 @@ if (PXR_BUILD_IMAGING) if (POLICY CMP0072) cmake_policy(SET CMP0072 OLD) endif() + set(previous_CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK}) + if(APPLE) # Must find Apple OpenGL, not XQuartz OpenGL + set(CMAKE_FIND_FRAMEWORK FIRST) + endif() find_package(OpenGL REQUIRED) + set(CMAKE_FIND_FRAMEWORK ${previous_CMAKE_FIND_FRAMEWORK}) add_definitions(-DPXR_GL_SUPPORT_ENABLED) endif() # --Metal @@ -155,7 +160,8 @@ if (PXR_BUILD_IMAGING) # --OpenImageIO if (PXR_BUILD_OPENIMAGEIO_PLUGIN) set(REQUIRES_Imath TRUE) - find_package(OpenImageIO REQUIRED) + find_package(OpenImageIO CONFIG REQUIRED) + set(OIIO_LIBRARIES OpenImageIO::OpenImageIO) add_definitions(-DPXR_OIIO_PLUGIN_ENABLED) if (OIIO_idiff_BINARY) set(IMAGE_DIFF_TOOL ${OIIO_idiff_BINARY} CACHE STRING "Uses idiff for image diffing") @@ -189,4 +195,4 @@ if (PXR_BUILD_IMAGING) - if (EXISTS $ENV{VULKAN_SDK}) + if (0) # Prioritize the VULKAN_SDK includes and packages before any system # installed headers. This is to prevent linking against older SDKs # that may be installed by the OS. @@ -215,8 +221,12 @@ if (PXR_BUILD_IMAGING) endif() - add_definitions(-DPXR_VULKAN_SUPPORT_ENABLED) - else() - message(FATAL_ERROR "VULKAN_SDK not valid") endif() + add_definitions(-DPXR_VULKAN_SUPPORT_ENABLED) + find_package(Vulkan REQUIRED) + find_package(unofficial-shaderc CONFIG REQUIRED) + find_package(VulkanMemoryAllocator CONFIG REQUIRED) + list(APPEND VULKAN_LIBS Vulkan::Vulkan) + list(APPEND VULKAN_LIBS unofficial::shaderc::shaderc) + list(APPEND VULKAN_LIBS GPUOpen::VulkanMemoryAllocator) endif() # --Opensubdiv diff --git a/pxr/imaging/hgiVulkan/CMakeLists.txt b/pxr/imaging/hgiVulkan/CMakeLists.txt index 00ad75448..dff475436 100644 --- a/pxr/imaging/hgiVulkan/CMakeLists.txt +++ b/pxr/imaging/hgiVulkan/CMakeLists.txt @@ -40,8 +40,7 @@ pxr_library(hgiVulkan shaderProgram shaderSection texture - vk_mem_alloc PUBLIC_HEADERS api.h vulkan.h diff --git a/pxr/imaging/hgiVulkan/device.cpp b/pxr/imaging/hgiVulkan/device.cpp index 08bf8e0a7..bfc368169 100644 --- a/pxr/imaging/hgiVulkan/device.cpp +++ b/pxr/imaging/hgiVulkan/device.cpp @@ -11,7 +11,8 @@ #include "pxr/imaging/hgiVulkan/hgi.h" #include "pxr/imaging/hgiVulkan/instance.h" #include "pxr/imaging/hgiVulkan/pipelineCache.h" -#include "pxr/imaging/hgiVulkan/vk_mem_alloc.h" +#define VMA_IMPLEMENTATION +#include #include "pxr/base/tf/diagnostic.h" diff --git a/pxr/imaging/hgiVulkan/vulkan.h b/pxr/imaging/hgiVulkan/vulkan.h index 1f527b9cb..b5ffd314f 100644 --- a/pxr/imaging/hgiVulkan/vulkan.h +++ b/pxr/imaging/hgiVulkan/vulkan.h @@ -24,7 +24,7 @@ #define VK_EXTERNAL_MEMORY_HANDLE_AUTO 0 #endif -#include "pxr/imaging/hgiVulkan/vk_mem_alloc.h" +#include // Use the default allocator (nullptr) inline VkAllocationCallbacks* diff --git a/pxr/imaging/plugin/hioOiio/CMakeLists.txt b/pxr/imaging/plugin/hioOiio/CMakeLists.txt index 0a055b7..de4b73a 100644 --- a/pxr/imaging/plugin/hioOiio/CMakeLists.txt +++ b/pxr/imaging/plugin/hioOiio/CMakeLists.txt @@ -7,6 +7,7 @@ if (NOT ${PXR_BUILD_GPU_SUPPORT}) return() endif() +if(0) # No need because OpenImageIO::OpenImageIO already declare its transitive dependencies correctly # Use the import targets set by Imath's package config if (Imath_FOUND) set(__OIIO_IMATH_LIBS "Imath::Imath") @@ -14,6 +15,7 @@ else() set(__OIIO_IMATH_INCLUDE ${OPENEXR_INCLUDE_DIRS}) set(__OIIO_IMATH_LIBS ${OPENEXR_LIBRARIES}) endif() +endif() pxr_plugin(hioOiio LIBRARIES diff --git a/pxr/pxrConfig.cmake.in b/pxr/pxrConfig.cmake.in index a7e566bac..559f50b9c 100644 --- a/pxr/pxrConfig.cmake.in +++ b/pxr/pxrConfig.cmake.in @@ -18,6 +18,25 @@ set(PXR_VERSION "@PXR_VERSION@") include(CMakeFindDependencyMacro) +if(@PXR_BUILD_IMAGING@) + if(@PXR_BUILD_OPENIMAGEIO_PLUGIN@) + find_dependency(OpenImageIO CONFIG) + endif() + if(@PXR_ENABLE_GL_SUPPORT@) + find_dependency(OpenGL REQUIRED) + endif() + if(@PXR_ENABLE_VULKAN_SUPPORT@) + if (NOT DEFINED Vulkan_DIR) + if (NOT [[@Vulkan_DIR@]] STREQUAL "") + set(Vulkan_DIR [[@Vulkan_DIR@]]) + endif() + endif() + find_dependency(Vulkan REQUIRED) + find_dependency(unofficial-shaderc CONFIG) + find_dependency(VulkanMemoryAllocator CONFIG) + endif() +endif() + # If Python support was enabled for this USD build, find the import # targets by invoking the appropriate FindPython module. Use the same # LIBRARY and INCLUDE_DIR settings from the original build if they @@ -101,7 +120,7 @@ if(@Imath_FOUND@) set(Imath_DIR [[@Imath_DIR@]]) endif() endif() - find_dependency(Imath) + find_dependency(Imath CONFIG) endif() # If this build is using a custom work implementation, find the package @@ -115,14 +134,14 @@ if(NOT "@PXR_WORK_IMPL_PACKAGE@" STREQUAL "") find_dependency(@PXR_WORK_IMPL_PACKAGE@) endif() -include("${PXR_CMAKE_DIR}/cmake/pxrTargets.cmake") +include("${PXR_CMAKE_DIR}/pxrTargets.cmake") if (TARGET usd_ms) set(libs "usd_ms") else() set(libs "@PXR_ALL_LIBS@") endif() set(PXR_LIBRARIES "") -set(PXR_INCLUDE_DIRS "${PXR_CMAKE_DIR}/include") +set(PXR_INCLUDE_DIRS "${PXR_CMAKE_DIR}/../../include") string(REPLACE " " ";" libs "${libs}") foreach(lib ${libs}) get_target_property(location ${lib} LOCATION)