diff --git a/build_files/build_environment/cmake/usd.cmake b/build_files/build_environment/cmake/usd.cmake index 96cbf535314..0d28f4f7fa5 100644 --- a/build_files/build_environment/cmake/usd.cmake +++ b/build_files/build_environment/cmake/usd.cmake @@ -158,7 +158,10 @@ ExternalProject_Add(external_usd ${PATCH_DIR}/usd_no_vulkan_sdk.diff && ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < - ${PATCH_DIR}/usd_storm_vulkan.diff + ${PATCH_DIR}/usd_storm_vulkan.diff && + ${PATCH_CMD} -p 1 -d + ${BUILD_DIR}/usd/src/external_usd < + ${PATCH_DIR}/usd_3666_vulkan_amd.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/usd -Wno-dev diff --git a/build_files/build_environment/patches/usd_3666_vulkan_amd.diff b/build_files/build_environment/patches/usd_3666_vulkan_amd.diff new file mode 100644 index 00000000000..dfd3b0a291f --- /dev/null +++ b/build_files/build_environment/patches/usd_3666_vulkan_amd.diff @@ -0,0 +1,19 @@ +diff --git a/pxr/imaging/hgiVulkan/computeCmds.cpp b/pxr/imaging/hgiVulkan/computeCmds.cpp +index cbf9704fd..74a81c787 100644 +--- a/pxr/imaging/hgiVulkan/computeCmds.cpp ++++ b/pxr/imaging/hgiVulkan/computeCmds.cpp +@@ -119,10 +119,11 @@ HgiVulkanComputeCmds::Dispatch(int dimX, int dimY) + // Determine device's num compute work group limits + const VkPhysicalDeviceLimits limits = + _hgi->GetCapabilities()->vkDeviceProperties.limits; ++ const uint32_t maxAllowedLimit = (1 << 31) - 1; + const GfVec3i maxNumWorkGroups = GfVec3i( +- limits.maxComputeWorkGroupCount[0], +- limits.maxComputeWorkGroupCount[1], +- limits.maxComputeWorkGroupCount[2]); ++ std::min(maxAllowedLimit, limits.maxComputeWorkGroupCount[0]), ++ std::min(maxAllowedLimit, limits.maxComputeWorkGroupCount[1]), ++ std::min(maxAllowedLimit, limits.maxComputeWorkGroupCount[2])); + + if (numWorkGroupsX > maxNumWorkGroups[0]) { + TF_WARN("Max number of work group available from device is %i, larger "