• Ryan C. Gordon's avatar
    From: Gabriel Gambetta · 7a800234
    Ryan C. Gordon authored
    To: SDL Mailing List <sdl@libsdl.org>
    Date: Fri, 17 Nov 2006 00:39:29 -0200
    Subject: [SDL] Alpha blending bug - fixed?
    
    It turns out mm5 never got the correct value. This failed :
    
    	[...]
    	"movd %1, %%mm5\n\t"
    	: : "m" (amask), "m" (sf->Ashift) );
    
    
    mm5 got 0xFF000018 instead of 0x00000018. However I did this :
    
    	Uint32 ashift = sf->Ashift;
    	[...]
    	"movd %1, %%mm5\n\t"
    	: : "m" (amask), "m" (ashift) );
    
    and everything worked fine.
    
    The only thing I could find out was that ashift is 32-bit aligned but
    sf->Ashift isn't:
    
    printf("ashift     %8X [%d]\n", &ashift, (int)(&ashift) % 4);
    printf("sf->Ashift %8X [%d]\n", &sf->Ashift, (int)(&sf->Ashift) % 4);
    
    ashift     at BFF0E0C4 [0]
    sf->Ashift at 08AFB9CD [1]
    
    Could this be the problem? If it is, the fix is extremely trivial.
    Should I submit a patch?
    
    	--Gabriel
    
    --HG--
    branch : SDL-1.2
    extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%402236
    7a800234
SDL_blit_A.c 88.6 KB