gsdx sw x64: port the scanline generator on AVX

Based on Gabest's work.

* Miss mipmap

Note: dithering info
It is a bit tricky as a2 on linux was rdx register which overlap with fzm (dh/dl)
It might require dedicated windows code
This commit is contained in:
Gregory Hainaut 2016-11-18 18:10:30 +01:00
parent 8e29e09943
commit a281bda9a6
3 changed files with 491 additions and 314 deletions

File diff suppressed because it is too large Load Diff

View File

@ -24,8 +24,11 @@
#if _M_SSE < 0x500 && (defined(_M_AMD64) || defined(_WIN64))
// It is useless to port the code to SSEx, better use the faster 32 bits version instead
void GSDrawScanlineCodeGenerator::Generate()
{
// Avoid a crash if someone want to use it
ret();
}
void GSDrawScanlineCodeGenerator::Init()

View File

@ -740,7 +740,7 @@ void GSDrawScanlineCodeGenerator::SampleTexture()
if(m_sel.ltf)
{
// GSVector4i uf = u.xxzzlh().srl16(1);
// GSVector4i uf = u.xxzzlh().srl16(12);
vpshuflw(xmm0, xmm2, _MM_SHUFFLE(2, 2, 0, 0));
vpshufhw(xmm0, xmm0, _MM_SHUFFLE(2, 2, 0, 0));
@ -749,7 +749,7 @@ void GSDrawScanlineCodeGenerator::SampleTexture()
if(m_sel.prim != GS_SPRITE_CLASS)
{
// GSVector4i vf = v.xxzzlh().srl16(1);
// GSVector4i vf = v.xxzzlh().srl16(12);
vpshuflw(xmm0, xmm3, _MM_SHUFFLE(2, 2, 0, 0));
vpshufhw(xmm0, xmm0, _MM_SHUFFLE(2, 2, 0, 0));