Merge branch 'release/2025.07' into develop

master
Bennett Goble 2025-09-29 09:25:01 -07:00
commit bdf942b94a
9 changed files with 74 additions and 47 deletions

View File

@ -210,8 +210,8 @@ void LLTexUnit::bindFast(LLTexture* texture)
if (gl_tex->mTexOptionsDirty)
{
gl_tex->mTexOptionsDirty = false;
setTextureAddressModeFast(gl_tex->mAddressMode);
setTextureFilteringOptionFast(gl_tex->mFilterOption);
setTextureAddressModeFast(gl_tex->mAddressMode, gl_tex->getTarget());
setTextureFilteringOptionFast(gl_tex->mFilterOption, gl_tex->getTarget());
}
}
@ -467,16 +467,16 @@ void LLTexUnit::setTextureAddressMode(eTextureAddressMode mode)
activate();
setTextureAddressModeFast(mode);
setTextureAddressModeFast(mode, mCurrTexType);
}
void LLTexUnit::setTextureAddressModeFast(eTextureAddressMode mode)
void LLTexUnit::setTextureAddressModeFast(eTextureAddressMode mode, eTextureType tex_type)
{
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_WRAP_S, sGLAddressMode[mode]);
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_WRAP_T, sGLAddressMode[mode]);
if (mCurrTexType == TT_CUBE_MAP)
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_WRAP_S, sGLAddressMode[mode]);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_WRAP_T, sGLAddressMode[mode]);
if (tex_type == TT_CUBE_MAP || tex_type == TT_CUBE_MAP_ARRAY || tex_type == TT_TEXTURE_3D)
{
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, sGLAddressMode[mode]);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_WRAP_R, sGLAddressMode[mode]);
}
}
@ -486,44 +486,44 @@ void LLTexUnit::setTextureFilteringOption(LLTexUnit::eTextureFilterOptions optio
gGL.flush();
setTextureFilteringOptionFast(option);
setTextureFilteringOptionFast(option, mCurrTexType);
}
void LLTexUnit::setTextureFilteringOptionFast(LLTexUnit::eTextureFilterOptions option)
void LLTexUnit::setTextureFilteringOptionFast(LLTexUnit::eTextureFilterOptions option, eTextureType tex_type)
{
if (option == TFO_POINT)
{
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_MAG_FILTER, GL_NEAREST);
}
else
{
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_MAG_FILTER, GL_LINEAR);
}
if (option >= TFO_TRILINEAR && mHasMipMaps)
{
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
}
else if (option >= TFO_BILINEAR)
{
if (mHasMipMaps)
{
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
}
else
{
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}
}
else
{
if (mHasMipMaps)
{
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
}
else
{
glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(sGLTextureType[tex_type], GL_TEXTURE_MIN_FILTER, GL_NEAREST);
}
}
@ -531,11 +531,11 @@ void LLTexUnit::setTextureFilteringOptionFast(LLTexUnit::eTextureFilterOptions o
{
if (LLImageGL::sGlobalUseAnisotropic && option == TFO_ANISOTROPIC)
{
glTexParameterf(sGLTextureType[mCurrTexType], GL_TEXTURE_MAX_ANISOTROPY, gGLManager.mMaxAnisotropy);
glTexParameterf(sGLTextureType[tex_type], GL_TEXTURE_MAX_ANISOTROPY, gGLManager.mMaxAnisotropy);
}
else
{
glTexParameterf(sGLTextureType[mCurrTexType], GL_TEXTURE_MAX_ANISOTROPY, 1.f);
glTexParameterf(sGLTextureType[tex_type], GL_TEXTURE_MAX_ANISOTROPY, 1.f);
}
}
}

View File

@ -209,14 +209,14 @@ public:
// make sure you want to permanently change the address mode for the bound texture.
void setTextureAddressMode(eTextureAddressMode mode);
// MUST already be active and bound
void setTextureAddressModeFast(eTextureAddressMode mode);
void setTextureAddressModeFast(eTextureAddressMode mode, eTextureType tex_type);
// Sets the filtering options used to sample the texture
// Warning: this stays set for the bound texture forever,
// make sure you want to permanently change the filtering for the bound texture.
void setTextureFilteringOption(LLTexUnit::eTextureFilterOptions option);
// MUST already be active and bound
void setTextureFilteringOptionFast(LLTexUnit::eTextureFilterOptions option);
void setTextureFilteringOptionFast(LLTexUnit::eTextureFilterOptions option, eTextureType tex_type);
static U32 getInternalType(eTextureType type);

View File

@ -342,8 +342,11 @@ void LLWebRTCImpl::init()
mWorkerThread->PostTask(
[this]()
{
mDeviceModule->EnableBuiltInAEC(false);
updateDevices();
if (mDeviceModule)
{
mDeviceModule->EnableBuiltInAEC(false);
updateDevices();
}
});
}
@ -449,6 +452,11 @@ void LLWebRTCImpl::unsetDevicesObserver(LLWebRTCDevicesObserver *observer)
// must be run in the worker thread.
void LLWebRTCImpl::workerDeployDevices()
{
if (!mDeviceModule)
{
return;
}
int16_t recordingDevice = RECORD_DEVICE_DEFAULT;
int16_t recording_device_start = 0;
@ -571,6 +579,11 @@ void LLWebRTCImpl::setRenderDevice(const std::string &id)
// updateDevices needs to happen on the worker thread.
void LLWebRTCImpl::updateDevices()
{
if (!mDeviceModule)
{
return;
}
int16_t renderDeviceCount = mDeviceModule->PlayoutDevices();
mPlayoutDeviceList.clear();
@ -1491,6 +1504,7 @@ void terminate()
if (gWebRTCImpl)
{
gWebRTCImpl->terminate();
delete gWebRTCImpl;
gWebRTCImpl = nullptr;
}
}

View File

@ -75,7 +75,7 @@ public:
LLWebRTCLogSink(LLWebRTCLogCallback* callback) : mCallback(callback) {}
// Destructor: close the log file
~LLWebRTCLogSink() override {}
~LLWebRTCLogSink() override { mCallback = nullptr; }
void OnLogMessage(const std::string& msg, webrtc::LoggingSeverity severity) override
{

View File

@ -3383,7 +3383,7 @@ LLSD LLAppViewer::getViewerInfo() const
info["FONT_SIZE_ADJUSTMENT"] = gSavedSettings.getF32("FontScreenDPI");
info["UI_SCALE"] = gSavedSettings.getF32("UIScaleFactor");
info["DRAW_DISTANCE"] = gSavedSettings.getF32("RenderFarClip");
info["NET_BANDWITH"] = gSavedSettings.getF32("ThrottleBandwidthKBPS");
info["NET_BANDWITH"] = LLViewerThrottle::getMaxBandwidthKbps();
info["LOD_FACTOR"] = gSavedSettings.getF32("RenderVolumeLODFactor");
info["RENDER_QUALITY"] = (F32)gSavedSettings.getU32("RenderQualityPerformance");
info["TEXTURE_MEMORY"] = LLSD::Integer(gGLManager.mVRAM);

View File

@ -44,8 +44,22 @@ class LLSearchHandler : public LLCommandHandler {
bool handle(const LLSD& tokens, const LLSD& query_map, const std::string& grid, LLMediaCtrl* web) {
const size_t parts = tokens.size();
// get the (optional) category for the search
std::string collection;
if (parts > 0)
{
collection = tokens[0].asString();
}
// get the (optional) search string
std::string search_text;
if (parts > 1)
{
search_text = tokens[1].asString();
}
// open the search floater and perform the requested search
LLFloaterReg::showInstance("search", tokens);
LLFloaterReg::showInstance("search", llsd::map("collection", collection,"query", search_text));
return true;
}
};
@ -84,25 +98,11 @@ void LLFloaterSearch::initiateSearch(const LLSD& tokens)
// substituted into the final URL using the logic from the original search.
subs["TYPE"] = "standard";
const size_t parts = tokens.size();
std::string collection = tokens.has("collection") ? tokens["collection"].asString() : "";
// get the (optional) category for the search
std::string collection;
if (parts > 0)
{
collection = tokens[0].asString();
}
std::string search_text = tokens.has("query") ? tokens["query"].asString() : "";
// get the (optional) search string
std::string search_text;
if (parts > 1)
{
search_text = tokens[1].asString();
}
// TODO: where does category get set? I cannot find a reference to
// it in internal docs - might be conflated with values in mSearchType
std::string category;
std::string category = tokens.has("category") ? tokens["category"].asString() : "";
if (mSearchType.find(category) != mSearchType.end())
{
subs["TYPE"] = category;

View File

@ -292,7 +292,14 @@ void LLVoiceClient::setHidden(bool hidden)
void LLVoiceClient::terminate()
{
if (mSpatialVoiceModule) mSpatialVoiceModule->terminate();
if (LLVivoxVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->terminate();
}
if (LLVivoxVoiceClient::instanceExists())
{
LLVivoxVoiceClient::getInstance()->terminate();
}
mSpatialVoiceModule = NULL;
m_servicePump = NULL;

View File

@ -691,7 +691,10 @@ LLVoiceDeviceList& LLWebRTCVoiceClient::getCaptureDevices()
void LLWebRTCVoiceClient::setCaptureDevice(const std::string& name)
{
mWebRTCDeviceInterface->setCaptureDevice(name);
if (mWebRTCDeviceInterface)
{
mWebRTCDeviceInterface->setCaptureDevice(name);
}
}
void LLWebRTCVoiceClient::setDevicesListUpdated(bool state)
{
@ -778,7 +781,10 @@ LLVoiceDeviceList& LLWebRTCVoiceClient::getRenderDevices()
void LLWebRTCVoiceClient::setRenderDevice(const std::string& name)
{
mWebRTCDeviceInterface->setRenderDevice(name);
if (mWebRTCDeviceInterface)
{
mWebRTCDeviceInterface->setRenderDevice(name);
}
}
void LLWebRTCVoiceClient::tuningStart()

View File

@ -858,7 +858,7 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY)
GLuint screenFormat = hdr ? GL_RGBA16F : GL_RGBA;
if (!mRT->screen.allocate(resX, resY, screenFormat)) return false;
if (!mRT->screen.allocate(resX, resY, GL_RGBA16F)) return false;
mRT->deferredScreen.shareDepthBuffer(mRT->screen);