};
-static INLINE OSMesaContext
+static inline OSMesaContext
OSMESA_CONTEXT(struct gl_context *ctx)
{
/* Just cast, since we're using structure containment */
return NULL;
}
- if (ctx->RenderMode != GL_RENDER) return NULL;
- if (ctx->Line.SmoothFlag) return NULL;
- if (ctx->Texture._EnabledUnits) return NULL;
- if (ctx->Light.ShadeModel != GL_FLAT) return NULL;
- if (ctx->Line.Width != 1.0F) return NULL;
- if (ctx->Line.StippleFlag) return NULL;
- if (ctx->Line.SmoothFlag) return NULL;
+ if (ctx->RenderMode != GL_RENDER ||
+ ctx->Line.SmoothFlag ||
+ ctx->Texture._MaxEnabledTexImageUnit == -1 ||
+ ctx->Light.ShadeModel != GL_FLAT ||
+ ctx->Line.Width != 1.0F ||
+ ctx->Line.StippleFlag ||
+ ctx->Line.SmoothFlag) {
+ return NULL;
+ }
+
if (osmesa->format != OSMESA_RGBA &&
osmesa->format != OSMESA_BGRA &&
- osmesa->format != OSMESA_ARGB) return NULL;
+ osmesa->format != OSMESA_ARGB) {
+ return NULL;
+ }
- if (swrast->_RasterMask==DEPTH_BIT
- && ctx->Depth.Func==GL_LESS
- && ctx->Depth.Mask==GL_TRUE
+ if (swrast->_RasterMask == DEPTH_BIT
+ && ctx->Depth.Func == GL_LESS
+ && ctx->Depth.Mask == GL_TRUE
&& ctx->Visual.depthBits == DEFAULT_SOFTWARE_DEPTH_BITS) {
- return (swrast_line_func) flat_rgba_z_line;
+ return flat_rgba_z_line;
}
if (swrast->_RasterMask == 0) {
- return (swrast_line_func) flat_rgba_line;
+ return flat_rgba_line;
}
return (swrast_line_func) NULL;
/* the special-case triangle functions in this file don't work
* for float color channels.
*/
- return (swrast_tri_func) NULL;
+ return NULL;
+ }
+
+ if (ctx->RenderMode != GL_RENDER ||
+ ctx->Polygon.SmoothFlag ||
+ ctx->Polygon.StippleFlag ||
+ ctx->Texture._MaxEnabledTexImageUnit != -1) {
+ return NULL;
}
- if (ctx->RenderMode != GL_RENDER) return (swrast_tri_func) NULL;
- if (ctx->Polygon.SmoothFlag) return (swrast_tri_func) NULL;
- if (ctx->Polygon.StippleFlag) return (swrast_tri_func) NULL;
- if (ctx->Texture._EnabledUnits) return (swrast_tri_func) NULL;
if (osmesa->format != OSMESA_RGBA &&
osmesa->format != OSMESA_BGRA &&
- osmesa->format != OSMESA_ARGB) return (swrast_tri_func) NULL;
- if (ctx->Polygon.CullFlag &&
- ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK)
- return (swrast_tri_func) NULL;
+ osmesa->format != OSMESA_ARGB) {
+ return NULL;
+ }
+
+ if (ctx->Polygon.CullFlag &&
+ ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK) {
+ return NULL;
+ }
if (swrast->_RasterMask == DEPTH_BIT &&
ctx->Depth.Func == GL_LESS &&
ctx->Depth.Mask == GL_TRUE &&
ctx->Visual.depthBits == DEFAULT_SOFTWARE_DEPTH_BITS) {
if (ctx->Light.ShadeModel == GL_SMOOTH) {
- return (swrast_tri_func) smooth_rgba_z_triangle;
+ return smooth_rgba_z_triangle;
}
else {
- return (swrast_tri_func) flat_rgba_z_triangle;
+ return flat_rgba_z_triangle;
}
}
- return (swrast_tri_func) NULL;
+
+ return NULL;
}
if (osmesa->format == OSMESA_RGBA) {
if (osmesa->DataType == GL_UNSIGNED_BYTE) {
if (_mesa_little_endian())
- rb->Format = MESA_FORMAT_RGBA8888_REV;
+ rb->Format = MESA_FORMAT_R8G8B8A8_UNORM;
else
- rb->Format = MESA_FORMAT_RGBA8888;
+ rb->Format = MESA_FORMAT_A8B8G8R8_UNORM;
}
else if (osmesa->DataType == GL_UNSIGNED_SHORT) {
- rb->Format = MESA_FORMAT_RGBA_16;
+ rb->Format = MESA_FORMAT_RGBA_UNORM16;
}
else {
rb->Format = MESA_FORMAT_RGBA_FLOAT32;
else if (osmesa->format == OSMESA_BGRA) {
if (osmesa->DataType == GL_UNSIGNED_BYTE) {
if (_mesa_little_endian())
- rb->Format = MESA_FORMAT_ARGB8888;
+ rb->Format = MESA_FORMAT_B8G8R8A8_UNORM;
else
- rb->Format = MESA_FORMAT_ARGB8888_REV;
+ rb->Format = MESA_FORMAT_A8R8G8B8_UNORM;
}
else if (osmesa->DataType == GL_UNSIGNED_SHORT) {
_mesa_warning(ctx, "Unsupported OSMesa format BGRA/GLushort");
- rb->Format = MESA_FORMAT_RGBA_16; /* not exactly right */
+ rb->Format = MESA_FORMAT_RGBA_UNORM16; /* not exactly right */
}
else {
_mesa_warning(ctx, "Unsupported OSMesa format BGRA/GLfloat");
else if (osmesa->format == OSMESA_ARGB) {
if (osmesa->DataType == GL_UNSIGNED_BYTE) {
if (_mesa_little_endian())
- rb->Format = MESA_FORMAT_ARGB8888_REV;
+ rb->Format = MESA_FORMAT_A8R8G8B8_UNORM;
else
- rb->Format = MESA_FORMAT_ARGB8888;
+ rb->Format = MESA_FORMAT_B8G8R8A8_UNORM;
}
else if (osmesa->DataType == GL_UNSIGNED_SHORT) {
_mesa_warning(ctx, "Unsupported OSMesa format ARGB/GLushort");
- rb->Format = MESA_FORMAT_RGBA_16; /* not exactly right */
+ rb->Format = MESA_FORMAT_RGBA_UNORM16; /* not exactly right */
}
else {
_mesa_warning(ctx, "Unsupported OSMesa format ARGB/GLfloat");
}
else if (osmesa->format == OSMESA_RGB) {
if (osmesa->DataType == GL_UNSIGNED_BYTE) {
- rb->Format = MESA_FORMAT_RGB888;
+ rb->Format = MESA_FORMAT_BGR_UNORM8;
}
else if (osmesa->DataType == GL_UNSIGNED_SHORT) {
_mesa_warning(ctx, "Unsupported OSMesa format RGB/GLushort");
- rb->Format = MESA_FORMAT_RGBA_16; /* not exactly right */
+ rb->Format = MESA_FORMAT_RGBA_UNORM16; /* not exactly right */
}
else {
_mesa_warning(ctx, "Unsupported OSMesa format RGB/GLfloat");
}
else if (osmesa->format == OSMESA_BGR) {
if (osmesa->DataType == GL_UNSIGNED_BYTE) {
- rb->Format = MESA_FORMAT_BGR888;
+ rb->Format = MESA_FORMAT_RGB_UNORM8;
}
else if (osmesa->DataType == GL_UNSIGNED_SHORT) {
_mesa_warning(ctx, "Unsupported OSMesa format BGR/GLushort");
- rb->Format = MESA_FORMAT_RGBA_16; /* not exactly right */
+ rb->Format = MESA_FORMAT_RGBA_UNORM16; /* not exactly right */
}
else {
_mesa_warning(ctx, "Unsupported OSMesa format BGR/GLfloat");
}
else if (osmesa->format == OSMESA_RGB_565) {
ASSERT(osmesa->DataType == GL_UNSIGNED_BYTE);
- rb->Format = MESA_FORMAT_RGB565;
+ rb->Format = MESA_FORMAT_B5G6R5_UNORM;
}
else {
_mesa_problem(ctx, "bad pixel format in osmesa renderbuffer_storage");
{ "OSMesaGetColorBuffer", (OSMESAproc) OSMesaGetColorBuffer },
{ "OSMesaGetProcAddress", (OSMESAproc) OSMesaGetProcAddress },
{ "OSMesaColorClamp", (OSMESAproc) OSMesaColorClamp },
+ { "OSMesaPostprocess", (OSMESAproc) OSMesaPostprocess },
{ NULL, NULL }
};
}
+GLAPI void GLAPIENTRY
+OSMesaPostprocess(OSMesaContext osmesa, const char *filter,
+ unsigned enable_value)
+{
+ fprintf(stderr,
+ "OSMesaPostProcess() is only available with gallium drivers\n");
+}
+
+
+
/**
* When GLX_INDIRECT_RENDERING is defined, some symbols are missing in
* libglapi.a. We need to define them here.