#include "fbobject.h"
#include "renderbuffer.h"
-#include "rbadaptors.h"
-
/* 32-bit color index format. Not a public format. */
#define COLOR_INDEX32 0x424243
_mesa_add_renderbuffer(struct gl_framebuffer *fb,
GLuint bufferName, struct gl_renderbuffer *rb)
{
- GLenum baseFormat;
-
assert(fb);
assert(rb);
assert(bufferName < BUFFER_COUNT);
assert(!rb->Name);
}
- /* If Mesa's compiled with deep color channels (16 or 32 bits / channel)
- * and the device driver is expecting 8-bit values (GLubyte), we can
- * use a "renderbuffer adaptor/wrapper" to do the necessary conversions.
- */
- baseFormat = _mesa_get_format_base_format(rb->Format);
- if (baseFormat == GL_RGBA) {
- if (CHAN_BITS == 16 && rb->DataType == GL_UNSIGNED_BYTE) {
- GET_CURRENT_CONTEXT(ctx);
- rb = _mesa_new_renderbuffer_16wrap8(ctx, rb);
- }
- else if (CHAN_BITS == 32 && rb->DataType == GL_UNSIGNED_BYTE) {
- GET_CURRENT_CONTEXT(ctx);
- rb = _mesa_new_renderbuffer_32wrap8(ctx, rb);
- }
- else if (CHAN_BITS == 32 && rb->DataType == GL_UNSIGNED_SHORT) {
- GET_CURRENT_CONTEXT(ctx);
- rb = _mesa_new_renderbuffer_32wrap16(ctx, rb);
- }
- }
-
fb->Attachment[bufferName].Type = GL_RENDERBUFFER_EXT;
fb->Attachment[bufferName].Complete = GL_TRUE;
_mesa_reference_renderbuffer(&fb->Attachment[bufferName].Renderbuffer, rb);