summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorruslantproductengine <ruslantproductengine@lindenlab.com>2016-04-21 12:47:49 +0300
committerruslantproductengine <ruslantproductengine@lindenlab.com>2016-04-21 12:47:49 +0300
commit503dc6ee656bdf579107ff9712ae8e960dd91100 (patch)
tree43ddf574dc7384425e2043330ad811fee577ebf9 /indra
parentdd0d9319d94588b7575e029e1bfe9fdc7d415a21 (diff)
MAINT-6317 [QuickGraphics-RC] Some rigged mesh attachments render fully on jellybaby avatars when ALM is enabled
FIXED - remove global identifier for the black texture - add black texture 2x2x3 localy on apllication startup - add special flag to LLViewerFetchedTexture for protect from removing
Diffstat (limited to 'indra')
-rw-r--r--indra/llcommon/indra_constants.cpp1
-rw-r--r--indra/llcommon/indra_constants.h2
-rw-r--r--indra/newview/llappviewer.h1
-rw-r--r--indra/newview/lldrawpoolavatar.cpp10
-rw-r--r--indra/newview/llviewertexture.cpp1
-rw-r--r--indra/newview/llviewertexture.h6
-rw-r--r--indra/newview/llviewertexturelist.cpp8
7 files changed, 18 insertions, 11 deletions
diff --git a/indra/llcommon/indra_constants.cpp b/indra/llcommon/indra_constants.cpp
index 1d094cd4f4..60721977cd 100644
--- a/indra/llcommon/indra_constants.cpp
+++ b/indra/llcommon/indra_constants.cpp
@@ -68,4 +68,3 @@ const LLUUID TERRAIN_ROCK_DETAIL ("53a2f406-4895-1d13-d541-d2e3b86bc19c"); // V
const LLUUID DEFAULT_WATER_NORMAL ("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); // VIEWER
-const LLUUID IMG_BLACK_SQUARE ("3b39cc01-c2d1-e194-1181-e4404978b20c"); // On dataserver
diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h
index 6d39aef32e..02f063f5e8 100644
--- a/indra/llcommon/indra_constants.h
+++ b/indra/llcommon/indra_constants.h
@@ -205,8 +205,6 @@ LL_COMMON_API extern const LLUUID TERRAIN_ROCK_DETAIL;
LL_COMMON_API extern const LLUUID DEFAULT_WATER_NORMAL;
-LL_COMMON_API extern const LLUUID IMG_BLACK_SQUARE;
-
// radius within which a chat message is fully audible
const F32 CHAT_NORMAL_RADIUS = 20.f;
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 539881c80e..b5e674bd7b 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -410,6 +410,7 @@ extern BOOL gPrintMessagesThisFrame;
extern LLUUID gSunTextureID;
extern LLUUID gMoonTextureID;
+extern LLUUID gBlackSquareID;
extern BOOL gRandomizeFramerate;
extern BOOL gPeriodicSlowFrame;
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index d4f37e51ef..f44e19dbe4 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -50,6 +50,7 @@
#include "llrendersphere.h"
#include "llviewerpartsim.h"
#include "llviewercontrol.h" // for gSavedSettings
+#include "llviewertexturelist.h"
static U32 sDataMask = LLDrawPoolAvatar::VERTEX_DATA_MASK;
static U32 sBufferUsage = GL_STREAM_DRAW_ARB;
@@ -63,6 +64,7 @@ BOOL LLDrawPoolAvatar::sSkipTransparent = FALSE;
S32 LLDrawPoolAvatar::sDiffuseChannel = 0;
F32 LLDrawPoolAvatar::sMinimumAlpha = 0.2f;
+LLUUID gBlackSquareID;
static bool is_deferred_render = false;
static bool is_post_deferred_render = false;
@@ -1811,12 +1813,8 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
LLViewerTexture* specular = NULL;
if (LLPipeline::sImpostorRender)
{
- std::vector<LLViewerFetchedTexture*> found;
- LLViewerTextureManager::findFetchedTextures(IMG_BLACK_SQUARE, found);
- if (1 <= found.size())
- {
- specular = found[0];
- }
+ specular = LLViewerTextureManager::findFetchedTexture(gBlackSquareID, TEX_LIST_DISCARD);
+ llassert(NULL != specular);
}
else
{
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index e2b8ff8e80..5a38ab5c9d 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1117,6 +1117,7 @@ void LLViewerFetchedTexture::init(bool firstinit)
mLastCallBackActiveTime = 0.f;
mForceCallbackFetch = FALSE;
mInDebug = FALSE;
+ mUnremovable = FALSE;
mFTType = FTT_UNKNOWN;
}
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index a3f8db6907..8017d82604 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -346,7 +346,10 @@ public:
bool updateFetch();
bool setDebugFetching(S32 debug_level);
- bool isInDebug() {return mInDebug;}
+ bool isInDebug() const { return mInDebug; }
+
+ void setUnremovable(BOOL value) { mUnremovable = value; }
+ bool isUnremovable() const { return mUnremovable; }
void clearFetchedResults(); //clear all fetched results, for debug use.
@@ -435,6 +438,7 @@ private:
private:
BOOL mFullyLoaded;
BOOL mInDebug;
+ BOOL mUnremovable;
BOOL mInFastCacheList;
BOOL mForceCallbackFetch;
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 9ee5ed758f..be80fab8d2 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -184,6 +184,12 @@ void LLViewerTextureList::doPreloadImages()
mImagePreloads.insert(image);
}
+ LLPointer<LLImageRaw> img_blak_square_tex(new LLImageRaw(2, 2, 3));
+ memset(img_blak_square_tex->getData(), 0, img_blak_square_tex->getDataSize());
+ LLPointer<LLViewerFetchedTexture> img_blak_square(new LLViewerFetchedTexture(img_blak_square_tex, FTT_DEFAULT, FALSE));
+ gBlackSquareID = img_blak_square->getID();
+ img_blak_square->setUnremovable(TRUE);
+ addImage(img_blak_square, TEX_LIST_DISCARD);
}
static std::string get_texture_list_name()
@@ -854,7 +860,7 @@ void LLViewerTextureList::updateImagesDecodePriorities()
LLPointer<LLViewerFetchedTexture> imagep = iter->second;
++iter; // safe to increment now
- if(imagep->isInDebug())
+ if(imagep->isInDebug() || imagep->isUnremovable())
{
update_counter--;
continue; //is in debug, ignore.