Add compression textbox. Don't compress local assets.
This commit is contained in:
@@ -27,239 +27,7 @@
|
|||||||
#ifndef LL_LLGLHEADERS_H
|
#ifndef LL_LLGLHEADERS_H
|
||||||
#define LL_LLGLHEADERS_H
|
#define LL_LLGLHEADERS_H
|
||||||
|
|
||||||
#if LL_SOLARIS
|
#if LL_MESA
|
||||||
# if defined(__sparc)
|
|
||||||
# define I_NEED_OS2_H // avoiding BOOL conflicts
|
|
||||||
# endif
|
|
||||||
# include "GL/gl.h"
|
|
||||||
# if defined(__sparc)
|
|
||||||
# undef I_NEED_OS2_H
|
|
||||||
# ifdef BOOL
|
|
||||||
# undef BOOL // now get rid of Xmd.h crap
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# include "GL/glx.h"
|
|
||||||
# define GL_GLEXT_PROTOTYPES 1
|
|
||||||
# include "GL/glext.h"
|
|
||||||
# include "GL/glx.h"
|
|
||||||
# define GLX_GLXEXT_PROTOTYPES 1
|
|
||||||
# include "GL/glxext.h"
|
|
||||||
//# define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB((const GLubyte*)(p))
|
|
||||||
# define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddress((const GLubyte*)(p))
|
|
||||||
// the X headers define 'Status'. Undefine to avoid confusion.
|
|
||||||
#undef Status
|
|
||||||
|
|
||||||
// The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly
|
|
||||||
// This header is distributed with SL. You'll find it in linden/libraries/include/GL/
|
|
||||||
# define __APPLE__
|
|
||||||
# include "GL/glh_extensions.h"
|
|
||||||
# undef __APPLE__
|
|
||||||
|
|
||||||
|
|
||||||
// GL_ARB_vertex_buffer_object
|
|
||||||
extern PFNGLBINDBUFFERARBPROC glBindBufferARB;
|
|
||||||
extern PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB;
|
|
||||||
extern PFNGLGENBUFFERSARBPROC glGenBuffersARB;
|
|
||||||
extern PFNGLISBUFFERARBPROC glIsBufferARB;
|
|
||||||
extern PFNGLBUFFERDATAARBPROC glBufferDataARB;
|
|
||||||
extern PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARB;
|
|
||||||
extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB;
|
|
||||||
extern PFNGLMAPBUFFERARBPROC glMapBufferARB;
|
|
||||||
extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB;
|
|
||||||
extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB;
|
|
||||||
extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB;
|
|
||||||
|
|
||||||
// GL_ARB_vertex_array_object
|
|
||||||
extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
|
|
||||||
extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
|
|
||||||
extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
|
|
||||||
extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
|
|
||||||
|
|
||||||
// GL_ARB_sync
|
|
||||||
extern PFNGLFENCESYNCPROC glFenceSync;
|
|
||||||
extern PFNGLISSYNCPROC glIsSync;
|
|
||||||
extern PFNGLDELETESYNCPROC glDeleteSync;
|
|
||||||
extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
|
|
||||||
extern PFNGLWAITSYNCPROC glWaitSync;
|
|
||||||
extern PFNGLGETINTEGER64VPROC glGetInteger64v;
|
|
||||||
extern PFNGLGETSYNCIVPROC glGetSynciv;
|
|
||||||
|
|
||||||
// GL_APPLE_flush_buffer_range
|
|
||||||
extern PFNGLBUFFERPARAMETERIAPPLEPROC glBufferParameteriAPPLE;
|
|
||||||
extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE;
|
|
||||||
|
|
||||||
// GL_ARB_map_buffer_range
|
|
||||||
extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
|
|
||||||
extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
|
|
||||||
|
|
||||||
// GL_ATI_vertex_array_object
|
|
||||||
extern PFNGLNEWOBJECTBUFFERATIPROC glNewObjectBufferATI;
|
|
||||||
extern PFNGLISOBJECTBUFFERATIPROC glIsObjectBufferATI;
|
|
||||||
extern PFNGLUPDATEOBJECTBUFFERATIPROC glUpdateObjectBufferATI;
|
|
||||||
extern PFNGLGETOBJECTBUFFERFVATIPROC glGetObjectBufferfvATI;
|
|
||||||
extern PFNGLGETOBJECTBUFFERIVATIPROC glGetObjectBufferivATI;
|
|
||||||
extern PFNGLFREEOBJECTBUFFERATIPROC glFreeObjectBufferATI;
|
|
||||||
extern PFNGLARRAYOBJECTATIPROC glArrayObjectATI;
|
|
||||||
extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glVertexAttribArrayObjectATI;
|
|
||||||
extern PFNGLGETARRAYOBJECTFVATIPROC glGetArrayObjectfvATI;
|
|
||||||
extern PFNGLGETARRAYOBJECTIVATIPROC glGetArrayObjectivATI;
|
|
||||||
extern PFNGLVARIANTARRAYOBJECTATIPROC glVariantObjectArrayATI;
|
|
||||||
extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC glGetVariantArrayObjectfvATI;
|
|
||||||
extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC glGetVariantArrayObjectivATI;
|
|
||||||
|
|
||||||
// GL_ARB_occlusion_query
|
|
||||||
extern PFNGLGENQUERIESARBPROC glGenQueriesARB;
|
|
||||||
extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB;
|
|
||||||
extern PFNGLISQUERYARBPROC glIsQueryARB;
|
|
||||||
extern PFNGLBEGINQUERYARBPROC glBeginQueryARB;
|
|
||||||
extern PFNGLENDQUERYARBPROC glEndQueryARB;
|
|
||||||
extern PFNGLGETQUERYIVARBPROC glGetQueryivARB;
|
|
||||||
extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB;
|
|
||||||
extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB;
|
|
||||||
|
|
||||||
// GL_ARB_point_parameters
|
|
||||||
extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB;
|
|
||||||
extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB;
|
|
||||||
|
|
||||||
// GL_ARB_shader_objects
|
|
||||||
extern PFNGLDELETEOBJECTARBPROC glDeleteShader;
|
|
||||||
extern PFNGLDELETEOBJECTARBPROC glDeleteProgram;
|
|
||||||
extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
|
|
||||||
extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
|
|
||||||
extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
|
|
||||||
extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
|
|
||||||
extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
|
|
||||||
extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
|
|
||||||
extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
|
|
||||||
extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
|
|
||||||
extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB;
|
|
||||||
extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
|
|
||||||
extern PFNGLUNIFORM2FARBPROC glUniform2fARB;
|
|
||||||
extern PFNGLUNIFORM3FARBPROC glUniform3fARB;
|
|
||||||
extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
|
|
||||||
extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
|
|
||||||
extern PFNGLUNIFORM2IARBPROC glUniform2iARB;
|
|
||||||
extern PFNGLUNIFORM3IARBPROC glUniform3iARB;
|
|
||||||
extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
|
|
||||||
extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
|
|
||||||
extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
|
|
||||||
extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
|
|
||||||
extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
|
|
||||||
extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
|
|
||||||
extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
|
|
||||||
extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
|
|
||||||
extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
|
|
||||||
extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB;
|
|
||||||
extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB;
|
|
||||||
extern PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
|
|
||||||
extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB;
|
|
||||||
extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetShaderiv;
|
|
||||||
extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetProgramiv;
|
|
||||||
extern PFNGLGETINFOLOGARBPROC glGetShaderInfoLog;
|
|
||||||
extern PFNGLGETINFOLOGARBPROC glGetProgramInfoLog;
|
|
||||||
extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB;
|
|
||||||
extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
|
|
||||||
extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB;
|
|
||||||
extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB;
|
|
||||||
extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB;
|
|
||||||
extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB;
|
|
||||||
|
|
||||||
// GL_ARB_vertex_shader
|
|
||||||
extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB;
|
|
||||||
extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB;
|
|
||||||
extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB;
|
|
||||||
extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB;
|
|
||||||
extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB;
|
|
||||||
extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB;
|
|
||||||
extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB;
|
|
||||||
extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB;
|
|
||||||
extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB;
|
|
||||||
extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB;
|
|
||||||
extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB;
|
|
||||||
extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB;
|
|
||||||
extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB;
|
|
||||||
extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB;
|
|
||||||
extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
|
|
||||||
extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB;
|
|
||||||
extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB;
|
|
||||||
extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB;
|
|
||||||
extern PFNGLBINDPROGRAMARBPROC glBindProgramARB;
|
|
||||||
extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB;
|
|
||||||
extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB;
|
|
||||||
extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB;
|
|
||||||
extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB;
|
|
||||||
extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB;
|
|
||||||
extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB;
|
|
||||||
extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB;
|
|
||||||
extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB;
|
|
||||||
extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB;
|
|
||||||
extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB;
|
|
||||||
extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB;
|
|
||||||
extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB;
|
|
||||||
extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB;
|
|
||||||
extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB;
|
|
||||||
extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB;
|
|
||||||
extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB;
|
|
||||||
extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB;
|
|
||||||
extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB;
|
|
||||||
extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB;
|
|
||||||
extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB;
|
|
||||||
extern PFNGLISPROGRAMARBPROC glIsProgramARB;
|
|
||||||
extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
|
|
||||||
extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
|
|
||||||
extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
|
|
||||||
|
|
||||||
extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB;
|
|
||||||
extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB;
|
|
||||||
|
|
||||||
extern PFNGLCOLORTABLEEXTPROC glColorTableEXT;
|
|
||||||
|
|
||||||
//GL_EXT_blend_func_separate
|
|
||||||
extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
|
|
||||||
|
|
||||||
//GL_EXT_framebuffer_object
|
|
||||||
extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT;
|
|
||||||
extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
|
|
||||||
extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT;
|
|
||||||
extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT;
|
|
||||||
extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT;
|
|
||||||
extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT;
|
|
||||||
extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT;
|
|
||||||
extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
|
|
||||||
extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
|
|
||||||
extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
|
|
||||||
extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
|
|
||||||
extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT;
|
|
||||||
extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
|
|
||||||
extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT;
|
|
||||||
extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT;
|
|
||||||
extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT;
|
|
||||||
extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT;
|
|
||||||
|
|
||||||
#elif LL_MESA
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
// MESA headers
|
// MESA headers
|
||||||
// quotes so we get libraries/.../GL/ version
|
// quotes so we get libraries/.../GL/ version
|
||||||
|
|||||||
@@ -448,7 +448,7 @@ BOOL LLImageGL::create(LLPointer<LLImageGL>& dest, const LLImageRaw* imageraw, B
|
|||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
LLImageGL::LLImageGL(BOOL usemipmaps)
|
LLImageGL::LLImageGL(BOOL usemipmaps)
|
||||||
: mSaveData(0), mSaveDiscardLevel(-1)
|
: mSaveData(0), mSaveDiscardLevel(-1), mIsCompressed(false)
|
||||||
{
|
{
|
||||||
init(usemipmaps);
|
init(usemipmaps);
|
||||||
setSize(0, 0, 0);
|
setSize(0, 0, 0);
|
||||||
@@ -739,7 +739,7 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
|
|||||||
|
|
||||||
llverify(gGL.getTexUnit(0)->bind(this));
|
llverify(gGL.getTexUnit(0)->bind(this));
|
||||||
|
|
||||||
|
mIsCompressed = false;
|
||||||
if (mUseMipMaps)
|
if (mUseMipMaps)
|
||||||
{
|
{
|
||||||
if (data_hasmips)
|
if (data_hasmips)
|
||||||
@@ -764,6 +764,7 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
|
|||||||
S32 tex_size = dataFormatBytes(mFormatPrimary, w, h);
|
S32 tex_size = dataFormatBytes(mFormatPrimary, w, h);
|
||||||
glCompressedTexImage2DARB(mTarget, gl_level, mFormatPrimary, w, h, 0, tex_size, (GLvoid *)data_in);
|
glCompressedTexImage2DARB(mTarget, gl_level, mFormatPrimary, w, h, 0, tex_size, (GLvoid *)data_in);
|
||||||
stop_glerror();
|
stop_glerror();
|
||||||
|
mIsCompressed = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -938,6 +939,7 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
|
|||||||
S32 tex_size = dataFormatBytes(mFormatPrimary, w, h);
|
S32 tex_size = dataFormatBytes(mFormatPrimary, w, h);
|
||||||
glCompressedTexImage2DARB(mTarget, 0, mFormatPrimary, w, h, 0, tex_size, (GLvoid *)data_in);
|
glCompressedTexImage2DARB(mTarget, 0, mFormatPrimary, w, h, 0, tex_size, (GLvoid *)data_in);
|
||||||
stop_glerror();
|
stop_glerror();
|
||||||
|
mIsCompressed = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1385,6 +1387,8 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, G
|
|||||||
discard_level = mCurrentDiscardLevel;
|
discard_level = mCurrentDiscardLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
discard_level = llclamp(discard_level, 0, (S32)mMaxDiscardLevel);
|
||||||
|
|
||||||
// Actual image width/height = raw image width/height * 2^discard_level
|
// Actual image width/height = raw image width/height * 2^discard_level
|
||||||
S32 raw_w = imageraw->getWidth() ;
|
S32 raw_w = imageraw->getWidth() ;
|
||||||
S32 raw_h = imageraw->getHeight() ;
|
S32 raw_h = imageraw->getHeight() ;
|
||||||
@@ -1582,12 +1586,6 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
|
|||||||
LL_ERRS() << llformat("LLImageGL::readBackRaw: bogus params: %d x %d x %d",width,height,ncomponents) << LL_ENDL;
|
LL_ERRS() << llformat("LLImageGL::readBackRaw: bogus params: %d x %d x %d",width,height,ncomponents) << LL_ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
LLGLint is_compressed = 0;
|
|
||||||
if (compressed_ok)
|
|
||||||
{
|
|
||||||
glGetTexLevelParameteriv(mTarget, is_compressed, GL_TEXTURE_COMPRESSED, (GLint*)&is_compressed);
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------
|
||||||
GLenum error ;
|
GLenum error ;
|
||||||
while((error = glGetError()) != GL_NO_ERROR)
|
while((error = glGetError()) != GL_NO_ERROR)
|
||||||
@@ -1596,8 +1594,13 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
|
|||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
if (is_compressed)
|
if (mIsCompressed)
|
||||||
{
|
{
|
||||||
|
if (!compressed_ok)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
LLGLint glbytes;
|
LLGLint glbytes;
|
||||||
glGetTexLevelParameteriv(mTarget, gl_discard, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, (GLint*)&glbytes);
|
glGetTexLevelParameteriv(mTarget, gl_discard, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, (GLint*)&glbytes);
|
||||||
if(!imageraw->allocateDataSize(width, height, ncomponents, glbytes))
|
if(!imageraw->allocateDataSize(width, height, ncomponents, glbytes))
|
||||||
|
|||||||
@@ -257,6 +257,7 @@ private:
|
|||||||
S8 mCurrentDiscardLevel;
|
S8 mCurrentDiscardLevel;
|
||||||
|
|
||||||
bool mAllowCompression;
|
bool mAllowCompression;
|
||||||
|
bool mIsCompressed = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LLGLenum mTarget; // Normally GL_TEXTURE2D, sometimes something else (ex. cube maps)
|
LLGLenum mTarget; // Normally GL_TEXTURE2D, sometimes something else (ex. cube maps)
|
||||||
|
|||||||
@@ -1018,6 +1018,8 @@ LLViewerFetchedTexture::LLViewerFetchedTexture(const std::string& url, FTType f_
|
|||||||
init(TRUE);
|
init(TRUE);
|
||||||
mFTType = f_type;
|
mFTType = f_type;
|
||||||
generateGLTexture();
|
generateGLTexture();
|
||||||
|
if (f_type == FTT_LOCAL_FILE)
|
||||||
|
mGLTexturep->setAllowCompression(false);
|
||||||
mGLTexturep->setNeedsAlphaAndPickMask(TRUE);
|
mGLTexturep->setNeedsAlphaAndPickMask(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -124,6 +124,8 @@
|
|||||||
<combo_item name="VSyncAdaptive" value="-1">Adaptive</combo_item>
|
<combo_item name="VSyncAdaptive" value="-1">Adaptive</combo_item>
|
||||||
</combo_box>
|
</combo_box>
|
||||||
<spinner bottom_delta="70" control_name="TextureMemory" decimal_digits="0" height="16" increment="16" initial_val="32" label="Texture Memory (MB):" label_width="138" left="10" max_val="4096" min_val="0" name="GrapicsCardTextureMemory" tool_tip="Amount of memory to allocate for textures. Defaults to Video Card Memory. Reducing this may improve performance but may also make textures blurry." width="202"/>
|
<spinner bottom_delta="70" control_name="TextureMemory" decimal_digits="0" height="16" increment="16" initial_val="32" label="Texture Memory (MB):" label_width="138" left="10" max_val="4096" min_val="0" name="GrapicsCardTextureMemory" tool_tip="Amount of memory to allocate for textures. Defaults to Video Card Memory. Reducing this may improve performance but may also make textures blurry." width="202"/>
|
||||||
|
<check_box bottom_delta="-18" control_name="RenderCompressedTextures" height="16" label="Enable Texture Compression" left="5" name="compressed_textures"
|
||||||
|
tool_tip="Enabling this reduces GPU memory consumption at the expense of in-world texture quality."/>
|
||||||
<check_box bottom_delta="-25" control_name="RenderVBOEnable" height="16" label="Enable OpenGL Vertex Buffer Objects" left="5" name="vbo"
|
<check_box bottom_delta="-25" control_name="RenderVBOEnable" height="16" label="Enable OpenGL Vertex Buffer Objects" left="5" name="vbo"
|
||||||
tool_tip="Enabling this on modern hardware gives a performance gain. However, older hardware often has poor implementations of VBOs and you may get crashes when this is enabled."/>
|
tool_tip="Enabling this on modern hardware gives a performance gain. However, older hardware often has poor implementations of VBOs and you may get crashes when this is enabled."/>
|
||||||
<check_box bottom_delta="-18" control_name="ShyotlRenderUseStreamVBO" enabled_control="RenderVBOEnable" height="16" label="Enable Streamed VBOs" left="14" name="vbo_stream"
|
<check_box bottom_delta="-18" control_name="ShyotlRenderUseStreamVBO" enabled_control="RenderVBOEnable" height="16" label="Enable Streamed VBOs" left="14" name="vbo_stream"
|
||||||
|
|||||||
Reference in New Issue
Block a user