core | glapi | vbo | math | shader | swrast | swrast_setup | tnl | tnl_dd

s_blit.c File Reference

#include "main/glheader.h"
#include "main/image.h"
#include "main/macros.h"
#include "s_context.h"

Defines

#define ABS(X)   ((X) < 0 ? -(X) : (X))
#define RESAMPLE(NAME, PIXELTYPE, SIZE)
 Generate a row resampler function for GL_NEAREST mode.
#define LERP(T, A, B)   ( (A) + (T) * ((B) - (A)) )

Functions

static void blit_nearest (GLcontext *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield buffer)
 Resamplers for 1, 2, 4, 8 and 16-byte pixels.
static INLINE GLfloat lerp_2d (GLfloat a, GLfloat b, GLfloat v00, GLfloat v10, GLfloat v01, GLfloat v11)
static void resample_linear_row_ub (GLint srcWidth, GLint dstWidth, const GLvoid *srcBuffer0, const GLvoid *srcBuffer1, GLvoid *dstBuffer, GLboolean flip, GLfloat rowWeight)
 Bilinear interpolation of two source rows.
static void blit_linear (GLcontext *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1)
 Bilinear filtered blit (color only).
static void simple_blit (GLcontext *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield buffer)
 Simple case: Blit color, depth or stencil with no scaling or flipping.
void _swrast_BlitFramebuffer (GLcontext *ctx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
 Software fallback for glBlitFramebufferEXT().


Define Documentation

#define ABS (  )     ((X) < 0 ? -(X) : (X))

#define LERP ( T,
A,
 )     ( (A) + (T) * ((B) - (A)) )

#define RESAMPLE ( NAME,
PIXELTYPE,
SIZE   ) 

Generate a row resampler function for GL_NEAREST mode.


Function Documentation

void _swrast_BlitFramebuffer ( GLcontext ctx,
GLint  srcX0,
GLint  srcY0,
GLint  srcX1,
GLint  srcY1,
GLint  dstX0,
GLint  dstY0,
GLint  dstX1,
GLint  dstY1,
GLbitfield  mask,
GLenum  filter 
)

Software fallback for glBlitFramebufferEXT().

static void blit_linear ( GLcontext ctx,
GLint  srcX0,
GLint  srcY0,
GLint  srcX1,
GLint  srcY1,
GLint  dstX0,
GLint  dstY0,
GLint  dstX1,
GLint  dstY1 
) [static]

Bilinear filtered blit (color only).

static void blit_nearest ( GLcontext ctx,
GLint  srcX0,
GLint  srcY0,
GLint  srcX1,
GLint  srcY1,
GLint  dstX0,
GLint  dstY0,
GLint  dstX1,
GLint  dstY1,
GLbitfield  buffer 
) [static]

Resamplers for 1, 2, 4, 8 and 16-byte pixels.

Blit color, depth or stencil with GL_NEAREST filtering.

static INLINE GLfloat lerp_2d ( GLfloat  a,
GLfloat  b,
GLfloat  v00,
GLfloat  v10,
GLfloat  v01,
GLfloat  v11 
) [static]

static void resample_linear_row_ub ( GLint  srcWidth,
GLint  dstWidth,
const GLvoid *  srcBuffer0,
const GLvoid *  srcBuffer1,
GLvoid *  dstBuffer,
GLboolean  flip,
GLfloat  rowWeight 
) [static]

Bilinear interpolation of two source rows.

GLubyte pixels.

static void simple_blit ( GLcontext ctx,
GLint  srcX0,
GLint  srcY0,
GLint  srcX1,
GLint  srcY1,
GLint  dstX0,
GLint  dstY0,
GLint  dstX1,
GLint  dstY1,
GLbitfield  buffer 
) [static]

Simple case: Blit color, depth or stencil with no scaling or flipping.

XXX we could easily support vertical flipping here.


Generated on Sun Sep 27 06:48:05 2009 for Mesa Software Rasterization (swrast) by  doxygen 1.5.4