ClanLib  2.3.7
Classes | Macros | Functions
clanSWRender Display

Classes

class  CL_BlitARGB8SSE
 SSE accelerated rendering operations for ARGB8888. More...
 
class  CL_GraphicContext_SWRender
 SWRender Graphic Context. More...
 
class  CL_PixelBufferData
 Frame buffer or texture data for pixel commands. More...
 
class  CL_PixelCommand
 Interface for commands participating in the rendering pipeline. More...
 
class  CL_PixelThreadContext
 Thread specific rendering data for pixel commands. More...
 
class  CL_ProgramObject_SWRender
 SWRender Graphic Context. More...
 
class  CL_SoftwareProgram
 Interface for commands participating in drawing primitives. More...
 
class  CL_SWRenderTarget
 Display target for clanDisplay. More...
 

Macros

#define cl_blitargb8sse_blend_normal(dest, src, one, half)
 
#define cl_blitargb8sse_multiply_color(src, primcolor)
 
#define cl_blitargb8sse_sample_nearest(out0, tx, ty, data, width)
 
#define cl_blitargb8sse_texture_repeat(tx, ty, width, height)
 

Functions

static void CL_BlitARGB8SSE::blend_lcd (__m128i &dest, __m128i &src, __m128i &one, __m128i &half, __m128i &color)
 
static void CL_BlitARGB8SSE::blend_normal (__m128i &dest, __m128i &src, __m128i &one, __m128i &half)
 
static void CL_BlitARGB8SSE::blend_premultiplied (__m128i &dest, __m128i &src, __m128i &one, __m128i &half)
 
static void CL_BlitARGB8SSE::channels_to_pixels (__m128i &dest0, __m128i &dest1, __m128i &red, __m128i &green, __m128i &blue, __m128i &alpha)
 
static void CL_BlitARGB8SSE::copy_pixels (unsigned int *dest, const unsigned int *src)
 Operations. More...
 
static void CL_BlitARGB8SSE::load_pixel (__m128i &xmm, const unsigned int &pixel)
 
static void CL_BlitARGB8SSE::load_pixel_linear (__m128i &xmm, const unsigned int &p1, const unsigned int &p2, const unsigned int &p3, const unsigned int &p4, unsigned int ifracx, unsigned int ifracy)
 
static void CL_BlitARGB8SSE::load_pixels (__m128i &xmm, const unsigned int *pixels)
 
static void CL_BlitARGB8SSE::load_pixels (__m128i &xmm, const unsigned int &p1, unsigned int &p2)
 
static void CL_BlitARGB8SSE::multiply_color (__m128i &src, __m128i primcolor)
 
static void CL_BlitARGB8SSE::pixels_to_channels (__m128i &red, __m128i &green, __m128i &blue, __m128i &alpha, const __m128i &src0, const __m128i &src1)
 
static void CL_BlitARGB8SSE::set_color (__m128i &xmm, unsigned short red, unsigned short green, unsigned short blue, unsigned short alpha)
 
static void CL_BlitARGB8SSE::set_color (__m128i &xmm, unsigned short r1, unsigned short g1, unsigned short b1, unsigned short a1, unsigned short r2, unsigned short g2, unsigned short b2, unsigned short a2)
 
static void CL_BlitARGB8SSE::set_half (__m128i &xmm)
 
static void CL_BlitARGB8SSE::set_one (__m128i &xmm)
 
static void CL_BlitARGB8SSE::store_pixel (unsigned int &pixel, __m128i &xmm)
 
static void CL_BlitARGB8SSE::store_pixels (unsigned int *pixels, __m128i &xmm)
 

Detailed Description

Macro Definition Documentation

#define cl_blitargb8sse_blend_normal (   dest,
  src,
  one,
  half 
)
Value:
{ \
__m128i src_alpha, invsrc_alpha; \
\
src_alpha = src; \
src_alpha = _mm_shufflelo_epi16(src_alpha, 0xff); \
src_alpha = _mm_shufflehi_epi16(src_alpha, 0xff); \
\
invsrc_alpha = _mm_sub_epi16(one, src_alpha); \
\
src = _mm_mullo_epi16(src, src_alpha); \
dest = _mm_mullo_epi16(dest, invsrc_alpha); \
\
dest = _mm_add_epi16(dest, src); \
dest = _mm_add_epi16(dest, half); \
dest = _mm_srli_epi16(dest, 8); \
}
#define cl_blitargb8sse_multiply_color (   src,
  primcolor 
)
Value:
{ \
src = _mm_mullo_epi16(src, primcolor); \
src = _mm_srli_epi16(src, 8); \
}
#define cl_blitargb8sse_sample_nearest (   out0,
  tx,
  ty,
  data,
  width 
)
Value:
{ \
__attribute__ ((aligned(16))) unsigned int x[4], y[4]; \
_mm_store_si128((__m128i*) x, _mm_srai_epi32(tx, 16)); \
_mm_store_si128((__m128i*) y, _mm_srai_epi32(ty, 16)); \
out0 = _mm_set_epi32(data[x[0]+y[0]*width], data[x[1]+y[1]*width], data[x[2]+y[2]*width], data[x[3]+y[3]*width]); \
}
#define cl_blitargb8sse_texture_repeat (   tx,
  ty,
  width,
  height 
)

Function Documentation

void CL_BlitARGB8SSE::blend_lcd ( __m128i &  dest,
__m128i &  src,
__m128i &  one,
__m128i &  half,
__m128i &  color 
)
inlinestatic
void CL_BlitARGB8SSE::blend_normal ( __m128i &  dest,
__m128i &  src,
__m128i &  one,
__m128i &  half 
)
inlinestatic
void CL_BlitARGB8SSE::blend_premultiplied ( __m128i &  dest,
__m128i &  src,
__m128i &  one,
__m128i &  half 
)
inlinestatic
void CL_BlitARGB8SSE::channels_to_pixels ( __m128i &  dest0,
__m128i &  dest1,
__m128i &  red,
__m128i &  green,
__m128i &  blue,
__m128i &  alpha 
)
inlinestatic
void CL_BlitARGB8SSE::copy_pixels ( unsigned int *  dest,
const unsigned int *  src 
)
inlinestatic

Operations.

void CL_BlitARGB8SSE::load_pixel ( __m128i &  xmm,
const unsigned int &  pixel 
)
inlinestatic
void CL_BlitARGB8SSE::load_pixel_linear ( __m128i &  xmm,
const unsigned int &  p1,
const unsigned int &  p2,
const unsigned int &  p3,
const unsigned int &  p4,
unsigned int  ifracx,
unsigned int  ifracy 
)
inlinestatic
void CL_BlitARGB8SSE::load_pixels ( __m128i &  xmm,
const unsigned int *  pixels 
)
inlinestatic
void CL_BlitARGB8SSE::load_pixels ( __m128i &  xmm,
const unsigned int &  p1,
unsigned int &  p2 
)
inlinestatic
void CL_BlitARGB8SSE::multiply_color ( __m128i &  src,
__m128i  primcolor 
)
inlinestatic
void CL_BlitARGB8SSE::pixels_to_channels ( __m128i &  red,
__m128i &  green,
__m128i &  blue,
__m128i &  alpha,
const __m128i &  src0,
const __m128i &  src1 
)
inlinestatic
void CL_BlitARGB8SSE::set_color ( __m128i &  xmm,
unsigned short  red,
unsigned short  green,
unsigned short  blue,
unsigned short  alpha 
)
inlinestatic
void CL_BlitARGB8SSE::set_color ( __m128i &  xmm,
unsigned short  r1,
unsigned short  g1,
unsigned short  b1,
unsigned short  a1,
unsigned short  r2,
unsigned short  g2,
unsigned short  b2,
unsigned short  a2 
)
inlinestatic
void CL_BlitARGB8SSE::set_half ( __m128i &  xmm)
inlinestatic
void CL_BlitARGB8SSE::set_one ( __m128i &  xmm)
inlinestatic
void CL_BlitARGB8SSE::store_pixel ( unsigned int &  pixel,
__m128i &  xmm 
)
inlinestatic
void CL_BlitARGB8SSE::store_pixels ( unsigned int *  pixels,
__m128i &  xmm 
)
inlinestatic