added support for B_RGB32
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21002 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -37,5 +37,5 @@ UseHeaders [ FDirName $(HAIKU_TOP) src kits opengl mesa ppc ] ;
|
|||||||
|
|
||||||
Addon Mesa\ Software\ Renderer :
|
Addon Mesa\ Software\ Renderer :
|
||||||
MesaSoftwareRenderer.cpp
|
MesaSoftwareRenderer.cpp
|
||||||
: libGL.so libmesa.a be
|
: libGL.so libmesa.a /system/lib/libbe.so
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -78,8 +78,8 @@ extern const char * color_space_name(color_space space);
|
|||||||
/***** Read/write spans/arrays of pixels *****/
|
/***** Read/write spans/arrays of pixels *****/
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
|
|
||||||
/* 8-bit RGBA */
|
/* 32-bit RGBA */
|
||||||
#define NAME(PREFIX) PREFIX##_RGBA8
|
#define NAME(PREFIX) PREFIX##_RGBA32
|
||||||
#define RB_TYPE GLubyte
|
#define RB_TYPE GLubyte
|
||||||
#define SPAN_VARS \
|
#define SPAN_VARS \
|
||||||
MesaSoftwareRenderer *mr = (MesaSoftwareRenderer *) ctx->DriverCtx;
|
MesaSoftwareRenderer *mr = (MesaSoftwareRenderer *) ctx->DriverCtx;
|
||||||
@@ -103,6 +103,25 @@ extern const char * color_space_name(color_space space);
|
|||||||
DST[ACOMP] = SRC[BE_ACOMP]
|
DST[ACOMP] = SRC[BE_ACOMP]
|
||||||
#include "swrast/s_spantemp.h"
|
#include "swrast/s_spantemp.h"
|
||||||
|
|
||||||
|
/* 32-bit RGB */
|
||||||
|
#define NAME(PREFIX) PREFIX##_RGB32
|
||||||
|
#define RB_TYPE GLubyte
|
||||||
|
#define SPAN_VARS \
|
||||||
|
MesaSoftwareRenderer *mr = (MesaSoftwareRenderer *) ctx->DriverCtx;
|
||||||
|
#define INIT_PIXEL_PTR(P, X, Y) \
|
||||||
|
GLuint *P = (GLuint *)(((GLubyte **) mr->GetRows())[Y] + (X) * 4)
|
||||||
|
#define INC_PIXEL_PTR(P) P += 1
|
||||||
|
#define STORE_PIXEL(DST, X, Y, VALUE) \
|
||||||
|
*DST = ( ((VALUE[RCOMP]) << 16) | \
|
||||||
|
((VALUE[GCOMP]) << 8) | \
|
||||||
|
((VALUE[BCOMP]) ) )
|
||||||
|
#define FETCH_PIXEL(DST, SRC) \
|
||||||
|
DST[RCOMP] = ((*SRC & 0x00ff0000) >> 16); \
|
||||||
|
DST[GCOMP] = ((*SRC & 0x0000ff00) >> 8); \
|
||||||
|
DST[BCOMP] = ((*SRC & 0x000000ff)); \
|
||||||
|
DST[ACOMP] = 0xff;
|
||||||
|
#include "swrast/s_spantemp.h"
|
||||||
|
|
||||||
/* 16-bit RGB */
|
/* 16-bit RGB */
|
||||||
#define NAME(PREFIX) PREFIX##_RGB16
|
#define NAME(PREFIX) PREFIX##_RGB16
|
||||||
#define RB_TYPE GLubyte
|
#define RB_TYPE GLubyte
|
||||||
@@ -285,13 +304,22 @@ MesaSoftwareRenderer::LockGL()
|
|||||||
if (cs != fColorSpace) {
|
if (cs != fColorSpace) {
|
||||||
switch (cs) {
|
switch (cs) {
|
||||||
case B_RGBA32:
|
case B_RGBA32:
|
||||||
fRenderBuffer->GetRow = get_row_RGBA8;
|
fRenderBuffer->GetRow = get_row_RGBA32;
|
||||||
fRenderBuffer->GetValues = get_values_RGBA8;
|
fRenderBuffer->GetValues = get_values_RGBA32;
|
||||||
fRenderBuffer->PutRow = put_row_RGBA8;
|
fRenderBuffer->PutRow = put_row_RGBA32;
|
||||||
fRenderBuffer->PutRowRGB = put_row_rgb_RGBA8;
|
fRenderBuffer->PutRowRGB = put_row_rgb_RGBA32;
|
||||||
fRenderBuffer->PutMonoRow = put_mono_row_RGBA8;
|
fRenderBuffer->PutMonoRow = put_mono_row_RGBA32;
|
||||||
fRenderBuffer->PutValues = put_values_RGBA8;
|
fRenderBuffer->PutValues = put_values_RGBA32;
|
||||||
fRenderBuffer->PutMonoValues = put_mono_values_RGBA8;
|
fRenderBuffer->PutMonoValues = put_mono_values_RGBA32;
|
||||||
|
break;
|
||||||
|
case B_RGB32:
|
||||||
|
fRenderBuffer->GetRow = get_row_RGB32;
|
||||||
|
fRenderBuffer->GetValues = get_values_RGB32;
|
||||||
|
fRenderBuffer->PutRow = put_row_RGB32;
|
||||||
|
fRenderBuffer->PutRowRGB = put_row_rgb_RGB32;
|
||||||
|
fRenderBuffer->PutMonoRow = put_mono_row_RGB32;
|
||||||
|
fRenderBuffer->PutValues = put_values_RGB32;
|
||||||
|
fRenderBuffer->PutMonoValues = put_mono_values_RGB32;
|
||||||
break;
|
break;
|
||||||
case B_RGB16:
|
case B_RGB16:
|
||||||
fRenderBuffer->GetRow = get_row_RGB16;
|
fRenderBuffer->GetRow = get_row_RGB16;
|
||||||
@@ -303,6 +331,7 @@ MesaSoftwareRenderer::LockGL()
|
|||||||
fRenderBuffer->PutMonoValues = put_mono_values_RGB16;
|
fRenderBuffer->PutMonoValues = put_mono_values_RGB16;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
fprintf(stderr, "unsupported screen color space %ld\n", cs);
|
||||||
debugger("unsupported OpenGL color space");
|
debugger("unsupported OpenGL color space");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user