From 9a86aa0a4bccc262c57d3c49a99511439a22fd3d Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 12 Aug 2017 02:02:49 +0200 Subject: [PATCH] Applied the Voodoo commits from mainline PCem. --- src/VIDEO/vid_voodoo.c | 2 +- src/VIDEO/vid_voodoo_codegen_x86-64.h | 24 +++++++++++------------ src/VIDEO/vid_voodoo_codegen_x86.h | 28 ++++++++++++--------------- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/VIDEO/vid_voodoo.c b/src/VIDEO/vid_voodoo.c index 042e88a42..3c7db817e 100644 --- a/src/VIDEO/vid_voodoo.c +++ b/src/VIDEO/vid_voodoo.c @@ -6116,7 +6116,7 @@ static void voodoo_writel(uint32_t addr, uint32_t val, void *p) default: if (voodoo->fbiInit7 & FBIINIT7_CMDFIFO_ENABLE) { - fatal("Unknown register write in CMDFIFO mode %08x %08x\n", addr, val); + pclog("Unknown register write in CMDFIFO mode %08x %08x\n", addr, val); } else { diff --git a/src/VIDEO/vid_voodoo_codegen_x86-64.h b/src/VIDEO/vid_voodoo_codegen_x86-64.h index 160708b93..bdad42a70 100644 --- a/src/VIDEO/vid_voodoo_codegen_x86-64.h +++ b/src/VIDEO/vid_voodoo_codegen_x86-64.h @@ -800,10 +800,10 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(0x47); addbyte(0xc3); - if (depth_jump_pos) - *(uint8_t *)&code_block[depth_jump_pos] = (block_pos - depth_jump_pos) - 1; - if (depth_jump_pos) - *(uint8_t *)&code_block[depth_jump_pos2] = (block_pos - depth_jump_pos2) - 1; + if (depth_jump_pos) + *(uint8_t *)&code_block[depth_jump_pos] = (block_pos - depth_jump_pos) - 1; + if (depth_jump_pos) + *(uint8_t *)&code_block[depth_jump_pos2] = (block_pos - depth_jump_pos2) - 1; if ((params->fogMode & (FOG_ENABLE|FOG_CONSTANT|FOG_Z|FOG_ALPHA)) == FOG_ENABLE) { @@ -1047,8 +1047,8 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(params->detail_scale[1]); addbyte(0x39); /*CMP EAX, EDX*/ addbyte(0xd0); - addbyte(0x0f); /*CMOVA EAX, EDX*/ - addbyte(0x47); + addbyte(0x0f); /*CMOVNL EAX, EDX*/ + addbyte(0x4d); addbyte(0xc2); addbyte(0x66); /*MOVD XMM0, EAX*/ addbyte(0x0f); @@ -1201,8 +1201,8 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(params->detail_scale[1]); addbyte(0x39); /*CMP EAX, EDX*/ addbyte(0xd0); - addbyte(0x0f); /*CMOVA EAX, EDX*/ - addbyte(0x47); + addbyte(0x0f); /*CMOVNL EAX, EDX*/ + addbyte(0x4d); addbyte(0xc2); break; case TCA_MSELECT_LOD_FRAC: @@ -1371,8 +1371,8 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(params->detail_scale[0]); addbyte(0x39); /*CMP EAX, EDX*/ addbyte(0xd0); - addbyte(0x0f); /*CMOVA EAX, EDX*/ - addbyte(0x47); + addbyte(0x0f); /*CMOVNL EAX, EDX*/ + addbyte(0x4d); addbyte(0xc2); addbyte(0x66); /*MOVD XMM4, EAX*/ addbyte(0x0f); @@ -1569,8 +1569,8 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(params->detail_scale[1]); addbyte(0x39); /*CMP EBX, EDX*/ addbyte(0xd3); - addbyte(0x0f); /*CMOVA EBX, EDX*/ - addbyte(0x47); + addbyte(0x0f); /*CMOVNL EBX, EDX*/ + addbyte(0x4d); addbyte(0xda); break; case TCA_MSELECT_LOD_FRAC: diff --git a/src/VIDEO/vid_voodoo_codegen_x86.h b/src/VIDEO/vid_voodoo_codegen_x86.h index 0cd0fc7eb..668d64a67 100644 --- a/src/VIDEO/vid_voodoo_codegen_x86.h +++ b/src/VIDEO/vid_voodoo_codegen_x86.h @@ -759,14 +759,10 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(0x47); addbyte(0xc3); - if (depth_jump_pos) - { - *(uint8_t *)&code_block[depth_jump_pos] = (block_pos - depth_jump_pos) - 1; - } - if (depth_jump_pos2) - { - *(uint8_t *)&code_block[depth_jump_pos2] = (block_pos - depth_jump_pos2) - 1; - } + if (depth_jump_pos) + *(uint8_t *)&code_block[depth_jump_pos] = (block_pos - depth_jump_pos) - 1; + if (depth_jump_pos) + *(uint8_t *)&code_block[depth_jump_pos2] = (block_pos - depth_jump_pos2) - 1; if ((params->fogMode & (FOG_ENABLE|FOG_CONSTANT|FOG_Z|FOG_ALPHA)) == FOG_ENABLE) { @@ -1034,8 +1030,8 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(params->detail_scale[1]); addbyte(0x39); /*CMP EAX, EDX*/ addbyte(0xd0); - addbyte(0x0f); /*CMOVA EAX, EDX*/ - addbyte(0x47); + addbyte(0x0f); /*CMOVNL EAX, EDX*/ + addbyte(0x4d); addbyte(0xc2); addbyte(0x66); /*MOVD XMM0, EAX*/ addbyte(0x0f); @@ -1186,8 +1182,8 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(params->detail_scale[1]); addbyte(0x39); /*CMP EAX, EDX*/ addbyte(0xd0); - addbyte(0x0f); /*CMOVA EAX, EDX*/ - addbyte(0x47); + addbyte(0x0f); /*CMOVNL EAX, EDX*/ + addbyte(0x4d); addbyte(0xc2); break; case TCA_MSELECT_LOD_FRAC: @@ -1356,8 +1352,8 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(params->detail_scale[0]); addbyte(0x39); /*CMP EAX, EDX*/ addbyte(0xd0); - addbyte(0x0f); /*CMOVA EAX, EDX*/ - addbyte(0x47); + addbyte(0x0f); /*CMOVNL EAX, EDX*/ + addbyte(0x4d); addbyte(0xc2); addbyte(0x66); /*MOVD XMM4, EAX*/ addbyte(0x0f); @@ -1552,8 +1548,8 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo addbyte(params->detail_scale[1]); addbyte(0x39); /*CMP EBX, EDX*/ addbyte(0xd3); - addbyte(0x0f); /*CMOVA EBX, EDX*/ - addbyte(0x47); + addbyte(0x0f); /*CMOVNL EBX, EDX*/ + addbyte(0x4d); addbyte(0xda); break; case TCA_MSELECT_LOD_FRAC: