fix nv3_render_to_chroma

This commit is contained in:
starfrost013
2025-05-18 19:24:43 +01:00
parent 6ba3d89810
commit c1972f1b13
2 changed files with 6 additions and 5 deletions

View File

@@ -133,8 +133,7 @@ void nv3_render_blit_screen2screen(nv3_grobj_t grobj)
if ((grobj.grobj_0 >> NV3_PGRAPH_CONTEXT_SWITCH_DST_BUFFER1_ENABLED) & 0x01) dst_buffer = 1;
if ((grobj.grobj_0 >> NV3_PGRAPH_CONTEXT_SWITCH_DST_BUFFER2_ENABLED) & 0x01) dst_buffer = 2;
if ((grobj.grobj_0 >> NV3_PGRAPH_CONTEXT_SWITCH_DST_BUFFER3_ENABLED) & 0x01) dst_buffer = 3;
bool cross_buffer_blit = (nv3->pgraph.boffset[src_buffer] != nv3->pgraph.boffset[dst_buffer]);
nv3_coord_16_t old_position = nv3->pgraph.blit.point_in;
nv3_coord_16_t new_position = nv3->pgraph.blit.point_out;
@@ -160,7 +159,7 @@ void nv3_render_blit_screen2screen(nv3_grobj_t grobj)
{
buf_position = (nv3->pgraph.blit.size.x * y);
/* shouldn't matter in non-wtf mode */
vram_position = nv3_render_get_vram_address_for_buffer(old_position, src_buffer);
vram_position = nv3_render_get_vram_address_for_buffer(old_position, dst_buffer);
memcpy(&nv3_s2sb_line_buffer[buf_position], &nv3->nvbase.svga.vram[vram_position], size_x);
old_position.y++;
@@ -171,7 +170,7 @@ void nv3_render_blit_screen2screen(nv3_grobj_t grobj)
for (int32_t y = 0; y < nv3->pgraph.blit.size.y; y++)
{
buf_position = (nv3->pgraph.blit.size.x * y);
vram_position = nv3_render_get_vram_address_for_buffer(new_position, dst_buffer);
vram_position = nv3_render_get_vram_address_for_buffer(new_position, src_buffer);
memcpy(&nv3->nvbase.svga.vram[vram_position], &nv3_s2sb_line_buffer[buf_position], size_x);
new_position.y++;

View File

@@ -187,7 +187,7 @@ bool nv3_render_chroma_test(uint32_t color, nv3_grobj_t grobj)
uint32_t nv3_render_to_chroma(nv3_color_expanded_t expanded)
{
// convert the alpha to 1 bit. then return packed rgb10
return !!expanded.a | (expanded.r << 30) | (expanded.b << 20) | (expanded.b << 10);
return !!expanded.a | (expanded.r << 30) | (expanded.g << 20) | (expanded.b << 10);
}
/* Get a colour for a palette index. (The colours are 24 bit RGB888 with a 0xFF alpha added for some purposes.) */
@@ -611,6 +611,8 @@ void nv3_render_current_bpp()
+ (nv3->nvbase.svga.crtc[NV3_CRTC_REGISTER_STARTADDR_HIGH] << 8)
+ nv3->nvbase.svga.crtc[NV3_CRTC_REGISTER_STARTADDR_LOW];
//uint32_t dba = 1920000;
nv3_coord_16_t screen_size = {0};
screen_size.x = nv3->nvbase.svga.hdisp;
screen_size.y = nv3->nvbase.svga.dispend;