Do not compress textures lower than 4x4.
This commit is contained in:
@@ -911,7 +911,7 @@ flushCache(void)
|
|||||||
{
|
{
|
||||||
flushGlRenderState();
|
flushGlRenderState();
|
||||||
|
|
||||||
glUniform4fv(U(u_matColor), 1, (GLfloat*)&matColorCache);
|
glUniform4fv(U(u_matColor), 1, &matColorCache.red);
|
||||||
glUniform4fv(U(u_surfProps), 1, surfPropsCache);
|
glUniform4fv(U(u_surfProps), 1, surfPropsCache);
|
||||||
|
|
||||||
// TODO: this is probably a stupid way to do it without UBOs
|
// TODO: this is probably a stupid way to do it without UBOs
|
||||||
@@ -947,7 +947,7 @@ flushCache(void)
|
|||||||
uniformState.fogDisable = rwStateCache.fogEnable ? 0.0f : 1.0f;
|
uniformState.fogDisable = rwStateCache.fogEnable ? 0.0f : 1.0f;
|
||||||
uniformState.fogStart = rwStateCache.fogStart;
|
uniformState.fogStart = rwStateCache.fogStart;
|
||||||
uniformState.fogEnd = rwStateCache.fogEnd;
|
uniformState.fogEnd = rwStateCache.fogEnd;
|
||||||
uniformState.fogRange = 1.0f/(rwStateCache.fogStart - rwStateCache.fogEnd);
|
uniformState.fogRange = 1.0f / (rwStateCache.fogStart - rwStateCache.fogEnd);
|
||||||
|
|
||||||
//if(uniformStateDirty[RWGL_ALPHAFUNC] || uniformStateDirty[RWGL_ALPHAREF]){
|
//if(uniformStateDirty[RWGL_ALPHAFUNC] || uniformStateDirty[RWGL_ALPHAREF]){
|
||||||
switch(alphaFunc){
|
switch(alphaFunc){
|
||||||
|
|||||||
+17
-10
@@ -65,7 +65,8 @@ rasterCreateTexture(Raster *raster)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef PSP2_NO_DXT_TEXTURES
|
#ifndef PSP2_NO_DXT_TEXTURES
|
||||||
natras->internalFormat = natras->hasAlpha ? GL_COMPRESSED_RGBA_S3TC_DXT5_EXT : GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
if (raster->width >= 4 && raster->height >= 4)
|
||||||
|
natras->internalFormat = natras->hasAlpha ? GL_COMPRESSED_RGBA_S3TC_DXT5_EXT : GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
raster->stride = raster->width*natras->bpp;
|
raster->stride = raster->width*natras->bpp;
|
||||||
@@ -125,10 +126,6 @@ rasterCreateCameraTexture(Raster *raster)
|
|||||||
natras->bpp = 3;
|
natras->bpp = 3;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#ifndef PSP2_NO_DXT_TEXTURES
|
|
||||||
// natras->internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
raster->stride = raster->width*natras->bpp;
|
raster->stride = raster->width*natras->bpp;
|
||||||
|
|
||||||
glGenTextures(1, &natras->texid);
|
glGenTextures(1, &natras->texid);
|
||||||
@@ -288,11 +285,18 @@ rasterLock(Raster *raster, int32 level, int32 lockMode)
|
|||||||
uint32_t internal_stride = ALIGN(raster->width, 8) * natras->bpp;
|
uint32_t internal_stride = ALIGN(raster->width, 8) * natras->bpp;
|
||||||
while (y < raster->height) {
|
while (y < raster->height) {
|
||||||
memcpy_neon(px, p, raster->stride);
|
memcpy_neon(px, p, raster->stride);
|
||||||
px += internal_stride;
|
p += internal_stride;
|
||||||
y++;
|
y++;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
memcpy_neon(px, p, natras->hasAlpha ? (raster->width * raster->height) : (raster->width * raster->height / 2));
|
if (raster->width < 4 || raster->height < 4) {
|
||||||
|
uint32_t internal_stride = ALIGN(raster->width, 8) * natras->bpp;
|
||||||
|
while (y < raster->height) {
|
||||||
|
memcpy_neon(px, p, raster->stride);
|
||||||
|
p += internal_stride;
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
} else memcpy_neon(px, p, natras->hasAlpha ? (raster->width * raster->height) : (raster->width * raster->height / 2));
|
||||||
#endif
|
#endif
|
||||||
bindTexture(prev);
|
bindTexture(prev);
|
||||||
}
|
}
|
||||||
@@ -564,9 +568,11 @@ getLevelSize(Raster *raster, int32 level)
|
|||||||
{
|
{
|
||||||
Gl3Raster *natras = PLUGINOFFSET(Gl3Raster, raster, nativeRasterOffset);
|
Gl3Raster *natras = PLUGINOFFSET(Gl3Raster, raster, nativeRasterOffset);
|
||||||
#ifdef PSP2_NO_DXT_TEXTURES
|
#ifdef PSP2_NO_DXT_TEXTURES
|
||||||
uint32 size = raster->stride*raster->height;
|
uint32 size = raster->stride * raster->height;
|
||||||
#else
|
#else
|
||||||
uint32 size = natras->hasAlpha ? (raster->width*raster->height) : (raster->width*raster->height / 2);
|
uint32 size;
|
||||||
|
if (raster->width < 4 || raster->height < 4) size = raster->stride * raster->height;
|
||||||
|
else size = natras->hasAlpha ? (raster->width*raster->height) : (raster->width*raster->height / 2);
|
||||||
#endif
|
#endif
|
||||||
while(level--)
|
while(level--)
|
||||||
size /= 4;
|
size /= 4;
|
||||||
@@ -617,7 +623,8 @@ readNativeTexture(Stream *stream)
|
|||||||
#ifdef PSP2_NO_DXT_TEXTURES
|
#ifdef PSP2_NO_DXT_TEXTURES
|
||||||
data = raster->lock(i, Raster::LOCKWRITE|Raster::LOCKNOFETCH);
|
data = raster->lock(i, Raster::LOCKWRITE|Raster::LOCKNOFETCH);
|
||||||
#else
|
#else
|
||||||
data = raster->lock(i, Raster::LOCKWRITE|Raster::LOCKNOFETCH|Raster::LOCKRAW);
|
if (raster->width < 4 || raster->height < 4) data = raster->lock(i, Raster::LOCKWRITE|Raster::LOCKNOFETCH);
|
||||||
|
else data = raster->lock(i, Raster::LOCKWRITE|Raster::LOCKNOFETCH|Raster::LOCKRAW);
|
||||||
#endif
|
#endif
|
||||||
stream->read8(data, size);
|
stream->read8(data, size);
|
||||||
raster->unlock(i);
|
raster->unlock(i);
|
||||||
|
|||||||
Reference in New Issue
Block a user