Merge branch 'release/2025.07' of https://github.com/secondlife/viewer

master
Ansariel 2025-09-30 17:27:38 +02:00
commit df94d745c5
4 changed files with 40 additions and 40 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

@ -47,8 +47,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;
}
};
@ -102,25 +116,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

@ -965,7 +965,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);