sonarlint voodoo stuff

This commit is contained in:
Jasmine Iwanek
2023-07-31 18:57:52 -04:00
parent b8993e3282
commit b52df9e201
9 changed files with 275 additions and 178 deletions

View File

@@ -163,8 +163,6 @@ voodoo_v2_blit_start(voodoo_t *voodoo)
int dst_stride = (voodoo->bltCommand & BLTCMD_DST_TILED) ? ((voodoo->bltDstXYStride & 0x3f) * 32 * 2) : (voodoo->bltDstXYStride & 0xff8);
uint32_t src_base_addr = (voodoo->bltCommand & BLTCMD_SRC_TILED) ? ((voodoo->bltSrcBaseAddr & 0x3ff) << 12) : (voodoo->bltSrcBaseAddr & 0x3ffff8);
uint32_t dst_base_addr = (voodoo->bltCommand & BLTCMD_DST_TILED) ? ((voodoo->bltDstBaseAddr & 0x3ff) << 12) : (voodoo->bltDstBaseAddr & 0x3ffff8);
int x;
int y;
#if 0
voodooblt_log("blit_start: command=%08x srcX=%i srcY=%i dstX=%i dstY=%i sizeX=%i sizeY=%i color=%04x,%04x\n",
@@ -175,13 +173,13 @@ voodoo_v2_blit_start(voodoo_t *voodoo)
switch (voodoo->bltCommand & BLIT_COMMAND_MASK) {
case BLIT_COMMAND_SCREEN_TO_SCREEN:
for (y = 0; y <= size_y; y++) {
uint16_t *src = (uint16_t *) &voodoo->fb_mem[src_base_addr + src_y * src_stride];
uint16_t *dst = (uint16_t *) &voodoo->fb_mem[dst_base_addr + dst_y * dst_stride];
int src_x = voodoo->bltSrcX;
int dst_x = voodoo->bltDstX;
for (int y = 0; y <= size_y; y++) {
const uint16_t *src = (uint16_t *) &voodoo->fb_mem[src_base_addr + src_y * src_stride];
uint16_t *dst = (uint16_t *) &voodoo->fb_mem[dst_base_addr + dst_y * dst_stride];
int src_x = voodoo->bltSrcX;
int dst_x = voodoo->bltDstX;
for (x = 0; x <= size_x; x++) {
for (int x = 0; x <= size_x; x++) {
uint16_t src_dat = src[src_x];
uint16_t dst_dat = dst[dst_x];
int rop = 0;
@@ -233,7 +231,7 @@ skip_pixel_blit:
break;
case BLIT_COMMAND_RECT_FILL:
for (y = 0; y <= size_y; y++) {
for (int y = 0; y <= size_y; y++) {
uint16_t *dst;
int dst_x = voodoo->bltDstX;
@@ -244,7 +242,7 @@ skip_pixel_blit:
} else
dst = (uint16_t *) &voodoo->fb_mem[dst_base_addr + dst_y * dst_stride];
for (x = 0; x <= size_x; x++) {
for (int x = 0; x <= size_x; x++) {
if (voodoo->bltCommand & BLIT_CLIPPING_ENABLED) {
if (dst_x < voodoo->bltClipLeft || dst_x >= voodoo->bltClipRight || dst_y < voodoo->bltClipLowY || dst_y >= voodoo->bltClipHighY)
goto skip_pixel_fill;
@@ -267,7 +265,7 @@ skip_line_fill:
dat64 = voodoo->bltColorFg | ((uint64_t) voodoo->bltColorFg << 16) | ((uint64_t) voodoo->bltColorFg << 32) | ((uint64_t) voodoo->bltColorFg << 48);
for (y = 0; y <= size_y; y++) {
for (int y = 0; y <= size_y; y++) {
uint64_t *dst;
/*This may be wrong*/
@@ -284,7 +282,7 @@ skip_line_fill:
dst = (uint64_t *) &voodoo->fb_mem[(dst_y * 512 * 8 + dst_x * 8) & voodoo->fb_mask];
for (x = 0; x <= size_x; x++)
for (int x = 0; x <= size_x; x++)
dst[x] = dat64;
dst_y++;
@@ -347,6 +345,9 @@ voodoo_v2_blit_data(voodoo_t *voodoo, uint32_t data)
case BLIT_SRC_RGB_BGRA:
src_dat = ((data & 0xf800) >> 11) | (data & 0x07c0) | ((data & 0x0038) << 11);
break;
default:
break;
}
data >>= 16;
src_bits -= 16;
@@ -375,6 +376,9 @@ voodoo_v2_blit_data(voodoo_t *voodoo, uint32_t data)
g = (data >> 16) & 0xff;
b = (data >> 24) & 0xff;
break;
default:
break;
}
switch (voodoo->bltCommand & BLIT_SRC_FORMAT) {
case BLIT_SRC_24BPP:
@@ -392,9 +396,15 @@ voodoo_v2_blit_data(voodoo_t *voodoo, uint32_t data)
b = dither_rb[b][voodoo->blt.dst_y & 3][x & 3];
src_dat = (b >> 3) | ((g & 0xfc) << 3) | ((r & 0xf8) << 8);
break;
default:
break;
}
src_bits = 0;
break;
default:
break;
}
if (SLI_ENABLED) {