Change RGB32k to a union of BYTE[32][32][32] and BYTE[32*32*32]
- Clang's optional runtime array bounds checking doesn't understand when we
intentionally "overflow" by doing this:
RGB32k[0][0][colorval]
It will warn that it was accessed at an index will past the bounds
of type 'BYTE [32]', which makes it less than useful for catching real
array bounds overflows. So now do this:
RGB32k.All[colorval]
And if you want this:
RGB32k[r][g][b]
Now do this:
RGB32k.RGB[r][g][b]
This commit is contained in:
parent
308a036955
commit
e259087c19
13 changed files with 88 additions and 77 deletions
|
|
@ -270,7 +270,7 @@ void R_FillAddColumn (void)
|
|||
{
|
||||
DWORD bg;
|
||||
bg = (fg + bg2rgb[*dest]) | 0x1f07c1f;
|
||||
*dest = RGB32k[0][0][bg & (bg>>15)];
|
||||
*dest = RGB32k.All[bg & (bg>>15)];
|
||||
dest += pitch;
|
||||
} while (--count);
|
||||
|
||||
|
|
@ -303,7 +303,7 @@ void R_FillAddClampColumn (void)
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
dest += pitch;
|
||||
} while (--count);
|
||||
|
||||
|
|
@ -335,7 +335,7 @@ void R_FillSubClampColumn (void)
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
dest += pitch;
|
||||
} while (--count);
|
||||
|
||||
|
|
@ -367,7 +367,7 @@ void R_FillRevSubClampColumn (void)
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
dest += pitch;
|
||||
} while (--count);
|
||||
|
||||
|
|
@ -569,7 +569,7 @@ void R_DrawAddColumnP_C (void)
|
|||
fg = fg2rgb[fg];
|
||||
bg = bg2rgb[bg];
|
||||
fg = (fg+bg) | 0x1f07c1f;
|
||||
*dest = RGB32k[0][0][fg & (fg>>15)];
|
||||
*dest = RGB32k.All[fg & (fg>>15)];
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
} while (--count);
|
||||
|
|
@ -650,7 +650,7 @@ void R_DrawTlatedAddColumnP_C (void)
|
|||
fg = fg2rgb[fg];
|
||||
bg = bg2rgb[bg];
|
||||
fg = (fg+bg) | 0x1f07c1f;
|
||||
*dest = RGB32k[0][0][fg & (fg>>15)];
|
||||
*dest = RGB32k.All[fg & (fg>>15)];
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
} while (--count);
|
||||
|
|
@ -686,7 +686,7 @@ void R_DrawShadedColumnP_C (void)
|
|||
DWORD val = colormap[source[frac>>FRACBITS]];
|
||||
DWORD fg = fgstart[val<<8];
|
||||
val = (Col2RGB8[64-val][*dest] + fg) | 0x1f07c1f;
|
||||
*dest = RGB32k[0][0][val & (val>>15)];
|
||||
*dest = RGB32k.All[val & (val>>15)];
|
||||
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
|
|
@ -728,7 +728,7 @@ void R_DrawAddClampColumnP_C ()
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
} while (--count);
|
||||
|
|
@ -770,7 +770,7 @@ void R_DrawAddClampTranslatedColumnP_C ()
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
*dest = RGB32k[0][0][(a>>15) & a];
|
||||
*dest = RGB32k.All[(a>>15) & a];
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
} while (--count);
|
||||
|
|
@ -810,7 +810,7 @@ void R_DrawSubClampColumnP_C ()
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
} while (--count);
|
||||
|
|
@ -851,7 +851,7 @@ void R_DrawSubClampTranslatedColumnP_C ()
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
*dest = RGB32k[0][0][(a>>15) & a];
|
||||
*dest = RGB32k.All[(a>>15) & a];
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
} while (--count);
|
||||
|
|
@ -891,7 +891,7 @@ void R_DrawRevSubClampColumnP_C ()
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
} while (--count);
|
||||
|
|
@ -932,7 +932,7 @@ void R_DrawRevSubClampTranslatedColumnP_C ()
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
*dest = RGB32k[0][0][(a>>15) & a];
|
||||
*dest = RGB32k.All[(a>>15) & a];
|
||||
dest += pitch;
|
||||
frac += fracstep;
|
||||
} while (--count);
|
||||
|
|
@ -1227,7 +1227,7 @@ void R_DrawSpanTranslucentP_C (void)
|
|||
fg = fg2rgb[fg];
|
||||
bg = bg2rgb[bg];
|
||||
fg = (fg+bg) | 0x1f07c1f;
|
||||
*dest++ = RGB32k[0][0][fg & (fg>>15)];
|
||||
*dest++ = RGB32k.All[fg & (fg>>15)];
|
||||
xfrac += xstep;
|
||||
yfrac += ystep;
|
||||
} while (--count);
|
||||
|
|
@ -1245,7 +1245,7 @@ void R_DrawSpanTranslucentP_C (void)
|
|||
fg = fg2rgb[fg];
|
||||
bg = bg2rgb[bg];
|
||||
fg = (fg+bg) | 0x1f07c1f;
|
||||
*dest++ = RGB32k[0][0][fg & (fg>>15)];
|
||||
*dest++ = RGB32k.All[fg & (fg>>15)];
|
||||
xfrac += xstep;
|
||||
yfrac += ystep;
|
||||
} while (--count);
|
||||
|
|
@ -1292,7 +1292,7 @@ void R_DrawSpanMaskedTranslucentP_C (void)
|
|||
fg = fg2rgb[fg];
|
||||
bg = bg2rgb[bg];
|
||||
fg = (fg+bg) | 0x1f07c1f;
|
||||
*dest = RGB32k[0][0][fg & (fg>>15)];
|
||||
*dest = RGB32k.All[fg & (fg>>15)];
|
||||
}
|
||||
dest++;
|
||||
xfrac += xstep;
|
||||
|
|
@ -1317,7 +1317,7 @@ void R_DrawSpanMaskedTranslucentP_C (void)
|
|||
fg = fg2rgb[fg];
|
||||
bg = bg2rgb[bg];
|
||||
fg = (fg+bg) | 0x1f07c1f;
|
||||
*dest = RGB32k[0][0][fg & (fg>>15)];
|
||||
*dest = RGB32k.All[fg & (fg>>15)];
|
||||
}
|
||||
dest++;
|
||||
xfrac += xstep;
|
||||
|
|
@ -1364,7 +1364,7 @@ void R_DrawSpanAddClampP_C (void)
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
*dest++ = RGB32k[0][0][a & (a>>15)];
|
||||
*dest++ = RGB32k.All[a & (a>>15)];
|
||||
xfrac += xstep;
|
||||
yfrac += ystep;
|
||||
} while (--count);
|
||||
|
|
@ -1385,7 +1385,7 @@ void R_DrawSpanAddClampP_C (void)
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
*dest++ = RGB32k[0][0][a & (a>>15)];
|
||||
*dest++ = RGB32k.All[a & (a>>15)];
|
||||
xfrac += xstep;
|
||||
yfrac += ystep;
|
||||
} while (--count);
|
||||
|
|
@ -1435,7 +1435,7 @@ void R_DrawSpanMaskedAddClampP_C (void)
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
}
|
||||
dest++;
|
||||
xfrac += xstep;
|
||||
|
|
@ -1463,7 +1463,7 @@ void R_DrawSpanMaskedAddClampP_C (void)
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
}
|
||||
dest++;
|
||||
xfrac += xstep;
|
||||
|
|
@ -1908,7 +1908,7 @@ fixed_t tmvline1_add ()
|
|||
DWORD fg = fg2rgb[colormap[pix]];
|
||||
DWORD bg = bg2rgb[*dest];
|
||||
fg = (fg+bg) | 0x1f07c1f;
|
||||
*dest = RGB32k[0][0][fg & (fg>>15)];
|
||||
*dest = RGB32k.All[fg & (fg>>15)];
|
||||
}
|
||||
frac += fracstep;
|
||||
dest += pitch;
|
||||
|
|
@ -1936,7 +1936,7 @@ void tmvline4_add ()
|
|||
DWORD fg = fg2rgb[palookupoffse[i][pix]];
|
||||
DWORD bg = bg2rgb[dest[i]];
|
||||
fg = (fg+bg) | 0x1f07c1f;
|
||||
dest[i] = RGB32k[0][0][fg & (fg>>15)];
|
||||
dest[i] = RGB32k.All[fg & (fg>>15)];
|
||||
}
|
||||
vplce[i] += vince[i];
|
||||
}
|
||||
|
|
@ -1971,7 +1971,7 @@ fixed_t tmvline1_addclamp ()
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
}
|
||||
frac += fracstep;
|
||||
dest += pitch;
|
||||
|
|
@ -2004,7 +2004,7 @@ void tmvline4_addclamp ()
|
|||
a &= 0x3fffffff;
|
||||
b = b - (b >> 5);
|
||||
a |= b;
|
||||
dest[i] = RGB32k[0][0][a & (a>>15)];
|
||||
dest[i] = RGB32k.All[a & (a>>15)];
|
||||
}
|
||||
vplce[i] += vince[i];
|
||||
}
|
||||
|
|
@ -2038,7 +2038,7 @@ fixed_t tmvline1_subclamp ()
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
}
|
||||
frac += fracstep;
|
||||
dest += pitch;
|
||||
|
|
@ -2070,7 +2070,7 @@ void tmvline4_subclamp ()
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
dest[i] = RGB32k[0][0][a & (a>>15)];
|
||||
dest[i] = RGB32k.All[a & (a>>15)];
|
||||
}
|
||||
vplce[i] += vince[i];
|
||||
}
|
||||
|
|
@ -2104,7 +2104,7 @@ fixed_t tmvline1_revsubclamp ()
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
*dest = RGB32k[0][0][a & (a>>15)];
|
||||
*dest = RGB32k.All[a & (a>>15)];
|
||||
}
|
||||
frac += fracstep;
|
||||
dest += pitch;
|
||||
|
|
@ -2136,7 +2136,7 @@ void tmvline4_revsubclamp ()
|
|||
b = b - (b >> 5);
|
||||
a &= b;
|
||||
a |= 0x01f07c1f;
|
||||
dest[i] = RGB32k[0][0][a & (a>>15)];
|
||||
dest[i] = RGB32k.All[a & (a>>15)];
|
||||
}
|
||||
vplce[i] += vince[i];
|
||||
}
|
||||
|
|
@ -2421,7 +2421,7 @@ ESPSResult R_SetPatchStyle (FRenderStyle style, fixed_t alpha, int translation,
|
|||
int g = GPART(color);
|
||||
int b = BPART(color);
|
||||
// dc_color is used by the rt_* routines. It is indexed into dc_srcblend.
|
||||
dc_color = RGB32k[r>>3][g>>3][b>>3];
|
||||
dc_color = RGB32k.RGB[r>>3][g>>3][b>>3];
|
||||
if (style.Flags & STYLEF_InvertSource)
|
||||
{
|
||||
r = 255 - r;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue