diff options
| author | Palmer <palmer@lindenlab.com> | 2009-11-11 15:16:49 -0800 | 
|---|---|---|
| committer | Palmer <palmer@lindenlab.com> | 2009-11-11 15:16:49 -0800 | 
| commit | 6f3536d5979efa6db28098056ab5e3a158020225 (patch) | |
| tree | aae087995fa1c3df3cebbdf345fca7a2e7c1b548 /indra/llrender/llimagegl.h | |
| parent | 7fa698252060a72be6b5ebc52f0ff01bcea6134c (diff) | |
| parent | 25d8cf689aa04a1bd4ebb336714730d29040d05c (diff) | |
Merged in viewer 2 changes, adjusted xui problems, added mesh folder type and more mesh inventory type info
Diffstat (limited to 'indra/llrender/llimagegl.h')
| -rw-r--r-- | indra/llrender/llimagegl.h | 85 | 
1 files changed, 60 insertions, 25 deletions
| diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index a094605607..937065043c 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -47,7 +47,6 @@ class LLTextureAtlas ;  #define MEGA_BYTES_TO_BYTES(x) ((x) << 20)  //============================================================================ -  class LLImageGL : public LLRefCount  {  	friend class LLTexUnit; @@ -63,6 +62,7 @@ public:  	BOOL updateBindStats(S32 tex_mem) const ;  	F32 getTimePassedSinceLastBound(); +	void forceUpdateBindStats(void) const;  	// needs to be called every frame  	static void updateStats(F32 current_time); @@ -71,8 +71,9 @@ public:  	static void destroyGL(BOOL save_state = TRUE);  	static void restoreGL(); -	// Sometimes called externally for textures not using LLImageGL (should go away...) -	static S32 updateBoundTexMem(const S32 delta); +	// Sometimes called externally for textures not using LLImageGL (should go away...)	 +	static S32 updateBoundTexMem(const S32 mem, const S32 ncomponents, S32 category) ; +	  	static bool checkSize(S32 width, S32 height);  	//for server side use only. @@ -91,6 +92,7 @@ protected:  	virtual ~LLImageGL();  	void analyzeAlpha(const void* data_in, S32 w, S32 h); +	void calcAlphaChannelOffsetAndStride();  public:  	virtual void dump();	// debugging info to llinfos @@ -105,14 +107,15 @@ public:  	static void setManualImage(U32 target, S32 miplevel, S32 intformat, S32 width, S32 height, U32 pixformat, U32 pixtype, const void *pixels);  	BOOL createGLTexture() ; -	BOOL createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0); +	BOOL createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE,  +		S32 category = sMaxCatagories - 1);  	BOOL createGLTexture(S32 discard_level, const U8* data, BOOL data_hasmips = FALSE, S32 usename = 0);  	void setImage(const LLImageRaw* imageraw);  	void setImage(const U8* data_in, BOOL data_hasmips = FALSE);  	BOOL setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height, BOOL force_fast_update = FALSE);  	BOOL setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height, BOOL force_fast_update = FALSE);  	BOOL setSubImageFromFrameBuffer(S32 fb_x, S32 fb_y, S32 x_pos, S32 y_pos, S32 width, S32 height); -	BOOL setDiscardLevel(S32 discard_level); +	  	// Read back a raw image for this discard level, if it exists  	BOOL readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compressed_ok) const;  	void destroyGLTexture(); @@ -131,6 +134,7 @@ public:  	S32  getBytes(S32 discard_level = -1) const;  	S32  getMipBytes(S32 discard_level = -1) const;  	BOOL getBoundRecently() const; +	BOOL isJustBound() const;  	LLGLenum getPrimaryFormat() const { return mFormatPrimary; }  	LLGLenum getFormatType() const { return mFormatType; } @@ -150,8 +154,6 @@ public:  	BOOL getUseMipMaps() const { return mUseMipMaps; }  	void setUseMipMaps(BOOL usemips) { mUseMipMaps = usemips; }	 -	BOOL isValidForSculpt(S32 discard_level, S32 image_width, S32 image_height, S32 ncomponents) ; -  	void updatePickMask(S32 width, S32 height, const U8* data_in);  	BOOL getMask(const LLVector2 &tc); @@ -178,7 +180,7 @@ public:  	void init(BOOL usemipmaps);  	virtual void cleanup(); // Clean up the LLImageGL so it can be reinitialized.  Be careful when using this in derived class destructors -	void setNeedsAlphaAndPickMask(BOOL need_mask) {mNeedsAlphaAndPickMask = need_mask;} +	void setNeedsAlphaAndPickMask(BOOL need_mask);  	BOOL preAddToAtlas(S32 discard_level, const LLImageRaw* raw_image);  	void postAddToAtlas() ;	 @@ -187,7 +189,7 @@ public:  	// Various GL/Rendering options  	S32 mTextureMemory;  	mutable F32  mLastBindTime;	// last time this was bound, by discard level - +	  private:  	LLPointer<LLImageRaw> mSaveData; // used for destroyGL/restoreGL  	U8* mPickMask;  //downsampled bitmap approximation of alpha channel.  NULL if no alpha channel @@ -197,13 +199,15 @@ private:  	BOOL mIsMask;  	BOOL mNeedsAlphaAndPickMask; -	 +	S8   mAlphaStride ; +	S8   mAlphaOffset ; +  	bool     mGLTextureCreated ;  	LLGLuint mTexName;  	U16      mWidth;  	U16      mHeight;	  	S8       mCurrentDiscardLevel; - +	  	S8       mDiscardLevelInAtlas;  	U32      mTexelsInAtlas ;  	U32      mTexelsInGLTexture; @@ -233,7 +237,7 @@ public:  	static S32 sCount;  	static F32 sLastFrameTime; - +	  	static LLGLuint sCurrentBoundTextures[MAX_GL_TEXTURE_UNITS]; // Currently bound texture ID  	// Global memory statistics @@ -246,30 +250,61 @@ public:  	static LLImageGL* sDefaultGLTexture ;	  	static BOOL sAutomatedTest; -#if !LL_RELEASE_FOR_DOWNLOAD +#if DEBUG_MISS +	BOOL mMissed; // Missed on last bind? +	BOOL getMissed() const { return mMissed; }; +#else +	BOOL getMissed() const { return FALSE; }; +#endif + +public: +	static void initClass(S32 num_catagories) ; +	static void cleanupClass() ; +private: +	static S32 sMaxCatagories ; + +	//the flag to allow to call readBackRaw(...). +	//can be removed if we do not use that function at all. +	static BOOL sAllowReadBackRaw ; +// +//**************************************************************************************************** +//The below for texture auditing use only +//**************************************************************************************************** +private: +	S32 mCategory ; +public:		 +	void setCategory(S32 category) ; +	S32  getCategory()const {return mCategory ;} +  	//for debug use: show texture size distribution   	//---------------------------------------- -	static LLPointer<LLImageGL> sDefaultTexturep; //default texture to replace normal textures +	static LLPointer<LLImageGL> sHighlightTexturep; //default texture to replace normal textures  	static std::vector<S32> sTextureLoadedCounter ;  	static std::vector<S32> sTextureBoundCounter ;  	static std::vector<S32> sTextureCurBoundCounter ;  	static S32 sCurTexSizeBar ;  	static S32 sCurTexPickSize ; -	 + +	static void setHighlightTexture(S32 category) ;  	static S32 getTextureCounterIndex(U32 val) ; -	static void incTextureCounter(U32 val) ; -	static void decTextureCounter(U32 val) ; -	static void setCurTexSizebar(S32 index) ; +	static void incTextureCounter(U32 val, S32 ncomponents, S32 category) ; +	static void decTextureCounter(U32 val, S32 ncomponents, S32 category) ; +	static void setCurTexSizebar(S32 index, BOOL set_pick_size = TRUE) ;  	static void resetCurTexSizebar();  	//---------------------------------------- -#endif -#if DEBUG_MISS -	BOOL mMissed; // Missed on last bind? -	BOOL getMissed() const { return mMissed; }; -#else -	BOOL getMissed() const { return FALSE; }; -#endif +	//for debug use: show texture category distribution  +	//----------------------------------------		 +	 +	static std::vector<S32> sTextureMemByCategory; +	static std::vector<S32> sTextureMemByCategoryBound ; +	static std::vector<S32> sTextureCurMemByCategoryBound ; +	//----------------------------------------	 +//**************************************************************************************************** +//End of definitions for texture auditing use only +//**************************************************************************************************** +  }; +extern BOOL gAuditTexture;  #endif // LL_LLIMAGEGL_H | 
