Voodoo now implements texture RGB as a multiplier input in the colour combiner.
This commit is contained in:
parent
7084337906
commit
e162b6166e
3 changed files with 41 additions and 1 deletions
|
|
@ -833,7 +833,8 @@ enum
|
|||
CC_MSELECT_CLOCAL = 1,
|
||||
CC_MSELECT_AOTHER = 2,
|
||||
CC_MSELECT_ALOCAL = 3,
|
||||
CC_MSELECT_TEX = 4
|
||||
CC_MSELECT_TEX = 4,
|
||||
CC_MSELECT_TEXRGB = 5
|
||||
};
|
||||
|
||||
enum
|
||||
|
|
@ -2957,6 +2958,11 @@ static void voodoo_half_triangle(voodoo_t *voodoo, voodoo_params_t *params, vood
|
|||
msel_g = state->tex_a[0];
|
||||
msel_b = state->tex_a[0];
|
||||
break;
|
||||
case CC_MSELECT_TEXRGB:
|
||||
msel_r = state->tex_r[0];
|
||||
msel_g = state->tex_g[0];
|
||||
msel_b = state->tex_b[0];
|
||||
break;
|
||||
|
||||
default:
|
||||
fatal("Bad cc_mselect %i\n", cc_mselect);
|
||||
|
|
|
|||
|
|
@ -1647,6 +1647,13 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addbyte(0x7e);
|
||||
addbyte(0xc1);
|
||||
}
|
||||
if (cc_mselect == CC_MSELECT_TEXRGB)
|
||||
{
|
||||
addbyte(0xf3); /*MOVD XMM4, XMM0*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0x7e);
|
||||
addbyte(0xe0);
|
||||
}
|
||||
|
||||
if ((params->fbzMode & FBZ_CHROMAKEY))
|
||||
{
|
||||
|
|
@ -2109,6 +2116,16 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addlong(offsetof(voodoo_state_t, tex_a));
|
||||
addbyte(2);
|
||||
break;
|
||||
case CC_MSELECT_TEXRGB:
|
||||
addbyte(0x66); /*PUNPCKLBW XMM4, XMM2*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0x60);
|
||||
addbyte(0xe2);
|
||||
addbyte(0xf3); /*MOVQ XMM3, XMM4*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0x7e);
|
||||
addbyte(0xdc);
|
||||
break;
|
||||
default:
|
||||
addbyte(0x66); /*PXOR XMM3, XMM3*/
|
||||
addbyte(0x0f);
|
||||
|
|
|
|||
|
|
@ -1628,6 +1628,13 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addbyte(0x7e);
|
||||
addbyte(0xc1);
|
||||
}
|
||||
if (cc_mselect == CC_MSELECT_TEXRGB)
|
||||
{
|
||||
addbyte(0xf3); /*MOVD XMM4, XMM0*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0x7e);
|
||||
addbyte(0xe0);
|
||||
}
|
||||
|
||||
if ((params->fbzMode & FBZ_CHROMAKEY))
|
||||
{
|
||||
|
|
@ -2095,6 +2102,16 @@ static inline void voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo
|
|||
addlong(offsetof(voodoo_state_t, tex_a));
|
||||
addbyte(2);
|
||||
break;
|
||||
case CC_MSELECT_TEXRGB:
|
||||
addbyte(0x66); /*PUNPCKLBW XMM4, XMM2*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0x60);
|
||||
addbyte(0xe2);
|
||||
addbyte(0xf3); /*MOVQ XMM3, XMM4*/
|
||||
addbyte(0x0f);
|
||||
addbyte(0x7e);
|
||||
addbyte(0xdc);
|
||||
break;
|
||||
default:
|
||||
addbyte(0x66); /*PXOR XMM3, XMM3*/
|
||||
addbyte(0x0f);
|
||||
|
|
|
|||
Loading…
Reference in a new issue