diff options
Diffstat (limited to 'indra/llrender')
| -rw-r--r-- | indra/llrender/llfontregistry.cpp | 3 | ||||
| -rw-r--r-- | indra/llrender/llgl.cpp | 74 | ||||
| -rw-r--r-- | indra/llrender/llgl.h | 2 | ||||
| -rw-r--r-- | indra/llrender/llimagegl.cpp | 9 | ||||
| -rw-r--r-- | indra/llrender/llimagegl.h | 3 | ||||
| -rw-r--r-- | indra/llrender/llrender2dutils.h | 1 | 
6 files changed, 91 insertions, 1 deletions
| diff --git a/indra/llrender/llfontregistry.cpp b/indra/llrender/llfontregistry.cpp index dbe71e2882..33a33af160 100644 --- a/indra/llrender/llfontregistry.cpp +++ b/indra/llrender/llfontregistry.cpp @@ -45,6 +45,7 @@ bool font_desc_init_from_xml(LLXMLNodePtr node, LLFontDescriptor& desc);  bool init_from_xml(LLFontRegistry* registry, LLXMLNodePtr node);  const std::string MACOSX_FONT_PATH_LIBRARY = "/Library/Fonts/"; +const std::string MACOSX_FONT_SUPPLEMENTAL = "Supplemental/";  LLFontDescriptor::LLFontDescriptor():  	mStyle(0) @@ -473,6 +474,8 @@ LLFontGL *LLFontRegistry::createFont(const LLFontDescriptor& desc)  		font_paths.push_back(sys_path + *file_name_it);  #if LL_DARWIN  		font_paths.push_back(MACOSX_FONT_PATH_LIBRARY + *file_name_it); +		font_paths.push_back(MACOSX_FONT_PATH_LIBRARY + MACOSX_FONT_SUPPLEMENTAL + *file_name_it); +		font_paths.push_back(sys_path +  MACOSX_FONT_SUPPLEMENTAL + *file_name_it);  #endif  		bool is_ft_collection = (std::find(ft_collection_list.begin(), ft_collection_list.end(), *file_name_it) != ft_collection_list.end()); diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 604fb4e946..ee02a90b54 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -965,6 +965,80 @@ std::string LLGLManager::getRawGLString()  	return gl_string;  } +void LLGLManager::asLLSD(LLSD& info) +{ +	// Currently these are duplicates of fields in "system". +	info["gpu_vendor"] = mGLVendorShort; +	info["gpu_version"] = mDriverVersionVendorString; +	info["opengl_version"] = mGLVersionString; + +	info["vram"] = mVRAM; + +	// Extensions used by everyone +	info["has_multitexture"] = mHasMultitexture; +	info["has_ati_mem_info"] = mHasATIMemInfo; +	info["has_nvx_mem_info"] = mHasNVXMemInfo; +	info["num_texture_units"] = mNumTextureUnits; +	info["has_mip_map_generation"] = mHasMipMapGeneration; +	info["has_compressed_textures"] = mHasCompressedTextures; +	info["has_framebuffer_object"] = mHasFramebufferObject; +	info["max_samples"] = mMaxSamples; +	info["has_blend_func_separate"] = mHasBlendFuncSeparate; + +	// ARB Extensions +	info["has_vertex_buffer_object"] = mHasVertexBufferObject; +	info["has_vertex_array_object"] = mHasVertexArrayObject; +	info["has_sync"] = mHasSync; +	info["has_map_buffer_range"] = mHasMapBufferRange; +	info["has_flush_buffer_range"] = mHasFlushBufferRange; +	info["has_pbuffer"] = mHasPBuffer; +	info["has_shader_objects"] = mHasShaderObjects; +	info["has_vertex_shader"] = mHasVertexShader; +	info["has_fragment_shader"] = mHasFragmentShader; +	info["num_texture_image_units"] =  mNumTextureImageUnits; +	info["has_occlusion_query"] = mHasOcclusionQuery; +	info["has_timer_query"] = mHasTimerQuery; +	info["has_occlusion_query2"] = mHasOcclusionQuery2; +	info["has_point_parameters"] = mHasPointParameters; +	info["has_draw_buffers"] = mHasDrawBuffers; +	info["has_depth_clamp"] = mHasDepthClamp; +	info["has_texture_rectangle"] = mHasTextureRectangle; +	info["has_texture_multisample"] = mHasTextureMultisample; +	info["has_transform_feedback"] = mHasTransformFeedback; +	info["max_sample_mask_words"] = mMaxSampleMaskWords; +	info["max_color_texture_samples"] = mMaxColorTextureSamples; +	info["max_depth_texture_samples"] = mMaxDepthTextureSamples; +	info["max_integer_samples"] = mMaxIntegerSamples; + +	// Other extensions. +	info["has_anisotropic"] = mHasAnisotropic; +	info["has_arb_env_combine"] = mHasARBEnvCombine; +	info["has_cube_map"] = mHasCubeMap; +	info["has_debug_output"] = mHasDebugOutput; +	info["has_srgb_texture"] = mHassRGBTexture; +	info["has_srgb_framebuffer"] = mHassRGBFramebuffer; +    info["has_texture_srgb_decode"] = mHasTexturesRGBDecode; + +	// Vendor-specific extensions +	info["is_ati"] = mIsATI; +	info["is_nvidia"] = mIsNVIDIA; +	info["is_intel"] = mIsIntel; +	info["is_gf2or4mx"] = mIsGF2or4MX; +	info["is_gf3"] = mIsGF3; +	info["is_gf_gfx"] = mIsGFFX; +	info["ati_offset_vertical_lines"] = mATIOffsetVerticalLines; +	info["ati_old_driver"] = mATIOldDriver; + +	// Other fields +	info["has_requirements"] = mHasRequirements; +	info["has_separate_specular_color"] = mHasSeparateSpecularColor; +	info["debug_gpu"] = mDebugGPU; +	info["max_vertex_range"] = mGLMaxVertexRange; +	info["max_index_range"] = mGLMaxIndexRange; +	info["max_texture_size"] = mGLMaxTextureSize; +	info["gl_renderer"] = mGLRenderer; +} +  void LLGLManager::shutdownGL()  {  	if (mInited) diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index 91ef4e9102..966c4b3c77 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -165,6 +165,8 @@ public:  	void printGLInfoString();  	void getGLInfo(LLSD& info); +	void asLLSD(LLSD& info); +  	// In ALL CAPS  	std::string mGLVendor;  	std::string mGLVendorShort; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 3b6a49735e..0151d20128 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1386,6 +1386,15 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S  		return FALSE;  	} +	if (mHasExplicitFormat &&  +		((mFormatPrimary == GL_RGBA && mComponents < 4) || +		 (mFormatPrimary == GL_RGB  && mComponents < 3))) + +	{ +		LL_WARNS()  << "Incorrect format: " << std::hex << mFormatPrimary << " components: " << (U32)mComponents <<  LL_ENDL;		 +		mHasExplicitFormat = FALSE; +	} +  	if( !mHasExplicitFormat )  	{          switch (mComponents) diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h index 4f3d7eed0a..61ddc8d59b 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -133,6 +133,7 @@ public:  	S32  getMipBytes(S32 discard_level = -1) const;  	BOOL getBoundRecently() const;  	BOOL isJustBound() const; +	BOOL getHasExplicitFormat() const { return mHasExplicitFormat; }  	LLGLenum getPrimaryFormat() const { return mFormatPrimary; }  	LLGLenum getFormatType() const { return mFormatType; } @@ -197,7 +198,7 @@ private:  	U16 mPickMaskWidth;  	U16 mPickMaskHeight;  	S8 mUseMipMaps; -	S8 mHasExplicitFormat; // If false (default), GL format is f(mComponents) +	BOOL mHasExplicitFormat; // If false (default), GL format is f(mComponents)  	S8 mAutoGenMips;  	BOOL mIsMask; diff --git a/indra/llrender/llrender2dutils.h b/indra/llrender/llrender2dutils.h index 70ab006fd6..8c01784071 100644 --- a/indra/llrender/llrender2dutils.h +++ b/indra/llrender/llrender2dutils.h @@ -32,6 +32,7 @@  #include "llpointer.h"		// LLPointer<>  #include "llrect.h" +#include "llsingleton.h"  #include "llglslshader.h"  class LLColor4;  | 
