diff options
Diffstat (limited to 'indra/llrender/llgl.h')
| -rw-r--r-- | indra/llrender/llgl.h | 48 | 
1 files changed, 36 insertions, 12 deletions
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index d1bee00161..964495a3ab 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -88,7 +88,10 @@ public:  	// ARB Extensions  	BOOL mHasVertexBufferObject; +	BOOL mHasVertexArrayObject; +	BOOL mHasSync;  	BOOL mHasMapBufferRange; +	BOOL mHasFlushBufferRange;  	BOOL mHasPBuffer;  	BOOL mHasShaderObjects;  	BOOL mHasVertexShader; @@ -101,6 +104,7 @@ public:  	BOOL mHasDepthClamp;  	BOOL mHasTextureRectangle;  	BOOL mHasTextureMultisample; +	BOOL mHasTransformFeedback;  	S32 mMaxSampleMaskWords;  	S32 mMaxColorTextureSamples;  	S32 mMaxDepthTextureSamples; @@ -110,6 +114,7 @@ public:  	BOOL mHasAnisotropic;  	BOOL mHasARBEnvCombine;  	BOOL mHasCubeMap; +	BOOL mHasDebugOutput;  	// Vendor-specific extensions  	BOOL mIsATI; @@ -134,7 +139,10 @@ public:  	S32 mDriverVersionMinor;  	S32 mDriverVersionRelease;  	F32 mGLVersion; // e.g = 1.4 +	S32 mGLSLVersionMajor; +	S32 mGLSLVersionMinor;  	std::string mDriverVersionVendorString; +	std::string mGLVersionString;  	S32 mVRAM; // VRAM in MB  	S32 mGLMaxVertexRange; @@ -146,7 +154,6 @@ public:  	void printGLInfoString();  	void getGLInfo(LLSD& info); -	U32 getNumFBOFSAASamples(U32 desired_samples = 32);  	// In ALL CAPS  	std::string mGLVendor;  	std::string mGLVendorShort; @@ -250,7 +257,7 @@ public:  	static void dumpStates();  	static void checkStates(const std::string& msg = "");  	static void checkTextureChannels(const std::string& msg = ""); -	static void checkClientArrays(const std::string& msg = "", U32 data_mask = 0x0001); +	static void checkClientArrays(const std::string& msg = "", U32 data_mask = 0);  protected:  	static boost::unordered_map<LLGLenum, LLGLboolean> sStateMap; @@ -412,21 +419,38 @@ public:  	virtual void updateGL() = 0;  }; +const U32 FENCE_WAIT_TIME_NANOSECONDS = 1000;  //1 ms + +class LLGLFence +{ +public: +	virtual void placeFence() = 0; +	virtual bool isCompleted() = 0; +	virtual void wait() = 0; +}; + +class LLGLSyncFence : public LLGLFence +{ +public: +#ifdef GL_ARB_sync +	GLsync mSync; +#endif +	 +	LLGLSyncFence(); +	virtual ~LLGLSyncFence(); + +	void placeFence(); +	bool isCompleted(); +	void wait(); +}; +  extern LLMatrix4 gGLObliqueProjectionInverse;  #include "llglstates.h"  void init_glstates(); -void enable_vertex_weighting(const S32 index); -void disable_vertex_weighting(const S32 index); -void enable_binormals(const S32 index); -void disable_binormals(const S32 index); -void enable_cloth_weights(const S32 index); -void disable_cloth_weights(const S32 index); -void set_vertex_weights(const S32 index, const U32 stride, const F32 *weights); -void set_vertex_clothing_weights(const S32 index, const U32 stride, const LLVector4 *weights); -void set_binormals(const S32 index, const U32 stride, const LLVector3 *binormals); -void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific ); + +void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific, std::string* version_string );  extern BOOL gClothRipple;  extern BOOL gHeadlessClient;  | 
