File style cleanup for the SDL 2.0 release
This commit is contained in:
parent
2ac8624930
commit
0cb6385637
376 changed files with 17562 additions and 17773 deletions
|
@ -1601,7 +1601,7 @@ SDL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
if (!renderer->RenderCopyEx) {
|
||||
return SDL_SetError("Renderer does not support RenderCopyEx");
|
||||
}
|
||||
|
||||
|
||||
real_srcrect.x = 0;
|
||||
real_srcrect.y = 0;
|
||||
real_srcrect.w = texture->w;
|
||||
|
|
|
@ -63,10 +63,10 @@ static mmx_t MMX_grn565 = { .uw = {0x07e0, 0x07e0, 0x07e0, 0x07e0} };
|
|||
The MMX routine calculates 256bit=8RGB values in each cycle
|
||||
(4 for row1 & 4 for row2)
|
||||
|
||||
The red/green/blue.. coefficents are taken from the mpeg_play
|
||||
The red/green/blue.. coefficents are taken from the mpeg_play
|
||||
player. They look nice, but I dont know if you can have
|
||||
better values, to avoid integer rounding errors.
|
||||
|
||||
|
||||
|
||||
IMPORTANT:
|
||||
==========
|
||||
|
@ -84,152 +84,152 @@ void ColorRGBDitherYV12MMX1X( int *colortab, Uint32 *rgb_2_pix,
|
|||
Uint32 *row1;
|
||||
Uint32 *row2;
|
||||
|
||||
unsigned char* y = lum +cols*rows; // Pointer to the end
|
||||
unsigned char* y = lum +cols*rows; /* Pointer to the end */
|
||||
int x = 0;
|
||||
row1 = (Uint32 *)out; // 32 bit target
|
||||
row2 = (Uint32 *)out+cols+mod; // start of second row
|
||||
mod = (mod+cols+mod)*4; // increment for row1 in byte
|
||||
row1 = (Uint32 *)out; /* 32 bit target */
|
||||
row2 = (Uint32 *)out+cols+mod; /* start of second row */
|
||||
mod = (mod+cols+mod)*4; /* increment for row1 in byte */
|
||||
|
||||
__asm__ __volatile__ (
|
||||
// tap dance to workaround the inability to use %%ebx at will...
|
||||
// move one thing to the stack...
|
||||
"pushl $0\n" // save a slot on the stack.
|
||||
"pushl %%ebx\n" // save %%ebx.
|
||||
"movl %0, %%ebx\n" // put the thing in ebx.
|
||||
"movl %%ebx,4(%%esp)\n" // put the thing in the stack slot.
|
||||
"popl %%ebx\n" // get back %%ebx (the PIC register).
|
||||
/* tap dance to workaround the inability to use %%ebx at will... */
|
||||
/* move one thing to the stack... */
|
||||
"pushl $0\n" /* save a slot on the stack. */
|
||||
"pushl %%ebx\n" /* save %%ebx. */
|
||||
"movl %0, %%ebx\n" /* put the thing in ebx. */
|
||||
"movl %%ebx,4(%%esp)\n" /* put the thing in the stack slot. */
|
||||
"popl %%ebx\n" /* get back %%ebx (the PIC register). */
|
||||
|
||||
".align 8\n"
|
||||
"1:\n"
|
||||
|
||||
// create Cr (result in mm1)
|
||||
/* create Cr (result in mm1) */
|
||||
"pushl %%ebx\n"
|
||||
"movl 4(%%esp),%%ebx\n"
|
||||
"movd (%%ebx),%%mm1\n" // 0 0 0 0 v3 v2 v1 v0
|
||||
"movd (%%ebx),%%mm1\n" /* 0 0 0 0 v3 v2 v1 v0 */
|
||||
"popl %%ebx\n"
|
||||
"pxor %%mm7,%%mm7\n" // 00 00 00 00 00 00 00 00
|
||||
"movd (%2), %%mm2\n" // 0 0 0 0 l3 l2 l1 l0
|
||||
"punpcklbw %%mm7,%%mm1\n" // 0 v3 0 v2 00 v1 00 v0
|
||||
"punpckldq %%mm1,%%mm1\n" // 00 v1 00 v0 00 v1 00 v0
|
||||
"psubw %9,%%mm1\n" // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0
|
||||
"pxor %%mm7,%%mm7\n" /* 00 00 00 00 00 00 00 00 */
|
||||
"movd (%2), %%mm2\n" /* 0 0 0 0 l3 l2 l1 l0 */
|
||||
"punpcklbw %%mm7,%%mm1\n" /* 0 v3 0 v2 00 v1 00 v0 */
|
||||
"punpckldq %%mm1,%%mm1\n" /* 00 v1 00 v0 00 v1 00 v0 */
|
||||
"psubw %9,%%mm1\n" /* mm1-128:r1 r1 r0 r0 r1 r1 r0 r0 */
|
||||
|
||||
// create Cr_g (result in mm0)
|
||||
"movq %%mm1,%%mm0\n" // r1 r1 r0 r0 r1 r1 r0 r0
|
||||
"pmullw %10,%%mm0\n" // red*-46dec=0.7136*64
|
||||
"pmullw %11,%%mm1\n" // red*89dec=1.4013*64
|
||||
"psraw $6, %%mm0\n" // red=red/64
|
||||
"psraw $6, %%mm1\n" // red=red/64
|
||||
/* create Cr_g (result in mm0) */
|
||||
"movq %%mm1,%%mm0\n" /* r1 r1 r0 r0 r1 r1 r0 r0 */
|
||||
"pmullw %10,%%mm0\n" /* red*-46dec=0.7136*64 */
|
||||
"pmullw %11,%%mm1\n" /* red*89dec=1.4013*64 */
|
||||
"psraw $6, %%mm0\n" /* red=red/64 */
|
||||
"psraw $6, %%mm1\n" /* red=red/64 */
|
||||
|
||||
// create L1 L2 (result in mm2,mm4)
|
||||
// L2=lum+cols
|
||||
"movq (%2,%4),%%mm3\n" // 0 0 0 0 L3 L2 L1 L0
|
||||
"punpckldq %%mm3,%%mm2\n" // L3 L2 L1 L0 l3 l2 l1 l0
|
||||
"movq %%mm2,%%mm4\n" // L3 L2 L1 L0 l3 l2 l1 l0
|
||||
"pand %12,%%mm2\n" // L3 0 L1 0 l3 0 l1 0
|
||||
"pand %13,%%mm4\n" // 0 L2 0 L0 0 l2 0 l0
|
||||
"psrlw $8,%%mm2\n" // 0 L3 0 L1 0 l3 0 l1
|
||||
/* create L1 L2 (result in mm2,mm4) */
|
||||
/* L2=lum+cols */
|
||||
"movq (%2,%4),%%mm3\n" /* 0 0 0 0 L3 L2 L1 L0 */
|
||||
"punpckldq %%mm3,%%mm2\n" /* L3 L2 L1 L0 l3 l2 l1 l0 */
|
||||
"movq %%mm2,%%mm4\n" /* L3 L2 L1 L0 l3 l2 l1 l0 */
|
||||
"pand %12,%%mm2\n" /* L3 0 L1 0 l3 0 l1 0 */
|
||||
"pand %13,%%mm4\n" /* 0 L2 0 L0 0 l2 0 l0 */
|
||||
"psrlw $8,%%mm2\n" /* 0 L3 0 L1 0 l3 0 l1 */
|
||||
|
||||
// create R (result in mm6)
|
||||
"movq %%mm2,%%mm5\n" // 0 L3 0 L1 0 l3 0 l1
|
||||
"movq %%mm4,%%mm6\n" // 0 L2 0 L0 0 l2 0 l0
|
||||
"paddsw %%mm1, %%mm5\n" // lum1+red:x R3 x R1 x r3 x r1
|
||||
"paddsw %%mm1, %%mm6\n" // lum1+red:x R2 x R0 x r2 x r0
|
||||
"packuswb %%mm5,%%mm5\n" // R3 R1 r3 r1 R3 R1 r3 r1
|
||||
"packuswb %%mm6,%%mm6\n" // R2 R0 r2 r0 R2 R0 r2 r0
|
||||
"pxor %%mm7,%%mm7\n" // 00 00 00 00 00 00 00 00
|
||||
"punpcklbw %%mm5,%%mm6\n" // R3 R2 R1 R0 r3 r2 r1 r0
|
||||
/* create R (result in mm6) */
|
||||
"movq %%mm2,%%mm5\n" /* 0 L3 0 L1 0 l3 0 l1 */
|
||||
"movq %%mm4,%%mm6\n" /* 0 L2 0 L0 0 l2 0 l0 */
|
||||
"paddsw %%mm1, %%mm5\n" /* lum1+red:x R3 x R1 x r3 x r1 */
|
||||
"paddsw %%mm1, %%mm6\n" /* lum1+red:x R2 x R0 x r2 x r0 */
|
||||
"packuswb %%mm5,%%mm5\n" /* R3 R1 r3 r1 R3 R1 r3 r1 */
|
||||
"packuswb %%mm6,%%mm6\n" /* R2 R0 r2 r0 R2 R0 r2 r0 */
|
||||
"pxor %%mm7,%%mm7\n" /* 00 00 00 00 00 00 00 00 */
|
||||
"punpcklbw %%mm5,%%mm6\n" /* R3 R2 R1 R0 r3 r2 r1 r0 */
|
||||
|
||||
// create Cb (result in mm1)
|
||||
"movd (%1), %%mm1\n" // 0 0 0 0 u3 u2 u1 u0
|
||||
"punpcklbw %%mm7,%%mm1\n" // 0 u3 0 u2 00 u1 00 u0
|
||||
"punpckldq %%mm1,%%mm1\n" // 00 u1 00 u0 00 u1 00 u0
|
||||
"psubw %9,%%mm1\n" // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0
|
||||
/* create Cb (result in mm1) */
|
||||
"movd (%1), %%mm1\n" /* 0 0 0 0 u3 u2 u1 u0 */
|
||||
"punpcklbw %%mm7,%%mm1\n" /* 0 u3 0 u2 00 u1 00 u0 */
|
||||
"punpckldq %%mm1,%%mm1\n" /* 00 u1 00 u0 00 u1 00 u0 */
|
||||
"psubw %9,%%mm1\n" /* mm1-128:u1 u1 u0 u0 u1 u1 u0 u0 */
|
||||
|
||||
// create Cb_g (result in mm5)
|
||||
"movq %%mm1,%%mm5\n" // u1 u1 u0 u0 u1 u1 u0 u0
|
||||
"pmullw %14,%%mm5\n" // blue*-109dec=1.7129*64
|
||||
"pmullw %15,%%mm1\n" // blue*114dec=1.78125*64
|
||||
"psraw $6, %%mm5\n" // blue=red/64
|
||||
"psraw $6, %%mm1\n" // blue=blue/64
|
||||
/* create Cb_g (result in mm5) */
|
||||
"movq %%mm1,%%mm5\n" /* u1 u1 u0 u0 u1 u1 u0 u0 */
|
||||
"pmullw %14,%%mm5\n" /* blue*-109dec=1.7129*64 */
|
||||
"pmullw %15,%%mm1\n" /* blue*114dec=1.78125*64 */
|
||||
"psraw $6, %%mm5\n" /* blue=red/64 */
|
||||
"psraw $6, %%mm1\n" /* blue=blue/64 */
|
||||
|
||||
// create G (result in mm7)
|
||||
"movq %%mm2,%%mm3\n" // 0 L3 0 L1 0 l3 0 l1
|
||||
"movq %%mm4,%%mm7\n" // 0 L2 0 L0 0 l2 0 l1
|
||||
"paddsw %%mm5, %%mm3\n" // lum1+Cb_g:x G3t x G1t x g3t x g1t
|
||||
"paddsw %%mm5, %%mm7\n" // lum1+Cb_g:x G2t x G0t x g2t x g0t
|
||||
"paddsw %%mm0, %%mm3\n" // lum1+Cr_g:x G3 x G1 x g3 x g1
|
||||
"paddsw %%mm0, %%mm7\n" // lum1+blue:x G2 x G0 x g2 x g0
|
||||
"packuswb %%mm3,%%mm3\n" // G3 G1 g3 g1 G3 G1 g3 g1
|
||||
"packuswb %%mm7,%%mm7\n" // G2 G0 g2 g0 G2 G0 g2 g0
|
||||
"punpcklbw %%mm3,%%mm7\n" // G3 G2 G1 G0 g3 g2 g1 g0
|
||||
/* create G (result in mm7) */
|
||||
"movq %%mm2,%%mm3\n" /* 0 L3 0 L1 0 l3 0 l1 */
|
||||
"movq %%mm4,%%mm7\n" /* 0 L2 0 L0 0 l2 0 l1 */
|
||||
"paddsw %%mm5, %%mm3\n" /* lum1+Cb_g:x G3t x G1t x g3t x g1t */
|
||||
"paddsw %%mm5, %%mm7\n" /* lum1+Cb_g:x G2t x G0t x g2t x g0t */
|
||||
"paddsw %%mm0, %%mm3\n" /* lum1+Cr_g:x G3 x G1 x g3 x g1 */
|
||||
"paddsw %%mm0, %%mm7\n" /* lum1+blue:x G2 x G0 x g2 x g0 */
|
||||
"packuswb %%mm3,%%mm3\n" /* G3 G1 g3 g1 G3 G1 g3 g1 */
|
||||
"packuswb %%mm7,%%mm7\n" /* G2 G0 g2 g0 G2 G0 g2 g0 */
|
||||
"punpcklbw %%mm3,%%mm7\n" /* G3 G2 G1 G0 g3 g2 g1 g0 */
|
||||
|
||||
// create B (result in mm5)
|
||||
"movq %%mm2,%%mm3\n" // 0 L3 0 L1 0 l3 0 l1
|
||||
"movq %%mm4,%%mm5\n" // 0 L2 0 L0 0 l2 0 l1
|
||||
"paddsw %%mm1, %%mm3\n" // lum1+blue:x B3 x B1 x b3 x b1
|
||||
"paddsw %%mm1, %%mm5\n" // lum1+blue:x B2 x B0 x b2 x b0
|
||||
"packuswb %%mm3,%%mm3\n" // B3 B1 b3 b1 B3 B1 b3 b1
|
||||
"packuswb %%mm5,%%mm5\n" // B2 B0 b2 b0 B2 B0 b2 b0
|
||||
"punpcklbw %%mm3,%%mm5\n" // B3 B2 B1 B0 b3 b2 b1 b0
|
||||
/* create B (result in mm5) */
|
||||
"movq %%mm2,%%mm3\n" /* 0 L3 0 L1 0 l3 0 l1 */
|
||||
"movq %%mm4,%%mm5\n" /* 0 L2 0 L0 0 l2 0 l1 */
|
||||
"paddsw %%mm1, %%mm3\n" /* lum1+blue:x B3 x B1 x b3 x b1 */
|
||||
"paddsw %%mm1, %%mm5\n" /* lum1+blue:x B2 x B0 x b2 x b0 */
|
||||
"packuswb %%mm3,%%mm3\n" /* B3 B1 b3 b1 B3 B1 b3 b1 */
|
||||
"packuswb %%mm5,%%mm5\n" /* B2 B0 b2 b0 B2 B0 b2 b0 */
|
||||
"punpcklbw %%mm3,%%mm5\n" /* B3 B2 B1 B0 b3 b2 b1 b0 */
|
||||
|
||||
// fill destination row1 (needed are mm6=Rr,mm7=Gg,mm5=Bb)
|
||||
/* fill destination row1 (needed are mm6=Rr,mm7=Gg,mm5=Bb) */
|
||||
|
||||
"pxor %%mm2,%%mm2\n" // 0 0 0 0 0 0 0 0
|
||||
"pxor %%mm4,%%mm4\n" // 0 0 0 0 0 0 0 0
|
||||
"movq %%mm6,%%mm1\n" // R3 R2 R1 R0 r3 r2 r1 r0
|
||||
"movq %%mm5,%%mm3\n" // B3 B2 B1 B0 b3 b2 b1 b0
|
||||
"pxor %%mm2,%%mm2\n" /* 0 0 0 0 0 0 0 0 */
|
||||
"pxor %%mm4,%%mm4\n" /* 0 0 0 0 0 0 0 0 */
|
||||
"movq %%mm6,%%mm1\n" /* R3 R2 R1 R0 r3 r2 r1 r0 */
|
||||
"movq %%mm5,%%mm3\n" /* B3 B2 B1 B0 b3 b2 b1 b0 */
|
||||
|
||||
// process lower lum
|
||||
"punpcklbw %%mm4,%%mm1\n" // 0 r3 0 r2 0 r1 0 r0
|
||||
"punpcklbw %%mm4,%%mm3\n" // 0 b3 0 b2 0 b1 0 b0
|
||||
"movq %%mm1,%%mm2\n" // 0 r3 0 r2 0 r1 0 r0
|
||||
"movq %%mm3,%%mm0\n" // 0 b3 0 b2 0 b1 0 b0
|
||||
"punpcklwd %%mm1,%%mm3\n" // 0 r1 0 b1 0 r0 0 b0
|
||||
"punpckhwd %%mm2,%%mm0\n" // 0 r3 0 b3 0 r2 0 b2
|
||||
/* process lower lum */
|
||||
"punpcklbw %%mm4,%%mm1\n" /* 0 r3 0 r2 0 r1 0 r0 */
|
||||
"punpcklbw %%mm4,%%mm3\n" /* 0 b3 0 b2 0 b1 0 b0 */
|
||||
"movq %%mm1,%%mm2\n" /* 0 r3 0 r2 0 r1 0 r0 */
|
||||
"movq %%mm3,%%mm0\n" /* 0 b3 0 b2 0 b1 0 b0 */
|
||||
"punpcklwd %%mm1,%%mm3\n" /* 0 r1 0 b1 0 r0 0 b0 */
|
||||
"punpckhwd %%mm2,%%mm0\n" /* 0 r3 0 b3 0 r2 0 b2 */
|
||||
|
||||
"pxor %%mm2,%%mm2\n" // 0 0 0 0 0 0 0 0
|
||||
"movq %%mm7,%%mm1\n" // G3 G2 G1 G0 g3 g2 g1 g0
|
||||
"punpcklbw %%mm1,%%mm2\n" // g3 0 g2 0 g1 0 g0 0
|
||||
"punpcklwd %%mm4,%%mm2\n" // 0 0 g1 0 0 0 g0 0
|
||||
"por %%mm3, %%mm2\n" // 0 r1 g1 b1 0 r0 g0 b0
|
||||
"movq %%mm2,(%3)\n" // wrote out ! row1
|
||||
"pxor %%mm2,%%mm2\n" /* 0 0 0 0 0 0 0 0 */
|
||||
"movq %%mm7,%%mm1\n" /* G3 G2 G1 G0 g3 g2 g1 g0 */
|
||||
"punpcklbw %%mm1,%%mm2\n" /* g3 0 g2 0 g1 0 g0 0 */
|
||||
"punpcklwd %%mm4,%%mm2\n" /* 0 0 g1 0 0 0 g0 0 */
|
||||
"por %%mm3, %%mm2\n" /* 0 r1 g1 b1 0 r0 g0 b0 */
|
||||
"movq %%mm2,(%3)\n" /* wrote out ! row1 */
|
||||
|
||||
"pxor %%mm2,%%mm2\n" // 0 0 0 0 0 0 0 0
|
||||
"punpcklbw %%mm1,%%mm4\n" // g3 0 g2 0 g1 0 g0 0
|
||||
"punpckhwd %%mm2,%%mm4\n" // 0 0 g3 0 0 0 g2 0
|
||||
"por %%mm0, %%mm4\n" // 0 r3 g3 b3 0 r2 g2 b2
|
||||
"movq %%mm4,8(%3)\n" // wrote out ! row1
|
||||
"pxor %%mm2,%%mm2\n" /* 0 0 0 0 0 0 0 0 */
|
||||
"punpcklbw %%mm1,%%mm4\n" /* g3 0 g2 0 g1 0 g0 0 */
|
||||
"punpckhwd %%mm2,%%mm4\n" /* 0 0 g3 0 0 0 g2 0 */
|
||||
"por %%mm0, %%mm4\n" /* 0 r3 g3 b3 0 r2 g2 b2 */
|
||||
"movq %%mm4,8(%3)\n" /* wrote out ! row1 */
|
||||
|
||||
// fill destination row2 (needed are mm6=Rr,mm7=Gg,mm5=Bb)
|
||||
// this can be done "destructive"
|
||||
"pxor %%mm2,%%mm2\n" // 0 0 0 0 0 0 0 0
|
||||
"punpckhbw %%mm2,%%mm6\n" // 0 R3 0 R2 0 R1 0 R0
|
||||
"punpckhbw %%mm1,%%mm5\n" // G3 B3 G2 B2 G1 B1 G0 B0
|
||||
"movq %%mm5,%%mm1\n" // G3 B3 G2 B2 G1 B1 G0 B0
|
||||
"punpcklwd %%mm6,%%mm1\n" // 0 R1 G1 B1 0 R0 G0 B0
|
||||
"movq %%mm1,(%5)\n" // wrote out ! row2
|
||||
"punpckhwd %%mm6,%%mm5\n" // 0 R3 G3 B3 0 R2 G2 B2
|
||||
"movq %%mm5,8(%5)\n" // wrote out ! row2
|
||||
/* fill destination row2 (needed are mm6=Rr,mm7=Gg,mm5=Bb) */
|
||||
/* this can be done "destructive" */
|
||||
"pxor %%mm2,%%mm2\n" /* 0 0 0 0 0 0 0 0 */
|
||||
"punpckhbw %%mm2,%%mm6\n" /* 0 R3 0 R2 0 R1 0 R0 */
|
||||
"punpckhbw %%mm1,%%mm5\n" /* G3 B3 G2 B2 G1 B1 G0 B0 */
|
||||
"movq %%mm5,%%mm1\n" /* G3 B3 G2 B2 G1 B1 G0 B0 */
|
||||
"punpcklwd %%mm6,%%mm1\n" /* 0 R1 G1 B1 0 R0 G0 B0 */
|
||||
"movq %%mm1,(%5)\n" /* wrote out ! row2 */
|
||||
"punpckhwd %%mm6,%%mm5\n" /* 0 R3 G3 B3 0 R2 G2 B2 */
|
||||
"movq %%mm5,8(%5)\n" /* wrote out ! row2 */
|
||||
|
||||
"addl $4,%2\n" // lum+4
|
||||
"leal 16(%3),%3\n" // row1+16
|
||||
"leal 16(%5),%5\n" // row2+16
|
||||
"addl $2,(%%esp)\n" // cr+2
|
||||
"addl $2,%1\n" // cb+2
|
||||
"addl $4,%2\n" /* lum+4 */
|
||||
"leal 16(%3),%3\n" /* row1+16 */
|
||||
"leal 16(%5),%5\n" /* row2+16 */
|
||||
"addl $2,(%%esp)\n" /* cr+2 */
|
||||
"addl $2,%1\n" /* cb+2 */
|
||||
|
||||
"addl $4,%6\n" // x+4
|
||||
"addl $4,%6\n" /* x+4 */
|
||||
"cmpl %4,%6\n"
|
||||
|
||||
"jl 1b\n"
|
||||
"addl %4,%2\n" // lum += cols
|
||||
"addl %8,%3\n" // row1+= mod
|
||||
"addl %8,%5\n" // row2+= mod
|
||||
"movl $0,%6\n" // x=0
|
||||
"addl %4,%2\n" /* lum += cols */
|
||||
"addl %8,%3\n" /* row1+= mod */
|
||||
"addl %8,%5\n" /* row2+= mod */
|
||||
"movl $0,%6\n" /* x=0 */
|
||||
"cmpl %7,%2\n"
|
||||
"jl 1b\n"
|
||||
|
||||
"addl $4,%%esp\n" // get rid of the stack slot we reserved.
|
||||
"emms\n" // reset MMX registers.
|
||||
"addl $4,%%esp\n" /* get rid of the stack slot we reserved. */
|
||||
"emms\n" /* reset MMX registers. */
|
||||
:
|
||||
: "m" (cr), "r"(cb),"r"(lum),
|
||||
"r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
|
||||
|
@ -254,125 +254,125 @@ void Color565DitherYV12MMX1X( int *colortab, Uint32 *rgb_2_pix,
|
|||
mod = (mod+cols+mod)*2; /* increment for row1 in byte */
|
||||
|
||||
__asm__ __volatile__(
|
||||
// tap dance to workaround the inability to use %%ebx at will...
|
||||
// move one thing to the stack...
|
||||
"pushl $0\n" // save a slot on the stack.
|
||||
"pushl %%ebx\n" // save %%ebx.
|
||||
"movl %0, %%ebx\n" // put the thing in ebx.
|
||||
"movl %%ebx, 4(%%esp)\n" // put the thing in the stack slot.
|
||||
"popl %%ebx\n" // get back %%ebx (the PIC register).
|
||||
/* tap dance to workaround the inability to use %%ebx at will... */
|
||||
/* move one thing to the stack... */
|
||||
"pushl $0\n" /* save a slot on the stack. */
|
||||
"pushl %%ebx\n" /* save %%ebx. */
|
||||
"movl %0, %%ebx\n" /* put the thing in ebx. */
|
||||
"movl %%ebx, 4(%%esp)\n" /* put the thing in the stack slot. */
|
||||
"popl %%ebx\n" /* get back %%ebx (the PIC register). */
|
||||
|
||||
".align 8\n"
|
||||
"1:\n"
|
||||
|
||||
"movd (%1), %%mm0\n" // 4 Cb 0 0 0 0 u3 u2 u1 u0
|
||||
"movd (%1), %%mm0\n" /* 4 Cb 0 0 0 0 u3 u2 u1 u0 */
|
||||
"pxor %%mm7, %%mm7\n"
|
||||
"pushl %%ebx\n"
|
||||
"movl 4(%%esp), %%ebx\n"
|
||||
"movd (%%ebx), %%mm1\n" // 4 Cr 0 0 0 0 v3 v2 v1 v0
|
||||
"movd (%%ebx), %%mm1\n" /* 4 Cr 0 0 0 0 v3 v2 v1 v0 */
|
||||
"popl %%ebx\n"
|
||||
|
||||
"punpcklbw %%mm7, %%mm0\n" // 4 W cb 0 u3 0 u2 0 u1 0 u0
|
||||
"punpcklbw %%mm7, %%mm1\n" // 4 W cr 0 v3 0 v2 0 v1 0 v0
|
||||
"punpcklbw %%mm7, %%mm0\n" /* 4 W cb 0 u3 0 u2 0 u1 0 u0 */
|
||||
"punpcklbw %%mm7, %%mm1\n" /* 4 W cr 0 v3 0 v2 0 v1 0 v0 */
|
||||
"psubw %9, %%mm0\n"
|
||||
"psubw %9, %%mm1\n"
|
||||
"movq %%mm0, %%mm2\n" // Cb 0 u3 0 u2 0 u1 0 u0
|
||||
"movq %%mm1, %%mm3\n" // Cr
|
||||
"pmullw %10, %%mm2\n" // Cb2green 0 R3 0 R2 0 R1 0 R0
|
||||
"movq (%2), %%mm6\n" // L1 l7 L6 L5 L4 L3 L2 L1 L0
|
||||
"pmullw %11, %%mm0\n" // Cb2blue
|
||||
"pand %12, %%mm6\n" // L1 00 L6 00 L4 00 L2 00 L0
|
||||
"pmullw %13, %%mm3\n" // Cr2green
|
||||
"movq (%2), %%mm7\n" // L2
|
||||
"pmullw %14, %%mm1\n" // Cr2red
|
||||
"psrlw $8, %%mm7\n" // L2 00 L7 00 L5 00 L3 00 L1
|
||||
"pmullw %15, %%mm6\n" // lum1
|
||||
"paddw %%mm3, %%mm2\n" // Cb2green + Cr2green == green
|
||||
"pmullw %15, %%mm7\n" // lum2
|
||||
"movq %%mm0, %%mm2\n" /* Cb 0 u3 0 u2 0 u1 0 u0 */
|
||||
"movq %%mm1, %%mm3\n" /* Cr */
|
||||
"pmullw %10, %%mm2\n" /* Cb2green 0 R3 0 R2 0 R1 0 R0 */
|
||||
"movq (%2), %%mm6\n" /* L1 l7 L6 L5 L4 L3 L2 L1 L0 */
|
||||
"pmullw %11, %%mm0\n" /* Cb2blue */
|
||||
"pand %12, %%mm6\n" /* L1 00 L6 00 L4 00 L2 00 L0 */
|
||||
"pmullw %13, %%mm3\n" /* Cr2green */
|
||||
"movq (%2), %%mm7\n" /* L2 */
|
||||
"pmullw %14, %%mm1\n" /* Cr2red */
|
||||
"psrlw $8, %%mm7\n" /* L2 00 L7 00 L5 00 L3 00 L1 */
|
||||
"pmullw %15, %%mm6\n" /* lum1 */
|
||||
"paddw %%mm3, %%mm2\n" /* Cb2green + Cr2green == green */
|
||||
"pmullw %15, %%mm7\n" /* lum2 */
|
||||
|
||||
"movq %%mm6, %%mm4\n" // lum1
|
||||
"paddw %%mm0, %%mm6\n" // lum1 +blue 00 B6 00 B4 00 B2 00 B0
|
||||
"movq %%mm4, %%mm5\n" // lum1
|
||||
"paddw %%mm1, %%mm4\n" // lum1 +red 00 R6 00 R4 00 R2 00 R0
|
||||
"paddw %%mm2, %%mm5\n" // lum1 +green 00 G6 00 G4 00 G2 00 G0
|
||||
"psraw $6, %%mm4\n" // R1 0 .. 64
|
||||
"movq %%mm7, %%mm3\n" // lum2 00 L7 00 L5 00 L3 00 L1
|
||||
"psraw $6, %%mm5\n" // G1 - .. +
|
||||
"paddw %%mm0, %%mm7\n" // Lum2 +blue 00 B7 00 B5 00 B3 00 B1
|
||||
"psraw $6, %%mm6\n" // B1 0 .. 64
|
||||
"packuswb %%mm4, %%mm4\n" // R1 R1
|
||||
"packuswb %%mm5, %%mm5\n" // G1 G1
|
||||
"packuswb %%mm6, %%mm6\n" // B1 B1
|
||||
"movq %%mm6, %%mm4\n" /* lum1 */
|
||||
"paddw %%mm0, %%mm6\n" /* lum1 +blue 00 B6 00 B4 00 B2 00 B0 */
|
||||
"movq %%mm4, %%mm5\n" /* lum1 */
|
||||
"paddw %%mm1, %%mm4\n" /* lum1 +red 00 R6 00 R4 00 R2 00 R0 */
|
||||
"paddw %%mm2, %%mm5\n" /* lum1 +green 00 G6 00 G4 00 G2 00 G0 */
|
||||
"psraw $6, %%mm4\n" /* R1 0 .. 64 */
|
||||
"movq %%mm7, %%mm3\n" /* lum2 00 L7 00 L5 00 L3 00 L1 */
|
||||
"psraw $6, %%mm5\n" /* G1 - .. + */
|
||||
"paddw %%mm0, %%mm7\n" /* Lum2 +blue 00 B7 00 B5 00 B3 00 B1 */
|
||||
"psraw $6, %%mm6\n" /* B1 0 .. 64 */
|
||||
"packuswb %%mm4, %%mm4\n" /* R1 R1 */
|
||||
"packuswb %%mm5, %%mm5\n" /* G1 G1 */
|
||||
"packuswb %%mm6, %%mm6\n" /* B1 B1 */
|
||||
"punpcklbw %%mm4, %%mm4\n"
|
||||
"punpcklbw %%mm5, %%mm5\n"
|
||||
|
||||
"pand %16, %%mm4\n"
|
||||
"psllw $3, %%mm5\n" // GREEN 1
|
||||
"psllw $3, %%mm5\n" /* GREEN 1 */
|
||||
"punpcklbw %%mm6, %%mm6\n"
|
||||
"pand %17, %%mm5\n"
|
||||
"pand %16, %%mm6\n"
|
||||
"por %%mm5, %%mm4\n" //
|
||||
"psrlw $11, %%mm6\n" // BLUE 1
|
||||
"movq %%mm3, %%mm5\n" // lum2
|
||||
"paddw %%mm1, %%mm3\n" // lum2 +red 00 R7 00 R5 00 R3 00 R1
|
||||
"paddw %%mm2, %%mm5\n" // lum2 +green 00 G7 00 G5 00 G3 00 G1
|
||||
"psraw $6, %%mm3\n" // R2
|
||||
"por %%mm6, %%mm4\n" // MM4
|
||||
"psraw $6, %%mm5\n" // G2
|
||||
"movq (%2, %4), %%mm6\n" // L3 load lum2
|
||||
"por %%mm5, %%mm4\n" /* */
|
||||
"psrlw $11, %%mm6\n" /* BLUE 1 */
|
||||
"movq %%mm3, %%mm5\n" /* lum2 */
|
||||
"paddw %%mm1, %%mm3\n" /* lum2 +red 00 R7 00 R5 00 R3 00 R1 */
|
||||
"paddw %%mm2, %%mm5\n" /* lum2 +green 00 G7 00 G5 00 G3 00 G1 */
|
||||
"psraw $6, %%mm3\n" /* R2 */
|
||||
"por %%mm6, %%mm4\n" /* MM4 */
|
||||
"psraw $6, %%mm5\n" /* G2 */
|
||||
"movq (%2, %4), %%mm6\n" /* L3 load lum2 */
|
||||
"psraw $6, %%mm7\n"
|
||||
"packuswb %%mm3, %%mm3\n"
|
||||
"packuswb %%mm5, %%mm5\n"
|
||||
"packuswb %%mm7, %%mm7\n"
|
||||
"pand %12, %%mm6\n" // L3
|
||||
"pand %12, %%mm6\n" /* L3 */
|
||||
"punpcklbw %%mm3, %%mm3\n"
|
||||
"punpcklbw %%mm5, %%mm5\n"
|
||||
"pmullw %15, %%mm6\n" // lum3
|
||||
"pmullw %15, %%mm6\n" /* lum3 */
|
||||
"punpcklbw %%mm7, %%mm7\n"
|
||||
"psllw $3, %%mm5\n" // GREEN 2
|
||||
"psllw $3, %%mm5\n" /* GREEN 2 */
|
||||
"pand %16, %%mm7\n"
|
||||
"pand %16, %%mm3\n"
|
||||
"psrlw $11, %%mm7\n" // BLUE 2
|
||||
"psrlw $11, %%mm7\n" /* BLUE 2 */
|
||||
"pand %17, %%mm5\n"
|
||||
"por %%mm7, %%mm3\n"
|
||||
"movq (%2,%4), %%mm7\n" // L4 load lum2
|
||||
"por %%mm5, %%mm3\n" //
|
||||
"psrlw $8, %%mm7\n" // L4
|
||||
"movq (%2,%4), %%mm7\n" /* L4 load lum2 */
|
||||
"por %%mm5, %%mm3\n"
|
||||
"psrlw $8, %%mm7\n" /* L4 */
|
||||
"movq %%mm4, %%mm5\n"
|
||||
"punpcklwd %%mm3, %%mm4\n"
|
||||
"pmullw %15, %%mm7\n" // lum4
|
||||
"pmullw %15, %%mm7\n" /* lum4 */
|
||||
"punpckhwd %%mm3, %%mm5\n"
|
||||
|
||||
"movq %%mm4, (%3)\n" // write row1
|
||||
"movq %%mm5, 8(%3)\n" // write row1
|
||||
"movq %%mm4, (%3)\n" /* write row1 */
|
||||
"movq %%mm5, 8(%3)\n" /* write row1 */
|
||||
|
||||
"movq %%mm6, %%mm4\n" // Lum3
|
||||
"paddw %%mm0, %%mm6\n" // Lum3 +blue
|
||||
"movq %%mm6, %%mm4\n" /* Lum3 */
|
||||
"paddw %%mm0, %%mm6\n" /* Lum3 +blue */
|
||||
|
||||
"movq %%mm4, %%mm5\n" // Lum3
|
||||
"paddw %%mm1, %%mm4\n" // Lum3 +red
|
||||
"paddw %%mm2, %%mm5\n" // Lum3 +green
|
||||
"movq %%mm4, %%mm5\n" /* Lum3 */
|
||||
"paddw %%mm1, %%mm4\n" /* Lum3 +red */
|
||||
"paddw %%mm2, %%mm5\n" /* Lum3 +green */
|
||||
"psraw $6, %%mm4\n"
|
||||
"movq %%mm7, %%mm3\n" // Lum4
|
||||
"movq %%mm7, %%mm3\n" /* Lum4 */
|
||||
"psraw $6, %%mm5\n"
|
||||
"paddw %%mm0, %%mm7\n" // Lum4 +blue
|
||||
"psraw $6, %%mm6\n" // Lum3 +blue
|
||||
"movq %%mm3, %%mm0\n" // Lum4
|
||||
"paddw %%mm0, %%mm7\n" /* Lum4 +blue */
|
||||
"psraw $6, %%mm6\n" /* Lum3 +blue */
|
||||
"movq %%mm3, %%mm0\n" /* Lum4 */
|
||||
"packuswb %%mm4, %%mm4\n"
|
||||
"paddw %%mm1, %%mm3\n" // Lum4 +red
|
||||
"paddw %%mm1, %%mm3\n" /* Lum4 +red */
|
||||
"packuswb %%mm5, %%mm5\n"
|
||||
"paddw %%mm2, %%mm0\n" // Lum4 +green
|
||||
"paddw %%mm2, %%mm0\n" /* Lum4 +green */
|
||||
"packuswb %%mm6, %%mm6\n"
|
||||
"punpcklbw %%mm4, %%mm4\n"
|
||||
"punpcklbw %%mm5, %%mm5\n"
|
||||
"punpcklbw %%mm6, %%mm6\n"
|
||||
"psllw $3, %%mm5\n" // GREEN 3
|
||||
"psllw $3, %%mm5\n" /* GREEN 3 */
|
||||
"pand %16, %%mm4\n"
|
||||
"psraw $6, %%mm3\n" // psr 6
|
||||
"psraw $6, %%mm3\n" /* psr 6 */
|
||||
"psraw $6, %%mm0\n"
|
||||
"pand %16, %%mm6\n" // BLUE
|
||||
"pand %16, %%mm6\n" /* BLUE */
|
||||
"pand %17, %%mm5\n"
|
||||
"psrlw $11, %%mm6\n" // BLUE 3
|
||||
"psrlw $11, %%mm6\n" /* BLUE 3 */
|
||||
"por %%mm5, %%mm4\n"
|
||||
"psraw $6, %%mm7\n"
|
||||
"por %%mm6, %%mm4\n"
|
||||
|
@ -383,8 +383,8 @@ void Color565DitherYV12MMX1X( int *colortab, Uint32 *rgb_2_pix,
|
|||
"punpcklbw %%mm0, %%mm0\n"
|
||||
"punpcklbw %%mm7, %%mm7\n"
|
||||
"pand %16, %%mm3\n"
|
||||
"pand %16, %%mm7\n" // BLUE
|
||||
"psllw $3, %%mm0\n" // GREEN 4
|
||||
"pand %16, %%mm7\n" /* BLUE */
|
||||
"psllw $3, %%mm0\n" /* GREEN 4 */
|
||||
"psrlw $11, %%mm7\n"
|
||||
"pand %17, %%mm0\n"
|
||||
"por %%mm7, %%mm3\n"
|
||||
|
@ -404,16 +404,16 @@ void Color565DitherYV12MMX1X( int *colortab, Uint32 *rgb_2_pix,
|
|||
"addl $4, %1\n"
|
||||
"cmpl %4, %6\n"
|
||||
"leal 16(%3), %3\n"
|
||||
"leal 16(%5),%5\n" // row2+16
|
||||
"leal 16(%5),%5\n" /* row2+16 */
|
||||
|
||||
"jl 1b\n"
|
||||
"addl %4, %2\n" // lum += cols
|
||||
"addl %8, %3\n" // row1+= mod
|
||||
"addl %8, %5\n" // row2+= mod
|
||||
"movl $0, %6\n" // x=0
|
||||
"addl %4, %2\n" /* lum += cols */
|
||||
"addl %8, %3\n" /* row1+= mod */
|
||||
"addl %8, %5\n" /* row2+= mod */
|
||||
"movl $0, %6\n" /* x=0 */
|
||||
"cmpl %7, %2\n"
|
||||
"jl 1b\n"
|
||||
"addl $4, %%esp\n" // get rid of the stack slot we reserved.
|
||||
"addl $4, %%esp\n" /* get rid of the stack slot we reserved. */
|
||||
"emms\n"
|
||||
:
|
||||
: "m" (cr), "r"(cb),"r"(lum),
|
||||
|
|
|
@ -26,17 +26,17 @@
|
|||
|
||||
* Copyright (c) 1995 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose, without fee, and without written agreement is
|
||||
* hereby granted, provided that the above copyright notice and the following
|
||||
* two paragraphs appear in all copies of this software.
|
||||
*
|
||||
*
|
||||
* IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
|
||||
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
|
||||
* OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
|
||||
* CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
|
||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
|
||||
|
@ -45,17 +45,17 @@
|
|||
|
||||
* Copyright (c) 1995 Erik Corry
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose, without fee, and without written agreement is
|
||||
* hereby granted, provided that the above copyright notice and the following
|
||||
* two paragraphs appear in all copies of this software.
|
||||
*
|
||||
*
|
||||
* IN NO EVENT SHALL ERIK CORRY BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
|
||||
* SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
|
||||
* THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF ERIK CORRY HAS BEEN ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* ERIK CORRY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
|
||||
|
@ -64,17 +64,17 @@
|
|||
|
||||
* Portions of this software Copyright (c) 1995 Brown University.
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software and its
|
||||
* documentation for any purpose, without fee, and without written agreement
|
||||
* is hereby granted, provided that the above copyright notice and the
|
||||
* following two paragraphs appear in all copies of this software.
|
||||
*
|
||||
*
|
||||
* IN NO EVENT SHALL BROWN UNIVERSITY BE LIABLE TO ANY PARTY FOR
|
||||
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
|
||||
* OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF BROWN
|
||||
* UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* BROWN UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
|
||||
|
@ -904,7 +904,7 @@ SDL_SW_SetupYUVDisplay(SDL_SW_YUVTexture * swdata, Uint32 target_format)
|
|||
g_2_pix_alloc = &swdata->rgb_2_pix[1 * 768];
|
||||
b_2_pix_alloc = &swdata->rgb_2_pix[2 * 768];
|
||||
|
||||
/*
|
||||
/*
|
||||
* Set up entries 0-255 in rgb-to-pixel value tables.
|
||||
*/
|
||||
for (i = 0; i < 256; ++i) {
|
||||
|
@ -922,7 +922,7 @@ SDL_SW_SetupYUVDisplay(SDL_SW_YUVTexture * swdata, Uint32 target_format)
|
|||
/*
|
||||
* If we have 16-bit output depth, then we double the value
|
||||
* in the top word. This means that we can write out both
|
||||
* pixels in the pixel doubling mode with one op. It is
|
||||
* pixels in the pixel doubling mode with one op. It is
|
||||
* harmless in the normal case as storing a 32-bit value
|
||||
* through a short pointer will lose the top bits anyway.
|
||||
*/
|
||||
|
|
|
@ -121,23 +121,23 @@ HRESULT WINAPI D3DXCreateMatrixStack(DWORD flags, LPD3DXMATRIXSTACK* ppstack);
|
|||
#endif
|
||||
|
||||
#ifdef ASSEMBLE_SHADER
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// ID3DXBuffer:
|
||||
// ------------
|
||||
// The buffer object is used by D3DX to return arbitrary size data.
|
||||
//
|
||||
// GetBufferPointer -
|
||||
// Returns a pointer to the beginning of the buffer.
|
||||
//
|
||||
// GetBufferSize -
|
||||
// Returns the size of the buffer, in bytes.
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
/**************************************************************************
|
||||
* ID3DXBuffer:
|
||||
* ------------
|
||||
* The buffer object is used by D3DX to return arbitrary size data.
|
||||
*
|
||||
* GetBufferPointer -
|
||||
* Returns a pointer to the beginning of the buffer.
|
||||
*
|
||||
* GetBufferSize -
|
||||
* Returns the size of the buffer, in bytes.
|
||||
**************************************************************************/
|
||||
|
||||
typedef interface ID3DXBuffer ID3DXBuffer;
|
||||
typedef interface ID3DXBuffer *LPD3DXBUFFER;
|
||||
|
||||
// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
|
||||
DEFINE_GUID(IID_ID3DXBuffer,
|
||||
/* {8BA5FB08-5195-40e2-AC58-0D989C3A0102} */
|
||||
DEFINE_GUID(IID_ID3DXBuffer,
|
||||
0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
|
||||
|
||||
#undef INTERFACE
|
||||
|
@ -149,12 +149,12 @@ typedef interface ID3DXBuffer {
|
|||
typedef const struct ID3DXBufferVtbl ID3DXBufferVtbl;
|
||||
const struct ID3DXBufferVtbl
|
||||
{
|
||||
// IUnknown
|
||||
/* IUnknown */
|
||||
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
||||
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
||||
|
||||
// ID3DXBuffer
|
||||
/* ID3DXBuffer */
|
||||
STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
|
||||
STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
|
||||
};
|
||||
|
@ -444,7 +444,7 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
SDL_DisplayMode fullscreen_mode;
|
||||
D3DMATRIX matrix;
|
||||
int d3dxVersion;
|
||||
char d3dxDLLFile[50];
|
||||
char d3dxDLLFile[50];
|
||||
|
||||
renderer = (SDL_Renderer *) SDL_calloc(1, sizeof(*renderer));
|
||||
if (!renderer) {
|
||||
|
@ -496,7 +496,7 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (!data->d3d || !data->matrixStack) {
|
||||
SDL_free(renderer);
|
||||
SDL_free(data);
|
||||
|
@ -548,14 +548,14 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
pparams.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
|
||||
if (window_flags & SDL_WINDOW_FULLSCREEN) {
|
||||
if ( ( window_flags & SDL_WINDOW_FULLSCREEN_DESKTOP ) == SDL_WINDOW_FULLSCREEN_DESKTOP ) {
|
||||
pparams.Windowed = TRUE;
|
||||
pparams.FullScreen_RefreshRateInHz = 0;
|
||||
} else {
|
||||
if ( ( window_flags & SDL_WINDOW_FULLSCREEN_DESKTOP ) == SDL_WINDOW_FULLSCREEN_DESKTOP ) {
|
||||
pparams.Windowed = TRUE;
|
||||
pparams.FullScreen_RefreshRateInHz = 0;
|
||||
} else {
|
||||
pparams.Windowed = FALSE;
|
||||
pparams.FullScreen_RefreshRateInHz =
|
||||
fullscreen_mode.refresh_rate;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
pparams.Windowed = TRUE;
|
||||
pparams.FullScreen_RefreshRateInHz = 0;
|
||||
|
@ -1338,7 +1338,7 @@ D3D_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
|
||||
D3D_SetBlendMode(data, texture->blendMode);
|
||||
|
||||
// Rotate and translate
|
||||
/* Rotate and translate */
|
||||
ID3DXMatrixStack_Push(data->matrixStack);
|
||||
ID3DXMatrixStack_LoadIdentity(data->matrixStack);
|
||||
ID3DXMatrixStack_RotateYawPitchRoll(data->matrixStack, 0.0, 0.0, (float)(M_PI * (float) angle / 180.0f));
|
||||
|
@ -1491,7 +1491,7 @@ D3D_DestroyRenderer(SDL_Renderer * renderer)
|
|||
D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata;
|
||||
|
||||
if (data) {
|
||||
// Release the render target
|
||||
/* Release the render target */
|
||||
if (data->defaultRenderTarget) {
|
||||
IDirect3DSurface9_Release(data->defaultRenderTarget);
|
||||
data->defaultRenderTarget = NULL;
|
||||
|
@ -1500,7 +1500,7 @@ D3D_DestroyRenderer(SDL_Renderer * renderer)
|
|||
IDirect3DSurface9_Release(data->currentRenderTarget);
|
||||
data->currentRenderTarget = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (data->device) {
|
||||
IDirect3DDevice9_Release(data->device);
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ typedef struct
|
|||
Uint32 color;
|
||||
int blendMode;
|
||||
} current;
|
||||
|
||||
|
||||
SDL_bool GL_EXT_framebuffer_object_supported;
|
||||
GL_FBOList *framebuffers;
|
||||
|
||||
|
@ -119,7 +119,7 @@ typedef struct
|
|||
SDL_bool GL_ARB_multitexture_supported;
|
||||
PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
|
||||
GLint num_texture_units;
|
||||
|
||||
|
||||
PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
|
||||
PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
|
||||
PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
|
||||
|
@ -147,7 +147,7 @@ typedef struct
|
|||
SDL_bool yuv;
|
||||
GLuint utexture;
|
||||
GLuint vtexture;
|
||||
|
||||
|
||||
GL_FBOList *fbo;
|
||||
} GL_TextureData;
|
||||
|
||||
|
@ -408,7 +408,7 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_YV12;
|
||||
renderer->info.texture_formats[renderer->info.num_texture_formats++] = SDL_PIXELFORMAT_IYUV;
|
||||
}
|
||||
|
||||
|
||||
if (SDL_GL_ExtensionSupported("GL_EXT_framebuffer_object")) {
|
||||
data->GL_EXT_framebuffer_object_supported = SDL_TRUE;
|
||||
data->glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)
|
||||
|
@ -527,7 +527,7 @@ GL_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
|||
}
|
||||
|
||||
texture->driverdata = data;
|
||||
|
||||
|
||||
if (texture->access == SDL_TEXTUREACCESS_TARGET) {
|
||||
data->fbo = GL_GetFBO(renderdata, texture->w, texture->h);
|
||||
} else {
|
||||
|
@ -702,7 +702,7 @@ GL_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
GL_TextureData *data = (GL_TextureData *) texture->driverdata;
|
||||
|
||||
data->locked_rect = *rect;
|
||||
*pixels =
|
||||
*pixels =
|
||||
(void *) ((Uint8 *) data->pixels + rect->y * data->pitch +
|
||||
rect->x * SDL_BYTESPERPIXEL(texture->format));
|
||||
*pitch = data->pitch;
|
||||
|
@ -717,7 +717,7 @@ GL_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
|||
void *pixels;
|
||||
|
||||
rect = &data->locked_rect;
|
||||
pixels =
|
||||
pixels =
|
||||
(void *) ((Uint8 *) data->pixels + rect->y * data->pitch +
|
||||
rect->x * SDL_BYTESPERPIXEL(texture->format));
|
||||
GL_UpdateTexture(renderer, texture, rect, pixels, data->pitch);
|
||||
|
@ -726,12 +726,12 @@ GL_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
|||
static int
|
||||
GL_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||
{
|
||||
GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
|
||||
GL_RenderData *data = (GL_RenderData *) renderer->driverdata;
|
||||
GL_TextureData *texturedata;
|
||||
GLenum status;
|
||||
|
||||
GL_ActivateRenderer(renderer);
|
||||
|
||||
|
||||
if (texture == NULL) {
|
||||
data->glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
|
||||
return 0;
|
||||
|
@ -914,7 +914,7 @@ GL_RenderDrawLines(SDL_Renderer * renderer, const SDL_FPoint * points,
|
|||
|
||||
GL_SetDrawingState(renderer);
|
||||
|
||||
if (count > 2 &&
|
||||
if (count > 2 &&
|
||||
points[0].x == points[count-1].x && points[0].y == points[count-1].y) {
|
||||
data->glBegin(GL_LINE_LOOP);
|
||||
/* GL_LINE_LOOP takes care of the final segment */
|
||||
|
@ -1125,11 +1125,11 @@ GL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
maxv = (GLfloat) (srcrect->y + srcrect->h) / texture->h;
|
||||
maxv *= texturedata->texh;
|
||||
|
||||
// Translate to flip, rotate, translate to position
|
||||
/* Translate to flip, rotate, translate to position */
|
||||
data->glPushMatrix();
|
||||
data->glTranslatef((GLfloat)dstrect->x + centerx, (GLfloat)dstrect->y + centery, (GLfloat)0.0);
|
||||
data->glTranslatef((GLfloat)dstrect->x + centerx, (GLfloat)dstrect->y + centery, (GLfloat)0.0);
|
||||
data->glRotated(angle, (GLdouble)0.0, (GLdouble)0.0, (GLdouble)1.0);
|
||||
|
||||
|
||||
data->glBegin(GL_TRIANGLE_STRIP);
|
||||
data->glTexCoord2f(minu, minv);
|
||||
data->glVertex2f(minx, miny);
|
||||
|
@ -1141,7 +1141,7 @@ GL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
data->glVertex2f(maxx, maxy);
|
||||
data->glEnd();
|
||||
data->glPopMatrix();
|
||||
|
||||
|
||||
data->glDisable(texturedata->type);
|
||||
|
||||
GL_CheckError("", renderer);
|
||||
|
@ -1303,7 +1303,7 @@ static int GL_UnbindTexture (SDL_Renderer * renderer, SDL_Texture *texture) {
|
|||
|
||||
data->glActiveTextureARB(GL_TEXTURE0_ARB);
|
||||
}
|
||||
|
||||
|
||||
data->glDisable(texturedata->type);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -216,7 +216,7 @@ CompileShaderProgram(GL_ShaderContext *ctx, int index, GL_ShaderData *data)
|
|||
|
||||
/* Make sure we use the correct sampler type for our texture type */
|
||||
if (ctx->GL_ARB_texture_rectangle_supported) {
|
||||
frag_defines =
|
||||
frag_defines =
|
||||
"#define sampler2D sampler2DRect\n"
|
||||
"#define texture2D texture2DRect\n";
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ CompileShaderProgram(GL_ShaderContext *ctx, int index, GL_ShaderData *data)
|
|||
}
|
||||
}
|
||||
ctx->glUseProgramObjectARB(0);
|
||||
|
||||
|
||||
return (ctx->glGetError() == GL_NO_ERROR);
|
||||
}
|
||||
|
||||
|
|
|
@ -189,7 +189,7 @@ static int GLES_LoadFunctions(GLES_RenderData * data)
|
|||
if ( ! data->func ) { \
|
||||
return SDL_SetError("Couldn't load GLES function %s: %s\n", #func, SDL_GetError()); \
|
||||
} \
|
||||
} while ( 0 );
|
||||
} while ( 0 );
|
||||
#endif /* _SDL_NOGETPROCADDR_ */
|
||||
|
||||
#include "SDL_glesfuncs.h"
|
||||
|
@ -270,11 +270,11 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags)
|
|||
GLES_RenderData *data;
|
||||
GLint value;
|
||||
Uint32 windowFlags;
|
||||
|
||||
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_EGL, 1);
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1);
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
|
||||
|
||||
|
||||
windowFlags = SDL_GetWindowFlags(window);
|
||||
if (!(windowFlags & SDL_WINDOW_OPENGL)) {
|
||||
if (SDL_RecreateWindow(window, windowFlags | SDL_WINDOW_OPENGL) < 0) {
|
||||
|
@ -386,7 +386,7 @@ static void
|
|||
GLES_WindowEvent(SDL_Renderer * renderer, const SDL_WindowEvent *event)
|
||||
{
|
||||
GLES_RenderData *data = (GLES_RenderData *) renderer->driverdata;
|
||||
|
||||
|
||||
if (event->event == SDL_WINDOWEVENT_SIZE_CHANGED ||
|
||||
event->event == SDL_WINDOWEVENT_SHOWN ||
|
||||
event->event == SDL_WINDOWEVENT_HIDDEN) {
|
||||
|
@ -765,7 +765,7 @@ GLES_RenderDrawLines(SDL_Renderer * renderer, const SDL_FPoint * points,
|
|||
GLES_SetDrawingState(renderer);
|
||||
|
||||
data->glVertexPointer(2, GL_FLOAT, 0, points);
|
||||
if (count > 2 &&
|
||||
if (count > 2 &&
|
||||
points[0].x == points[count-1].x && points[0].y == points[count-1].y) {
|
||||
/* GL_LINE_LOOP takes care of the final segment */
|
||||
--count;
|
||||
|
@ -920,7 +920,7 @@ GLES_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
GLfloat minx, miny, maxx, maxy;
|
||||
GLfloat minu, maxu, minv, maxv;
|
||||
GLfloat centerx, centery;
|
||||
|
||||
|
||||
GLES_ActivateRenderer(renderer);
|
||||
|
||||
data->glEnable(GL_TEXTURE_2D);
|
||||
|
@ -940,7 +940,7 @@ GLES_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture,
|
|||
centerx = center->x;
|
||||
centery = center->y;
|
||||
|
||||
// Rotate and translate
|
||||
/* Rotate and translate */
|
||||
data->glPushMatrix();
|
||||
data->glTranslatef(dstrect->x + centerx, dstrect->y + centery, 0.0f);
|
||||
data->glRotatef((GLfloat)angle, 0.0f, 0.0f, 1.0f);
|
||||
|
|
|
@ -1237,7 +1237,7 @@ GLES2_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *s
|
|||
break;
|
||||
}
|
||||
}
|
||||
else sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; // Texture formats match, use the non color mapping shader (even if the formats are not ABGR)
|
||||
else sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; /* Texture formats match, use the non color mapping shader (even if the formats are not ABGR) */
|
||||
}
|
||||
else {
|
||||
switch (texture->format)
|
||||
|
@ -1334,7 +1334,7 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
|
|||
GLfloat tmp;
|
||||
|
||||
GLES2_ActivateRenderer(renderer);
|
||||
|
||||
|
||||
rdata->glEnableVertexAttribArray(GLES2_ATTRIBUTE_CENTER);
|
||||
rdata->glEnableVertexAttribArray(GLES2_ATTRIBUTE_ANGLE);
|
||||
fAngle[0] = fAngle[1] = fAngle[2] = fAngle[3] = (GLfloat)(360.0f - angle);
|
||||
|
@ -1403,7 +1403,7 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
|
|||
break;
|
||||
}
|
||||
}
|
||||
else sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; // Texture formats match, use the non color mapping shader (even if the formats are not ABGR)
|
||||
else sourceType = GLES2_IMAGESOURCE_TEXTURE_ABGR; /* Texture formats match, use the non color mapping shader (even if the formats are not ABGR) */
|
||||
}
|
||||
else {
|
||||
switch (texture->format)
|
||||
|
@ -1476,7 +1476,7 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect
|
|||
vertices[1] = vertices[3] = vertices[5];
|
||||
vertices[5] = vertices[7] = tmp;
|
||||
}
|
||||
|
||||
|
||||
rdata->glVertexAttribPointer(GLES2_ATTRIBUTE_ANGLE, 1, GL_FLOAT, GL_FALSE, 0, &fAngle);
|
||||
rdata->glVertexAttribPointer(GLES2_ATTRIBUTE_CENTER, 2, GL_FLOAT, GL_FALSE, 0, translate);
|
||||
rdata->glVertexAttribPointer(GLES2_ATTRIBUTE_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vertices);
|
||||
|
|
|
@ -75,7 +75,7 @@ static const Uint8 GLES2_FragmentSrc_TextureABGRSrc_[] = " \
|
|||
} \
|
||||
";
|
||||
|
||||
// ARGB to ABGR conversion
|
||||
/* ARGB to ABGR conversion */
|
||||
static const Uint8 GLES2_FragmentSrc_TextureARGBSrc_[] = " \
|
||||
precision mediump float; \
|
||||
uniform sampler2D u_texture; \
|
||||
|
@ -92,7 +92,7 @@ static const Uint8 GLES2_FragmentSrc_TextureARGBSrc_[] = " \
|
|||
} \
|
||||
";
|
||||
|
||||
// RGB to ABGR conversion
|
||||
/* RGB to ABGR conversion */
|
||||
static const Uint8 GLES2_FragmentSrc_TextureRGBSrc_[] = " \
|
||||
precision mediump float; \
|
||||
uniform sampler2D u_texture; \
|
||||
|
@ -110,7 +110,7 @@ static const Uint8 GLES2_FragmentSrc_TextureRGBSrc_[] = " \
|
|||
} \
|
||||
";
|
||||
|
||||
// BGR to ABGR conversion
|
||||
/* BGR to ABGR conversion */
|
||||
static const Uint8 GLES2_FragmentSrc_TextureBGRSrc_[] = " \
|
||||
precision mediump float; \
|
||||
uniform sampler2D u_texture; \
|
||||
|
@ -744,7 +744,7 @@ const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type, SDL_BlendMode blendMo
|
|||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_RGB_SRC:
|
||||
switch (blendMode)
|
||||
{
|
||||
|
@ -759,7 +759,7 @@ const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type, SDL_BlendMode blendMo
|
|||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
case GLES2_SHADER_FRAGMENT_TEXTURE_BGR_SRC:
|
||||
switch (blendMode)
|
||||
{
|
||||
|
@ -774,7 +774,7 @@ const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type, SDL_BlendMode blendMo
|
|||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -32,7 +32,6 @@ SDL_DrawLine1(SDL_Surface * dst, int x1, int y1, int x2, int y2, Uint32 color,
|
|||
SDL_bool draw_end)
|
||||
{
|
||||
if (y1 == y2) {
|
||||
//HLINE(Uint8, DRAW_FASTSETPIXEL1, draw_end);
|
||||
int length;
|
||||
int pitch = (dst->pitch / dst->format->BytesPerPixel);
|
||||
Uint8 *pixel;
|
||||
|
|
|
@ -398,7 +398,7 @@ SDL_Surface *_rotateSurface(SDL_Surface * src, double angle, int centerx, int ce
|
|||
|
||||
|
||||
/* Determine target size */
|
||||
//_rotozoomSurfaceSizeTrig(rz_src->w, rz_src->h, angle, &dstwidth, &dstheight, &cangle, &sangle);
|
||||
/*_rotozoomSurfaceSizeTrig(rz_src->w, rz_src->h, angle, &dstwidth, &dstheight, &cangle, &sangle); */
|
||||
|
||||
/*
|
||||
* Calculate target factors from sin/cos and zoom
|
||||
|
@ -459,7 +459,7 @@ SDL_Surface *_rotateSurface(SDL_Surface * src, double angle, int centerx, int ce
|
|||
/*
|
||||
* Turn on source-alpha support
|
||||
*/
|
||||
//SDL_SetAlpha(rz_dst, SDL_SRCALPHA, 255);
|
||||
/*SDL_SetAlpha(rz_dst, SDL_SRCALPHA, 255);*/
|
||||
SDL_SetColorKey(rz_dst, /*SDL_SRCCOLORKEY*/ SDL_TRUE | SDL_RLEACCEL, _colorkey(rz_src));
|
||||
} else {
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue