Revert "Merge pull request #7361 from hrydgard/color-conv-centralize"
This reverts commitf1b57dabf5
, reversing changes made to41001637ce
.
This commit is contained in:
parent
07933cad42
commit
cae58cafee
33 changed files with 1195 additions and 476 deletions
|
@ -18,7 +18,6 @@
|
|||
#include <algorithm>
|
||||
#include <cstring>
|
||||
|
||||
#include "Common/ColorConv.h"
|
||||
#include "Core/Host.h"
|
||||
#include "Core/MemMap.h"
|
||||
#include "Core/Reporting.h"
|
||||
|
@ -2002,22 +2001,8 @@ void TextureCache::LoadTextureLevel(TexCacheEntry &entry, int level, bool replac
|
|||
bool useBGRA = UseBGRA8888() && dstFmt == GL_UNSIGNED_BYTE;
|
||||
|
||||
u32 *pixelData = (u32 *)finalBuf;
|
||||
if (scaleFactor > 1 && (entry.status & TexCacheEntry::STATUS_CHANGE_FREQUENT) == 0) {
|
||||
GEBufferFormat dstFormat;
|
||||
switch (dstFmt) {
|
||||
case GL_UNSIGNED_BYTE: dstFormat = GE_FORMAT_8888; break;
|
||||
case GL_UNSIGNED_SHORT_4_4_4_4: dstFormat = GE_FORMAT_4444; break;
|
||||
case GL_UNSIGNED_SHORT_5_6_5: dstFormat = GE_FORMAT_565; break;
|
||||
case GL_UNSIGNED_SHORT_5_5_5_1: dstFormat = GE_FORMAT_5551; break;
|
||||
}
|
||||
scaler.Scale(pixelData, dstFormat, w, h, scaleFactor);
|
||||
switch (dstFormat) {
|
||||
case GE_FORMAT_565: dstFmt = GL_UNSIGNED_SHORT_5_6_5; break;
|
||||
case GE_FORMAT_5551: dstFmt = GL_UNSIGNED_SHORT_5_5_5_1; break;
|
||||
case GE_FORMAT_4444: dstFmt = GL_UNSIGNED_SHORT_4_4_4_4; break;
|
||||
case GE_FORMAT_8888: dstFmt = GL_UNSIGNED_BYTE; break;
|
||||
}
|
||||
}
|
||||
if (scaleFactor > 1 && (entry.status & TexCacheEntry::STATUS_CHANGE_FREQUENT) == 0)
|
||||
scaler.Scale(pixelData, dstFmt, w, h, scaleFactor);
|
||||
|
||||
if ((entry.status & TexCacheEntry::STATUS_CHANGE_FREQUENT) == 0) {
|
||||
TexCacheEntry::Status alphaStatus = CheckAlpha(pixelData, dstFmt, useUnpack ? bufw : w, w, h);
|
||||
|
@ -2080,33 +2065,47 @@ bool TextureCache::DecodeTexture(u8* output, const GPUgstate &state) {
|
|||
|
||||
switch (dstFmt) {
|
||||
case GL_UNSIGNED_SHORT_4_4_4_4:
|
||||
for (int y = 0; y < h; y++) {
|
||||
u16 *src = (u16*)finalBuf + y*bufw;
|
||||
u32 *dst = (u32*)output + y*w;
|
||||
ConvertRGBA4444ToRGBA8888(dst, src, bufw);
|
||||
}
|
||||
for (int y = 0; y < h; y++)
|
||||
for (int x = 0; x < bufw; x++) {
|
||||
u32 val = ((u16*)finalBuf)[y*bufw + x];
|
||||
u32 r = ((val>>12) & 0xF) * 17;
|
||||
u32 g = ((val>> 8) & 0xF) * 17;
|
||||
u32 b = ((val>> 4) & 0xF) * 17;
|
||||
u32 a = ((val>> 0) & 0xF) * 17;
|
||||
((u32*)output)[y*w + x] = (a << 24) | (r << 16) | (g << 8) | b;
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_UNSIGNED_SHORT_5_5_5_1:
|
||||
for (int y = 0; y < h; y++) {
|
||||
u16 *src = (u16*)finalBuf + y*bufw;
|
||||
u32 *dst = (u32*)output + y*w;
|
||||
ConvertRGBA5551ToRGBA8888(dst, src, bufw);
|
||||
}
|
||||
for (int y = 0; y < h; y++)
|
||||
for (int x = 0; x < bufw; x++) {
|
||||
u32 val = ((u16*)finalBuf)[y*bufw + x];
|
||||
u32 r = Convert5To8((val>>11) & 0x1F);
|
||||
u32 g = Convert5To8((val>> 6) & 0x1F);
|
||||
u32 b = Convert5To8((val>> 1) & 0x1F);
|
||||
u32 a = (val & 0x1) * 255;
|
||||
((u32*)output)[y*w + x] = (a << 24) | (r << 16) | (g << 8) | b;
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_UNSIGNED_SHORT_5_6_5:
|
||||
for (int y = 0; y < h; y++) {
|
||||
u16 *src = (u16*)finalBuf + y*bufw;
|
||||
u32 *dst = (u32*)output + y*w;
|
||||
ConvertRGB565ToRGBA888F(dst, src, bufw);
|
||||
}
|
||||
for (int y = 0; y < h; y++)
|
||||
for (int x = 0; x < bufw; x++) {
|
||||
u32 val = ((u16*)finalBuf)[y*bufw + x];
|
||||
u32 a = 0xFF;
|
||||
u32 r = Convert5To8((val>>11) & 0x1F);
|
||||
u32 g = Convert6To8((val>> 5) & 0x3F);
|
||||
u32 b = Convert5To8((val ) & 0x1F);
|
||||
((u32*)output)[y*w + x] = (a << 24) | (r << 16) | (g << 8) | b;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
for (int y = 0; y < h; y++) {
|
||||
ConvertBGRA8888ToRGBA8888((u32 *)output + y * w, (u32 *)(finalBuf)+y * bufw, bufw);
|
||||
}
|
||||
for (int y = 0; y < h; y++)
|
||||
for (int x = 0; x < bufw; x++) {
|
||||
u32 val = ((u32*)finalBuf)[y*bufw + x];
|
||||
((u32*)output)[y*w + x] = ((val & 0xFF000000)) | ((val & 0x00FF0000)>>16) | ((val & 0x0000FF00)) | ((val & 0x000000FF)<<16);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue