Commit 1ee63d69 authored by Ryan C. Gordon's avatar Ryan C. Gordon

Merge r3005:3006 from branches/SDL-1.2: Alpha blending MMX/3DNow register bug.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402297
parent 88bc3dc4
...@@ -387,7 +387,9 @@ BlitRGBtoRGBPixelAlphaMMX(SDL_BlitInfo * info) ...@@ -387,7 +387,9 @@ BlitRGBtoRGBPixelAlphaMMX(SDL_BlitInfo * info)
packsswb_r2r(mm6, mm3); /* 0000FFFF -> mm3 */ packsswb_r2r(mm6, mm3); /* 0000FFFF -> mm3 */
pxor_r2r(mm0, mm3); /* 0000F000 -> mm3 (~channel mask) */ pxor_r2r(mm0, mm3); /* 0000F000 -> mm3 (~channel mask) */
/* get alpha channel shift */ /* get alpha channel shift */
movd_m2r(sf->Ashift, mm5); /* Ashift -> mm5 */ __asm__ __volatile__ (
"movd %0, %%mm5"
: : "rm" ((Uint32) sf->Ashift) ); /* Ashift -> mm5 */
while (height--) { while (height--) {
/* *INDENT-OFF* */ /* *INDENT-OFF* */
...@@ -1632,7 +1634,6 @@ BlitRGBtoRGBPixelAlphaMMX3DNOW(SDL_BlitInfo * info) ...@@ -1632,7 +1634,6 @@ BlitRGBtoRGBPixelAlphaMMX3DNOW(SDL_BlitInfo * info)
int dstskip = info->d_skip >> 2; int dstskip = info->d_skip >> 2;
SDL_PixelFormat *sf = info->src; SDL_PixelFormat *sf = info->src;
Uint32 amask = sf->Amask; Uint32 amask = sf->Amask;
Uint32 ashift = sf->Ashift;
__asm__( __asm__(
/* make mm6 all zeros. */ /* make mm6 all zeros. */
...@@ -1650,7 +1651,7 @@ BlitRGBtoRGBPixelAlphaMMX3DNOW(SDL_BlitInfo * info) ...@@ -1650,7 +1651,7 @@ BlitRGBtoRGBPixelAlphaMMX3DNOW(SDL_BlitInfo * info)
"pxor %%mm4, %%mm3\n\t" /* 0000F000 -> mm3 (~channel mask) */ "pxor %%mm4, %%mm3\n\t" /* 0000F000 -> mm3 (~channel mask) */
/* get alpha channel shift */ /* get alpha channel shift */
"movd %1, %%mm5\n\t" /* Ashift -> mm5 */ "movd %1, %%mm5\n\t" /* Ashift -> mm5 */
: /* nothing */ : "m"(amask), "m"(ashift)); : /* nothing */ : "rm"(amask), "rm"((Uint32) sf->Ashift));
while (height--) { while (height--) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment