more updates for users of s_spantemp.h
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 6.1
|
* Version: 6.3
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -188,6 +188,7 @@ init_core_functions( struct dd_function_table *functions )
|
|||||||
|
|
||||||
/* 24-bit BGR */
|
/* 24-bit BGR */
|
||||||
#define NAME(PREFIX) PREFIX##_B8G8R8
|
#define NAME(PREFIX) PREFIX##_B8G8R8
|
||||||
|
#define FORMAT GL_RGBA8
|
||||||
#define SPAN_VARS \
|
#define SPAN_VARS \
|
||||||
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
||||||
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
||||||
@@ -195,18 +196,22 @@ init_core_functions( struct dd_function_table *functions )
|
|||||||
#define INIT_PIXEL_PTR(P, X, Y) \
|
#define INIT_PIXEL_PTR(P, X, Y) \
|
||||||
GLubyte *P = (GLubyte *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X) * 3
|
GLubyte *P = (GLubyte *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X) * 3
|
||||||
#define INC_PIXEL_PTR(P) P += 3
|
#define INC_PIXEL_PTR(P) P += 3
|
||||||
#define STORE_RGB_PIXEL(P, X, Y, R, G, B) \
|
#define STORE_PIXEL(DST, X, Y, VALUE) \
|
||||||
P[0] = B; P[1] = G; P[2] = R
|
DST[0] = VALUE[BCOMP]; \
|
||||||
#define STORE_RGBA_PIXEL(P, X, Y, R, G, B, A) \
|
DST[1] = VALUE[GCOMP]; \
|
||||||
P[0] = B; P[1] = G; P[2] = R
|
DST[2] = VALUE[RCOMP]
|
||||||
#define FETCH_RGBA_PIXEL(R, G, B, A, P) \
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
R = P[2]; G = P[1]; B = P[0]; A = CHAN_MAX
|
DST[RCOMP] = SRC[2]; \
|
||||||
|
DST[GCOMP] = SRC[1]; \
|
||||||
|
DST[BCOMP] = SRC[0]; \
|
||||||
|
DST[ACOMP] = 0xff
|
||||||
|
|
||||||
#include "swrast/s_spantemp.h"
|
#include "swrast/s_spantemp.h"
|
||||||
|
|
||||||
|
|
||||||
/* 32-bit BGRA */
|
/* 32-bit BGRA */
|
||||||
#define NAME(PREFIX) PREFIX##_B8G8R8A8
|
#define NAME(PREFIX) PREFIX##_B8G8R8A8
|
||||||
|
#define FORMAT GL_RGBA8
|
||||||
#define SPAN_VARS \
|
#define SPAN_VARS \
|
||||||
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
||||||
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
||||||
@@ -214,18 +219,28 @@ init_core_functions( struct dd_function_table *functions )
|
|||||||
#define INIT_PIXEL_PTR(P, X, Y) \
|
#define INIT_PIXEL_PTR(P, X, Y) \
|
||||||
GLubyte *P = (GLubyte *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X) * 4;
|
GLubyte *P = (GLubyte *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X) * 4;
|
||||||
#define INC_PIXEL_PTR(P) P += 4
|
#define INC_PIXEL_PTR(P) P += 4
|
||||||
#define STORE_RGB_PIXEL(P, X, Y, R, G, B) \
|
#define STORE_PIXEL(DST, X, Y, VALUE) \
|
||||||
P[0] = B; P[1] = G; P[2] = R; P[3] = 255
|
DST[0] = VALUE[BCOMP]; \
|
||||||
#define STORE_RGBA_PIXEL(P, X, Y, R, G, B, A) \
|
DST[1] = VALUE[GCOMP]; \
|
||||||
P[0] = B; P[1] = G; P[2] = R; P[3] = A
|
DST[2] = VALUE[RCOMP]; \
|
||||||
#define FETCH_RGBA_PIXEL(R, G, B, A, P) \
|
DST[3] = VALUE[ACOMP]
|
||||||
R = P[2]; G = P[1]; B = P[0]; A = P[3]
|
#define STORE_PIXEL_RGB(DST, X, Y, VALUE) \
|
||||||
|
DST[0] = VALUE[BCOMP]; \
|
||||||
|
DST[1] = VALUE[GCOMP]; \
|
||||||
|
DST[2] = VALUE[RCOMP]; \
|
||||||
|
DST[3] = 0xff
|
||||||
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
|
DST[RCOMP] = SRC[2]; \
|
||||||
|
DST[GCOMP] = SRC[1]; \
|
||||||
|
DST[BCOMP] = SRC[0]; \
|
||||||
|
DST[ACOMP] = SRC[3]
|
||||||
|
|
||||||
#include "swrast/s_spantemp.h"
|
#include "swrast/s_spantemp.h"
|
||||||
|
|
||||||
|
|
||||||
/* 16-bit BGR (XXX implement dithering someday) */
|
/* 16-bit BGR (XXX implement dithering someday) */
|
||||||
#define NAME(PREFIX) PREFIX##_B5G6R5
|
#define NAME(PREFIX) PREFIX##_B5G6R5
|
||||||
|
#define FORMAT GL_RGBA8
|
||||||
#define SPAN_VARS \
|
#define SPAN_VARS \
|
||||||
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
||||||
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
||||||
@@ -233,21 +248,20 @@ init_core_functions( struct dd_function_table *functions )
|
|||||||
#define INIT_PIXEL_PTR(P, X, Y) \
|
#define INIT_PIXEL_PTR(P, X, Y) \
|
||||||
GLushort *P = (GLushort *) ((char *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X) * 2)
|
GLushort *P = (GLushort *) ((char *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X) * 2)
|
||||||
#define INC_PIXEL_PTR(P) P += 1
|
#define INC_PIXEL_PTR(P) P += 1
|
||||||
#define STORE_RGB_PIXEL(P, X, Y, R, G, B) \
|
#define STORE_PIXEL(DST, X, Y, VALUE) \
|
||||||
*P = ( (((R) & 0xf8) << 8) | (((G) & 0xfc) << 3) | ((B) >> 3) )
|
DST[0] = ( (((VALUE[RCOMP]) & 0xf8) << 8) | (((VALUE[GCOMP]) & 0xfc) << 3) | ((VALUE[BCOMP]) >> 3) )
|
||||||
#define STORE_RGBA_PIXEL(P, X, Y, R, G, B, A) \
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
*P = ( (((R) & 0xf8) << 8) | (((G) & 0xfc) << 3) | ((B) >> 3) )
|
DST[RCOMP] = ( (((SRC[0]) >> 8) & 0xf8) | (((SRC[0]) >> 11) & 0x7) ); \
|
||||||
#define FETCH_RGBA_PIXEL(R, G, B, A, P) \
|
DST[GCOMP] = ( (((SRC[0]) >> 3) & 0xfc) | (((SRC[0]) >> 5) & 0x3) ); \
|
||||||
R = ( (((*P) >> 8) & 0xf8) | (((*P) >> 11) & 0x7) ); \
|
DST[BCOMP] = ( (((SRC[0]) << 3) & 0xf8) | (((SRC[0]) ) & 0x7) ); \
|
||||||
G = ( (((*P) >> 3) & 0xfc) | (((*P) >> 5) & 0x3) ); \
|
DST[ACOMP] = 0xff
|
||||||
B = ( (((*P) << 3) & 0xf8) | (((*P) ) & 0x7) ); \
|
|
||||||
A = CHAN_MAX
|
|
||||||
|
|
||||||
#include "swrast/s_spantemp.h"
|
#include "swrast/s_spantemp.h"
|
||||||
|
|
||||||
|
|
||||||
/* 15-bit BGR (XXX implement dithering someday) */
|
/* 15-bit BGR (XXX implement dithering someday) */
|
||||||
#define NAME(PREFIX) PREFIX##_B5G5R5
|
#define NAME(PREFIX) PREFIX##_B5G5R5
|
||||||
|
#define FORMAT GL_RGBA8
|
||||||
#define SPAN_VARS \
|
#define SPAN_VARS \
|
||||||
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
||||||
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
||||||
@@ -255,21 +269,20 @@ init_core_functions( struct dd_function_table *functions )
|
|||||||
#define INIT_PIXEL_PTR(P, X, Y) \
|
#define INIT_PIXEL_PTR(P, X, Y) \
|
||||||
GLushort *P = (GLushort *) ((char *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X) * 2)
|
GLushort *P = (GLushort *) ((char *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X) * 2)
|
||||||
#define INC_PIXEL_PTR(P) P += 1
|
#define INC_PIXEL_PTR(P) P += 1
|
||||||
#define STORE_RGB_PIXEL(P, X, Y, R, G, B) \
|
#define STORE_PIXEL(DST, X, Y, VALUE) \
|
||||||
*P = ( (((R) & 0xf8) << 7) | (((G) & 0xf8) << 2) | ((B) >> 3) )
|
DST[0] = ( (((VALUE[RCOMP]) & 0xf8) << 7) | (((VALUE[GCOMP]) & 0xf8) << 2) | ((VALUE[BCOMP]) >> 3) )
|
||||||
#define STORE_RGBA_PIXEL(P, X, Y, R, G, B, A) \
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
*P = ( (((R) & 0xf8) << 7) | (((G) & 0xf8) << 2) | ((B) >> 3) )
|
DST[RCOMP] = ( (((SRC[0]) >> 7) & 0xf8) | (((SRC[0]) >> 10) & 0x7) ); \
|
||||||
#define FETCH_RGBA_PIXEL(R, G, B, A, P) \
|
DST[GCOMP] = ( (((SRC[0]) >> 2) & 0xf8) | (((SRC[0]) >> 5) & 0x7) ); \
|
||||||
R = ( (((*P) >> 7) & 0xf8) | (((*P) >> 10) & 0x7) ); \
|
DST[BCOMP] = ( (((SRC[0]) << 3) & 0xf8) | (((SRC[0]) ) & 0x7) ); \
|
||||||
G = ( (((*P) >> 2) & 0xf8) | (((*P) >> 5) & 0x7) ); \
|
DST[ACOMP] = 0xff
|
||||||
B = ( (((*P) << 3) & 0xf8) | (((*P) ) & 0x7) ); \
|
|
||||||
A = CHAN_MAX
|
|
||||||
|
|
||||||
#include "swrast/s_spantemp.h"
|
#include "swrast/s_spantemp.h"
|
||||||
|
|
||||||
|
|
||||||
/* 8-bit color index */
|
/* 8-bit color index */
|
||||||
#define NAME(PREFIX) PREFIX##_CI8
|
#define NAME(PREFIX) PREFIX##_CI8
|
||||||
|
#define FORMAT GL_COLOR_INDEX8_EXT
|
||||||
#define SPAN_VARS \
|
#define SPAN_VARS \
|
||||||
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
const fbContextPtr fbdevctx = FB_CONTEXT(ctx); \
|
||||||
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
__DRIdrawablePrivate *dPriv = fbdevctx->dri.drawable; \
|
||||||
@@ -277,10 +290,10 @@ init_core_functions( struct dd_function_table *functions )
|
|||||||
#define INIT_PIXEL_PTR(P, X, Y) \
|
#define INIT_PIXEL_PTR(P, X, Y) \
|
||||||
GLubyte *P = (GLubyte *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X)
|
GLubyte *P = (GLubyte *)fbdrawable->currentBuffer + (Y) * fbdrawable->currentPitch + (X)
|
||||||
#define INC_PIXEL_PTR(P) P += 1
|
#define INC_PIXEL_PTR(P) P += 1
|
||||||
#define STORE_CI_PIXEL(P, CI) \
|
#define STORE_PIXEL(DST, X, Y, VALUE) \
|
||||||
P[0] = CI
|
*DST = VALUE[0]
|
||||||
#define FETCH_CI_PIXEL(CI, P) \
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
CI = P[0]
|
DST = SRC[0]
|
||||||
|
|
||||||
#include "swrast/s_spantemp.h"
|
#include "swrast/s_spantemp.h"
|
||||||
|
|
||||||
@@ -292,50 +305,50 @@ fbSetSpanFunctions(driRenderbuffer *drb, const GLvisual *vis)
|
|||||||
ASSERT(drb->Base.InternalFormat == GL_RGBA);
|
ASSERT(drb->Base.InternalFormat == GL_RGBA);
|
||||||
if (drb->Base.InternalFormat == GL_RGBA) {
|
if (drb->Base.InternalFormat == GL_RGBA) {
|
||||||
if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) {
|
if (vis->redBits == 5 && vis->greenBits == 6 && vis->blueBits == 5) {
|
||||||
drb->Base.GetRow = read_rgba_span_B5G6R5;
|
drb->Base.GetRow = get_row_B5G6R5;
|
||||||
drb->Base.GetValues = read_rgba_pixels_B5G6R5;
|
drb->Base.GetValues = get_values_B5G6R5;
|
||||||
drb->Base.PutRow = write_rgba_span_B5G6R5;
|
drb->Base.PutRow = put_row_B5G6R5;
|
||||||
drb->Base.PutMonoRow = write_monorgba_span_B5G6R5;
|
drb->Base.PutMonoRow = put_mono_row_B5G6R5;
|
||||||
drb->Base.PutRowRGB = write_rgb_span_B5G6R5;
|
drb->Base.PutRowRGB = put_row_rgb_B5G6R5;
|
||||||
drb->Base.PutValues = write_rgba_pixels_B5G6R5;
|
drb->Base.PutValues = put_values_B5G6R5;
|
||||||
drb->Base.PutMonoValues = write_monorgba_pixels_B5G6R5;
|
drb->Base.PutMonoValues = put_mono_values_B5G6R5;
|
||||||
}
|
}
|
||||||
else if (vis->redBits == 5 && vis->greenBits == 5 && vis->blueBits == 5) {
|
else if (vis->redBits == 5 && vis->greenBits == 5 && vis->blueBits == 5) {
|
||||||
drb->Base.GetRow = read_rgba_span_B5G5R5;
|
drb->Base.GetRow = get_row_B5G5R5;
|
||||||
drb->Base.GetValues = read_rgba_pixels_B5G5R5;
|
drb->Base.GetValues = get_values_B5G5R5;
|
||||||
drb->Base.PutRow = write_rgba_span_B5G5R5;
|
drb->Base.PutRow = put_row_B5G5R5;
|
||||||
drb->Base.PutMonoRow = write_monorgba_span_B5G5R5;
|
drb->Base.PutMonoRow = put_mono_row_B5G5R5;
|
||||||
drb->Base.PutRowRGB = write_rgb_span_B5G5R5;
|
drb->Base.PutRowRGB = put_row_rgb_B5G5R5;
|
||||||
drb->Base.PutValues = write_rgba_pixels_B5G5R5;
|
drb->Base.PutValues = put_values_B5G5R5;
|
||||||
drb->Base.PutMonoValues = write_monorgba_pixels_B5G5R5;
|
drb->Base.PutMonoValues = put_mono_values_B5G5R5;
|
||||||
}
|
}
|
||||||
else if (vis->redBits == 8 && vis->greenBits == 8 && vis->blueBits == 8
|
else if (vis->redBits == 8 && vis->greenBits == 8 && vis->blueBits == 8
|
||||||
&& vis->alphaBits == 8) {
|
&& vis->alphaBits == 8) {
|
||||||
drb->Base.GetRow = read_rgba_span_B8G8R8A8;
|
drb->Base.GetRow = get_row_B8G8R8A8;
|
||||||
drb->Base.GetValues = read_rgba_pixels_B8G8R8A8;
|
drb->Base.GetValues = get_values_B8G8R8A8;
|
||||||
drb->Base.PutRow = write_rgba_span_B8G8R8A8;
|
drb->Base.PutRow = put_row_B8G8R8A8;
|
||||||
drb->Base.PutMonoRow = write_monorgba_span_B8G8R8A8;
|
drb->Base.PutMonoRow = put_mono_row_B8G8R8A8;
|
||||||
drb->Base.PutRowRGB = write_rgb_span_B8G8R8A8;
|
drb->Base.PutRowRGB = put_row_rgb_B8G8R8A8;
|
||||||
drb->Base.PutValues = write_rgba_pixels_B8G8R8A8;
|
drb->Base.PutValues = put_values_B8G8R8A8;
|
||||||
drb->Base.PutMonoValues = write_monorgba_pixels_B8G8R8A8;
|
drb->Base.PutMonoValues = put_mono_values_B8G8R8A8;
|
||||||
}
|
}
|
||||||
else if (vis->redBits == 8 && vis->greenBits == 8 && vis->blueBits == 8
|
else if (vis->redBits == 8 && vis->greenBits == 8 && vis->blueBits == 8
|
||||||
&& vis->alphaBits == 0) {
|
&& vis->alphaBits == 0) {
|
||||||
drb->Base.GetRow = read_rgba_span_B8G8R8;
|
drb->Base.GetRow = get_row_B8G8R8;
|
||||||
drb->Base.GetValues = read_rgba_pixels_B8G8R8;
|
drb->Base.GetValues = get_values_B8G8R8;
|
||||||
drb->Base.PutRow = write_rgba_span_B8G8R8;
|
drb->Base.PutRow = put_row_B8G8R8;
|
||||||
drb->Base.PutMonoRow = write_monorgba_span_B8G8R8;
|
drb->Base.PutMonoRow = put_mono_row_B8G8R8;
|
||||||
drb->Base.PutRowRGB = write_rgb_span_B8G8R8;
|
drb->Base.PutRowRGB = put_row_rgb_B8G8R8;
|
||||||
drb->Base.PutValues = write_rgba_pixels_B8G8R8;
|
drb->Base.PutValues = put_values_B8G8R8;
|
||||||
drb->Base.PutMonoValues = write_monorgba_pixels_B8G8R8;
|
drb->Base.PutMonoValues = put_mono_values_B8G8R8;
|
||||||
}
|
}
|
||||||
else if (vis->indexBits == 8) {
|
else if (vis->indexBits == 8) {
|
||||||
drb->Base.GetRow = read_index_span_CI8;
|
drb->Base.GetRow = get_row_CI8;
|
||||||
drb->Base.GetValues = read_index_pixels_CI8;
|
drb->Base.GetValues = get_values_CI8;
|
||||||
drb->Base.PutRow = write_index_span_CI8;
|
drb->Base.PutRow = put_row_CI8;
|
||||||
drb->Base.PutMonoRow = write_monoindex_span_CI8;
|
drb->Base.PutMonoRow = put_mono_row_CI8;
|
||||||
drb->Base.PutValues = write_index_pixels_CI8;
|
drb->Base.PutValues = put_values_CI8;
|
||||||
drb->Base.PutMonoValues = write_monoindex_pixels_CI8;
|
drb->Base.PutMonoValues = put_mono_values_CI8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@@ -166,12 +166,22 @@ get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
|
|||||||
DST[1] = MAX2((VALUE[GCOMP]), 0.0F); \
|
DST[1] = MAX2((VALUE[GCOMP]), 0.0F); \
|
||||||
DST[2] = MAX2((VALUE[BCOMP]), 0.0F); \
|
DST[2] = MAX2((VALUE[BCOMP]), 0.0F); \
|
||||||
DST[3] = CLAMP((VALUE[ACOMP]), 0.0F, CHAN_MAXF)
|
DST[3] = CLAMP((VALUE[ACOMP]), 0.0F, CHAN_MAXF)
|
||||||
|
#define STORE_PIXEL_RGB(DST, X, Y, VALUE) \
|
||||||
|
DST[0] = MAX2((VALUE[RCOMP]), 0.0F); \
|
||||||
|
DST[1] = MAX2((VALUE[GCOMP]), 0.0F); \
|
||||||
|
DST[2] = MAX2((VALUE[BCOMP]), 0.0F); \
|
||||||
|
DST[3] = CHAN_MAXF
|
||||||
#else
|
#else
|
||||||
#define STORE_PIXEL(DST, X, Y, VALUE) \
|
#define STORE_PIXEL(DST, X, Y, VALUE) \
|
||||||
DST[0] = VALUE[RCOMP]; \
|
DST[0] = VALUE[RCOMP]; \
|
||||||
DST[1] = VALUE[GCOMP]; \
|
DST[1] = VALUE[GCOMP]; \
|
||||||
DST[2] = VALUE[BCOMP]; \
|
DST[2] = VALUE[BCOMP]; \
|
||||||
DST[3] = VALUE[ACOMP]
|
DST[3] = VALUE[ACOMP]
|
||||||
|
#define STORE_PIXEL_RGB(DST, X, Y, VALUE) \
|
||||||
|
DST[0] = VALUE[RCOMP]; \
|
||||||
|
DST[1] = VALUE[GCOMP]; \
|
||||||
|
DST[2] = VALUE[BCOMP]; \
|
||||||
|
DST[3] = CHAN_MAX
|
||||||
#endif
|
#endif
|
||||||
#define FETCH_PIXEL(DST, SRC) \
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
DST[RCOMP] = SRC[0]; \
|
DST[RCOMP] = SRC[0]; \
|
||||||
@@ -193,6 +203,11 @@ get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
|
|||||||
DST[1] = VALUE[GCOMP]; \
|
DST[1] = VALUE[GCOMP]; \
|
||||||
DST[0] = VALUE[BCOMP]; \
|
DST[0] = VALUE[BCOMP]; \
|
||||||
DST[3] = VALUE[ACOMP]
|
DST[3] = VALUE[ACOMP]
|
||||||
|
#define STORE_PIXEL_RGB(DST, X, Y, VALUE) \
|
||||||
|
DST[2] = VALUE[RCOMP]; \
|
||||||
|
DST[1] = VALUE[GCOMP]; \
|
||||||
|
DST[0] = VALUE[BCOMP]; \
|
||||||
|
DST[3] = CHAN_MAX
|
||||||
#define FETCH_PIXEL(DST, SRC) \
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
DST[RCOMP] = SRC[2]; \
|
DST[RCOMP] = SRC[2]; \
|
||||||
DST[GCOMP] = SRC[1]; \
|
DST[GCOMP] = SRC[1]; \
|
||||||
@@ -213,6 +228,11 @@ get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
|
|||||||
DST[2] = VALUE[GCOMP]; \
|
DST[2] = VALUE[GCOMP]; \
|
||||||
DST[3] = VALUE[BCOMP]; \
|
DST[3] = VALUE[BCOMP]; \
|
||||||
DST[0] = VALUE[ACOMP]
|
DST[0] = VALUE[ACOMP]
|
||||||
|
#define STORE_PIXEL_RGB(DST, X, Y, VALUE) \
|
||||||
|
DST[1] = VALUE[RCOMP]; \
|
||||||
|
DST[2] = VALUE[GCOMP]; \
|
||||||
|
DST[3] = VALUE[BCOMP]; \
|
||||||
|
DST[0] = CHAN_MAX
|
||||||
#define FETCH_PIXEL(DST, SRC) \
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
DST[RCOMP] = SRC[1]; \
|
DST[RCOMP] = SRC[1]; \
|
||||||
DST[GCOMP] = SRC[2]; \
|
DST[GCOMP] = SRC[2]; \
|
||||||
@@ -609,6 +629,7 @@ osmesa_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
rb->GetRow = get_row_RGBA;
|
rb->GetRow = get_row_RGBA;
|
||||||
rb->GetValues = get_values_RGBA;
|
rb->GetValues = get_values_RGBA;
|
||||||
rb->PutRow = put_row_RGBA;
|
rb->PutRow = put_row_RGBA;
|
||||||
|
rb->PutRowRGB = put_row_rgb_RGBA;
|
||||||
rb->PutMonoRow = put_mono_row_RGBA;
|
rb->PutMonoRow = put_mono_row_RGBA;
|
||||||
rb->PutValues = put_values_RGBA;
|
rb->PutValues = put_values_RGBA;
|
||||||
rb->PutMonoValues = put_mono_values_RGBA;
|
rb->PutMonoValues = put_mono_values_RGBA;
|
||||||
@@ -617,6 +638,7 @@ osmesa_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
rb->GetRow = get_row_BGRA;
|
rb->GetRow = get_row_BGRA;
|
||||||
rb->GetValues = get_values_BGRA;
|
rb->GetValues = get_values_BGRA;
|
||||||
rb->PutRow = put_row_BGRA;
|
rb->PutRow = put_row_BGRA;
|
||||||
|
rb->PutRowRGB = put_row_rgb_BGRA;
|
||||||
rb->PutMonoRow = put_mono_row_BGRA;
|
rb->PutMonoRow = put_mono_row_BGRA;
|
||||||
rb->PutValues = put_values_BGRA;
|
rb->PutValues = put_values_BGRA;
|
||||||
rb->PutMonoValues = put_mono_values_BGRA;
|
rb->PutMonoValues = put_mono_values_BGRA;
|
||||||
@@ -625,6 +647,7 @@ osmesa_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
rb->GetRow = get_row_ARGB;
|
rb->GetRow = get_row_ARGB;
|
||||||
rb->GetValues = get_values_ARGB;
|
rb->GetValues = get_values_ARGB;
|
||||||
rb->PutRow = put_row_ARGB;
|
rb->PutRow = put_row_ARGB;
|
||||||
|
rb->PutRowRGB = put_row_rgb_ARGB;
|
||||||
rb->PutMonoRow = put_mono_row_ARGB;
|
rb->PutMonoRow = put_mono_row_ARGB;
|
||||||
rb->PutValues = put_values_ARGB;
|
rb->PutValues = put_values_ARGB;
|
||||||
rb->PutMonoValues = put_mono_values_ARGB;
|
rb->PutMonoValues = put_mono_values_ARGB;
|
||||||
@@ -633,6 +656,7 @@ osmesa_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
rb->GetRow = get_row_RGB;
|
rb->GetRow = get_row_RGB;
|
||||||
rb->GetValues = get_values_RGB;
|
rb->GetValues = get_values_RGB;
|
||||||
rb->PutRow = put_row_RGB;
|
rb->PutRow = put_row_RGB;
|
||||||
|
rb->PutRowRGB = put_row_rgb_RGB;
|
||||||
rb->PutMonoRow = put_mono_row_RGB;
|
rb->PutMonoRow = put_mono_row_RGB;
|
||||||
rb->PutValues = put_values_RGB;
|
rb->PutValues = put_values_RGB;
|
||||||
rb->PutMonoValues = put_mono_values_RGB;
|
rb->PutMonoValues = put_mono_values_RGB;
|
||||||
@@ -641,6 +665,7 @@ osmesa_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
rb->GetRow = get_row_BGR;
|
rb->GetRow = get_row_BGR;
|
||||||
rb->GetValues = get_values_BGR;
|
rb->GetValues = get_values_BGR;
|
||||||
rb->PutRow = put_row_BGR;
|
rb->PutRow = put_row_BGR;
|
||||||
|
rb->PutRowRGB = put_row_rgb_BGR;
|
||||||
rb->PutMonoRow = put_mono_row_BGR;
|
rb->PutMonoRow = put_mono_row_BGR;
|
||||||
rb->PutValues = put_values_BGR;
|
rb->PutValues = put_values_BGR;
|
||||||
rb->PutMonoValues = put_mono_values_BGR;
|
rb->PutMonoValues = put_mono_values_BGR;
|
||||||
@@ -650,6 +675,7 @@ osmesa_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
rb->GetRow = get_row_RGB_565;
|
rb->GetRow = get_row_RGB_565;
|
||||||
rb->GetValues = get_values_RGB_565;
|
rb->GetValues = get_values_RGB_565;
|
||||||
rb->PutRow = put_row_RGB_565;
|
rb->PutRow = put_row_RGB_565;
|
||||||
|
rb->PutRow = put_row_rgb_RGB_565;
|
||||||
rb->PutMonoRow = put_mono_row_RGB_565;
|
rb->PutMonoRow = put_mono_row_RGB_565;
|
||||||
rb->PutValues = put_values_RGB_565;
|
rb->PutValues = put_values_RGB_565;
|
||||||
rb->PutMonoValues = put_mono_values_RGB_565;
|
rb->PutMonoValues = put_mono_values_RGB_565;
|
||||||
|
@@ -124,32 +124,33 @@ NAME(put_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 00
|
#if (FORMAT == GL_RGBA) || (FORMAT == GL_RGBA8)
|
||||||
static void
|
static void
|
||||||
NAME(write_rgb_span)( const GLcontext *ctx, struct gl_renderbuffer *rb,
|
NAME(put_row_rgb)( GLcontext *ctx, struct gl_renderbuffer *rb,
|
||||||
GLuint count, GLint x, GLint y,
|
GLuint count, GLint x, GLint y,
|
||||||
CONST GLchan rgb[][3], const GLubyte mask[] )
|
const void *values, const GLubyte mask[] )
|
||||||
{
|
{
|
||||||
#ifdef SPAN_VARS
|
#ifdef SPAN_VARS
|
||||||
SPAN_VARS
|
SPAN_VARS
|
||||||
|
#endif
|
||||||
|
#if FORMAT == GL_RGBA
|
||||||
|
const GLchan (*src)[3] = (const GLchan (*)[3]) values;
|
||||||
|
#elif FORMAT == GL_RGBA8
|
||||||
|
const GLubyte (*src)[3] = (const GLubyte (*)[3]) values;
|
||||||
|
#else
|
||||||
|
#error bad format
|
||||||
#endif
|
#endif
|
||||||
GLuint i;
|
GLuint i;
|
||||||
INIT_PIXEL_PTR(pixel, x, y);
|
INIT_PIXEL_PTR(pixel, x, y);
|
||||||
if (mask) {
|
for (i = 0; i < count; i++) {
|
||||||
for (i = 0; i < count; i++) {
|
if (!mask || mask[i]) {
|
||||||
if (mask[i]) {
|
#ifdef STORE_PIXEL_RGB
|
||||||
STORE_RGB_PIXEL(pixel, x+i, y, rgb[i][RCOMP], rgb[i][GCOMP],
|
STORE_PIXEL_RGB(pixel, x + i, y, src[i]);
|
||||||
rgb[i][BCOMP]);
|
#else
|
||||||
}
|
STORE_PIXEL(pixel, x + i, y, src[i]);
|
||||||
INC_PIXEL_PTR(pixel);
|
#endif
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
STORE_RGB_PIXEL(pixel, x+i, y, rgb[i][RCOMP], rgb[i][GCOMP],
|
|
||||||
rgb[i][BCOMP]);
|
|
||||||
INC_PIXEL_PTR(pixel);
|
|
||||||
}
|
}
|
||||||
|
INC_PIXEL_PTR(pixel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -245,5 +246,6 @@ NAME(put_mono_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
|
|||||||
#undef INIT_PIXEL_PTR
|
#undef INIT_PIXEL_PTR
|
||||||
#undef INC_PIXEL_PTR
|
#undef INC_PIXEL_PTR
|
||||||
#undef STORE_PIXEL
|
#undef STORE_PIXEL
|
||||||
|
#undef STORE_PIXEL_RGB
|
||||||
#undef FETCH_PIXEL
|
#undef FETCH_PIXEL
|
||||||
#undef FORMAT
|
#undef FORMAT
|
||||||
|
Reference in New Issue
Block a user