Skip to content

Commit

Permalink
Merge pull request libsdl-org#4175 from 1bsyl/br_blit_rgb555_to_rb1555
Browse files Browse the repository at this point in the history
Fixed bug 3727 - Blit from RGB555 to ARGB1555
  • Loading branch information
1bsyl committed Mar 11, 2021
2 parents 9d46bd2 + 5134562 commit 3d22731
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions src/video/SDL_blit_N.c
Expand Up @@ -2073,6 +2073,35 @@ Blit_RGB565_BGRA8888(SDL_BlitInfo * info)

#endif /* SDL_HAVE_BLIT_N_RGB565 */

/* RGB555->ARGB1555, and BGR555->ABGR1555, SET_ALPHA */
static void
Blit_RGB555_ARGB1555(SDL_BlitInfo * info)
{
int width = info->dst_w;
int height = info->dst_h;
Uint16 *src = (Uint16 *) info->src;
int srcskip = info->src_skip;
Uint16 *dst = (Uint16 *) info->dst;
int dstskip = info->dst_skip;
SDL_PixelFormat *dstfmt = info->dst_fmt;

Uint16 mask = ((Uint32)info->a >> dstfmt->Aloss) << dstfmt->Ashift;

while (height--) {
/* *INDENT-OFF* */
DUFFS_LOOP(
{
*dst = *src | mask;
++dst;
++src;
},
width);
/* *INDENT-ON* */
src = (Uint16 *) ((Uint8 *) src + srcskip);
dst = (Uint16 *) ((Uint8 *) dst + dstskip);
}
}

static void
BlitNto1(SDL_BlitInfo * info)
{
Expand Down Expand Up @@ -3259,6 +3288,10 @@ static const struct blit_table normal_blit_2[] = {
{0x0000F800, 0x000007E0, 0x0000001F, 4, 0x0000FF00, 0x00FF0000, 0xFF000000,
0, Blit_RGB565_BGRA8888, NO_ALPHA | COPY_ALPHA | SET_ALPHA},
#endif
{0x00007C00, 0x000003E0, 0x0000001F, 2, 0x00007C00, 0x000003E0, 0x0000001F,
0, Blit_RGB555_ARGB1555, SET_ALPHA},
{0x0000001F, 0x000003E0, 0x00007C00, 2, 0x0000001F, 0x000003E0, 0x00007C00,
0, Blit_RGB555_ARGB1555, SET_ALPHA},

/* Default for 16-bit RGB source, used if no other blitter matches */
{0, 0, 0, 0, 0, 0, 0, 0, BlitNtoN, 0}
Expand Down

0 comments on commit 3d22731

Please sign in to comment.