gsdx: help stupid compiler to allow 32 byte move

Default copy-constructor is eight 32 bits move

GSRendererOGL::Lines2Sprites code shrinks from 510B to 398B
(loop of the function 296B => 181B). Hopefully it will reduce the cost
to convert line to sprite on the CPU (i.e. when geometry shader is disabled)
This commit is contained in:
Gregory Hainaut 2016-09-08 20:01:05 +02:00
parent b282909c9e
commit 6ee841319f
1 changed files with 11 additions and 0 deletions

View File

@ -41,10 +41,21 @@ struct alignas(32) GSVertex
uint32 FOG; // FOG:28
};
#if _M_SSE >= 0x500
__m256i mx;
#endif
__m128i m[2];
};
GSVertex() = default; // Warning object is potentially used in hot path
#if _M_SSE >= 0x500
GSVertex(const GSVertex& v) {mx = v.mx;}
void operator = (const GSVertex& v) {mx = v.mx;}
#else
GSVertex(const GSVertex& v) {m[0] = v.m[0]; m[1] = v.m[1];}
void operator = (const GSVertex& v) {m[0] = v.m[0]; m[1] = v.m[1];}
#endif
};
struct GSVertexP