src/video/SDL_blit_A.c
changeset 3011 8f4ed5ec2b06
parent 2859 99210400e8b9
child 3013 8cc00819c8d6
equal deleted inserted replaced
3010:a6694a812119 3011:8f4ed5ec2b06
   281         mm_zero = _mm_setzero_si64();   /* 0 -> mm_zero */
   281         mm_zero = _mm_setzero_si64();   /* 0 -> mm_zero */
   282         /* form the alpha mult */
   282         /* form the alpha mult */
   283         amult = alpha | (alpha << 8);
   283         amult = alpha | (alpha << 8);
   284         amult = amult | (amult << 16);
   284         amult = amult | (amult << 16);
   285         chanmask =
   285         chanmask =
   286             (0xff << df->Rshift) | (0xff << df->
   286             (0xff << df->Rshift) | (0xff << df->Gshift) | (0xff << df->
   287                                     Gshift) | (0xff << df->Bshift);
   287                                                            Bshift);
   288         mm_alpha = _mm_set_pi32(0, amult & chanmask);   /* 0000AAAA -> mm_alpha, minus 1 chan */
   288         mm_alpha = _mm_set_pi32(0, amult & chanmask);   /* 0000AAAA -> mm_alpha, minus 1 chan */
   289         mm_alpha = _mm_unpacklo_pi8(mm_alpha, mm_zero); /* 0A0A0A0A -> mm_alpha, minus 1 chan */
   289         mm_alpha = _mm_unpacklo_pi8(mm_alpha, mm_zero); /* 0A0A0A0A -> mm_alpha, minus 1 chan */
   290         /* at this point mm_alpha can be 000A0A0A or 0A0A0A00 or another combo */
   290         /* at this point mm_alpha can be 000A0A0A or 0A0A0A00 or another combo */
   291         dsta = _mm_set_pi32(dalpha, dalpha);    /* dst alpha mask -> dsta */
   291         dsta = _mm_set_pi32(dalpha, dalpha);    /* dst alpha mask -> dsta */
   292 
   292 
   524     Uint32 bmask = RESHIFT(srcfmt->Bshift) << (dstfmt->Bshift);
   524     Uint32 bmask = RESHIFT(srcfmt->Bshift) << (dstfmt->Bshift);
   525     Uint32 amask;
   525     Uint32 amask;
   526     /* Use zero for alpha if either surface doesn't have alpha */
   526     /* Use zero for alpha if either surface doesn't have alpha */
   527     if (dstfmt->Amask) {
   527     if (dstfmt->Amask) {
   528         amask =
   528         amask =
   529             ((srcfmt->Amask) ? RESHIFT(srcfmt->
   529             ((srcfmt->Amask) ? RESHIFT(srcfmt->Ashift) : 0x10) << (dstfmt->
   530                                        Ashift) : 0x10) << (dstfmt->Ashift);
   530                                                                    Ashift);
   531     } else {
   531     } else {
   532         amask =
   532         amask =
   533             0x10101010 & ((dstfmt->Rmask | dstfmt->Gmask | dstfmt->Bmask) ^
   533             0x10101010 & ((dstfmt->Rmask | dstfmt->Gmask | dstfmt->Bmask) ^
   534                           0xFFFFFFFF);
   534                           0xFFFFFFFF);
   535     }
   535     }