diff --git a/cmake/modules/FindRpr.cmake b/cmake/modules/FindRpr.cmake index 0ab9befa0..a1399abe3 100644 --- a/cmake/modules/FindRpr.cmake +++ b/cmake/modules/FindRpr.cmake @@ -31,6 +31,8 @@ elseif(RPR_SDK_PLATFORM STREQUAL "ubuntu18.04") SET_RPR_VARIABLES(binUbuntu18) elseif(RPR_SDK_PLATFORM STREQUAL "ubuntu20.04") SET_RPR_VARIABLES(binUbuntu18) +elseif(RPR_SDK_PLATFORM STREQUAL "ubuntu22.04") + SET_RPR_VARIABLES(binUbuntu18) else() SET_RPR_VARIABLES(binCentOS7) endif() diff --git a/pxr/imaging/plugin/hdRpr/rprApi.cpp b/pxr/imaging/plugin/hdRpr/rprApi.cpp index 15cc72217..e78a45bce 100644 --- a/pxr/imaging/plugin/hdRpr/rprApi.cpp +++ b/pxr/imaging/plugin/hdRpr/rprApi.cpp @@ -4116,7 +4116,10 @@ Don't show this message again? if (!aov) { HdRprApiAov* newAov = nullptr; std::function aovCustomDestructor; - + if (aovName == HdAovTokens->primId && RprUsdIsHybrid(m_rprContextMetadata.pluginType)) { + TF_RUNTIME_ERROR("Failed to create primId AOV: HybridPro does not support this AOV type"); + return nullptr; + } if (aovName == HdAovTokens->color) { auto rawColorAov = GetAov(HdRprAovTokens->rawColor, width, height, HdFormatFloat32Vec4); if (!rawColorAov) { diff --git a/pxr/imaging/rprUsd/contextHelpers.cpp b/pxr/imaging/rprUsd/contextHelpers.cpp index 0791bd174..06f9c1a86 100644 --- a/pxr/imaging/rprUsd/contextHelpers.cpp +++ b/pxr/imaging/rprUsd/contextHelpers.cpp @@ -151,6 +151,7 @@ const std::map kPluginLibNames = { #elif defined __linux__ {kPluginNorthstar, "libNorthstar64.so"}, {kPluginHybrid, "Hybrid.so"}, + {kPluginHybridPro, "HybridPro.so"}, #elif defined __APPLE__ {kPluginNorthstar, "libNorthstar64.dylib"}, #endif @@ -395,6 +396,12 @@ rpr::Context* RprUsdCreateContext(RprUsdContextMetadata* metadata) { contextProperties.push_back(nullptr); +#if LINUX + if (metadata->pluginType == kPluginHybridPro){ + std::setlocale(LC_NUMERIC, "en_US.UTF-8"); // is needed for HybridPro to correctly compile shaders + } +#endif + rpr::Status status; rpr::Context* context = rpr::Context::Create(RPR_API_VERSION, &pluginID, 1, creationFlags, contextProperties.data(), cachePath.c_str(), &status); @@ -438,6 +445,9 @@ RprUsdDevicesInfo RprUsdGetDevicesInfo(RprUsdPluginType pluginType) { ret.cpu.numThreads = 0; if (!RprUsdIsCpuOnly()) { +#if LINUX + std::setlocale(LC_NUMERIC, "en_US.UTF-8"); // is needed for HybridPro to correctly compile shaders +#endif std::string name = GetGpuName(pluginID, RPR_CREATION_FLAGS_ENABLE_GPU0, RPR_CONTEXT_GPU0_NAME, cachePath.c_str()); if (!name.empty()) { ret.gpus.push_back({ 0, name });