Small optimizations to stencil scanning.

This commit is contained in:
Unknown W. Brackets 2014-06-28 02:00:14 -07:00
parent a33589b3e9
commit e57ed7d2f4

View File

@ -51,10 +51,10 @@ static const char *stencil_vs =
"}\n";
static u8 StencilBits5551(const u8 *ptr8, u32 numPixels) {
const u16 *ptr = (const u16 *)ptr8;
const u32 *ptr = (const u32 *)ptr8;
for (u32 i = 0; i < numPixels; ++i) {
if (ptr[i] & 0x8000) {
for (u32 i = 0; i < numPixels / 2; ++i) {
if (ptr[i] & 0x80008000) {
return 1;
}
}
@ -63,25 +63,25 @@ static u8 StencilBits5551(const u8 *ptr8, u32 numPixels) {
}
static u8 StencilBits4444(const u8 *ptr8, u32 numPixels) {
const u16 *ptr = (const u16 *)ptr8;
u8 bits = 0;
const u32 *ptr = (const u32 *)ptr8;
u32 bits = 0;
for (u32 i = 0; i < numPixels; ++i) {
bits |= ptr[i] >> 12;
for (u32 i = 0; i < numPixels / 2; ++i) {
bits |= ptr[i];
}
return bits;
return ((bits >> 12) & 0xF) | (bits >> 28);
}
static u8 StencilBits8888(const u8 *ptr8, u32 numPixels) {
const u32 *ptr = (const u32 *)ptr8;
u8 bits = 0;
u32 bits = 0;
for (u32 i = 0; i < numPixels; ++i) {
bits |= ptr[i] >> 24;
bits |= ptr[i];
}
return bits;
return bits >> 24;
}
bool FramebufferManager::NotifyStencilUpload(u32 addr, int size, bool skipZero) {