Merge branch 'release/2025.07' into develop
commit
bdf942b94a
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue