From a46bd6f96a78525dc98bcb2176494e6d6dce5dce Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 25 Mar 2003 02:26:28 +0000 Subject: histogram code move, remove s_histogram.[ch] from Makefiles --- src/mesa/Makefile.X11 | 3 +- src/mesa/drivers/x11/xm_dd.c | 8 +++-- src/mesa/main/Makefile.BeOS-R5 | 1 - src/mesa/main/Makefile.DJ | 1 - src/mesa/main/Makefile.OSMesa16 | 3 +- src/mesa/main/Makefile.X11 | 3 +- src/mesa/main/Makefile.ugl | 1 - src/mesa/main/Makefile.win | 1 - src/mesa/main/descrip.mms | 4 --- src/mesa/main/histogram.c | 74 ++++++++++++++++++++++++++++++++++++++++- src/mesa/main/histogram.h | 20 +++++------ 11 files changed, 92 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/mesa/Makefile.X11 b/src/mesa/Makefile.X11 index 7a8e8f0b41..d95a565a16 100644 --- a/src/mesa/Makefile.X11 +++ b/src/mesa/Makefile.X11 @@ -1,4 +1,4 @@ -# $Id: Makefile.X11,v 1.74 2003/03/01 01:50:20 brianp Exp $ +# $Id: Makefile.X11,v 1.75 2003/03/25 02:26:29 brianp Exp $ # Mesa 3-D graphics library # Version: 5.0 @@ -102,7 +102,6 @@ CORE_SOURCES = \ swrast/s_drawpix.c \ swrast/s_feedback.c \ swrast/s_fog.c \ - swrast/s_histogram.c \ swrast/s_imaging.c \ swrast/s_lines.c \ swrast/s_logic.c \ diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index 0d29481e32..bdf0b66886 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -1,4 +1,4 @@ -/* $Id: xm_dd.c,v 1.42 2003/01/16 19:10:46 alanh Exp $ */ +/* $Id: xm_dd.c,v 1.43 2003/03/25 02:26:30 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -35,6 +35,7 @@ #include "imports.h" #include "mtypes.h" #include "state.h" +#include "texobj.h" #include "texstore.h" #include "texformat.h" #include "xmesaP.h" @@ -705,7 +706,7 @@ clear_buffers( GLcontext *ctx, GLbitfield mask, if ((mask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) && xmesa->xm_draw_buffer->mesa_buffer.UseSoftwareAlphaBuffers && ctx->Color.ColorMask[ACOMP]) { - _mesa_clear_alpha_buffers(ctx); + _swrast_clear_alpha_buffers(ctx); } /* we can't handle color or index masking */ @@ -963,6 +964,9 @@ void xmesa_init_pointers( GLcontext *ctx ) ctx->Driver.CopyTexSubImage2D = _swrast_copy_texsubimage2d; ctx->Driver.CopyTexSubImage3D = _swrast_copy_texsubimage3d; + ctx->Driver.NewTextureObject = _mesa_alloc_texture_object; + ctx->Driver.DeleteTexture = _mesa_free_texture_object; + ctx->Driver.CompressedTexImage1D = _mesa_store_compressed_teximage1d; ctx->Driver.CompressedTexImage2D = _mesa_store_compressed_teximage2d; ctx->Driver.CompressedTexImage3D = _mesa_store_compressed_teximage3d; diff --git a/src/mesa/main/Makefile.BeOS-R5 b/src/mesa/main/Makefile.BeOS-R5 index 8ae0efcf1d..c1da7f3f07 100644 --- a/src/mesa/main/Makefile.BeOS-R5 +++ b/src/mesa/main/Makefile.BeOS-R5 @@ -132,7 +132,6 @@ MESA_CORE_SRCS = \ swrast/s_drawpix.c \ swrast/s_feedback.c \ swrast/s_fog.c \ - swrast/s_histogram.c \ swrast/s_imaging.c \ swrast/s_lines.c \ swrast/s_logic.c \ diff --git a/src/mesa/main/Makefile.DJ b/src/mesa/main/Makefile.DJ index 33e6ca5d44..971769d779 100644 --- a/src/mesa/main/Makefile.DJ +++ b/src/mesa/main/Makefile.DJ @@ -173,7 +173,6 @@ CORE_SOURCES = \ swrast/s_drawpix.c \ swrast/s_feedback.c \ swrast/s_fog.c \ - swrast/s_histogram.c \ swrast/s_imaging.c \ swrast/s_lines.c \ swrast/s_logic.c \ diff --git a/src/mesa/main/Makefile.OSMesa16 b/src/mesa/main/Makefile.OSMesa16 index 7a7b0f11bf..3ed54c4969 100644 --- a/src/mesa/main/Makefile.OSMesa16 +++ b/src/mesa/main/Makefile.OSMesa16 @@ -1,4 +1,4 @@ -# $Id: Makefile.OSMesa16,v 1.12 2003/03/01 01:50:20 brianp Exp $ +# $Id: Makefile.OSMesa16,v 1.13 2003/03/25 02:26:29 brianp Exp $ # Mesa 3-D graphics library # Version: 5.0 @@ -103,7 +103,6 @@ CORE_SOURCES = \ swrast/s_drawpix.c \ swrast/s_feedback.c \ swrast/s_fog.c \ - swrast/s_histogram.c \ swrast/s_imaging.c \ swrast/s_lines.c \ swrast/s_logic.c \ diff --git a/src/mesa/main/Makefile.X11 b/src/mesa/main/Makefile.X11 index 7a8e8f0b41..d95a565a16 100644 --- a/src/mesa/main/Makefile.X11 +++ b/src/mesa/main/Makefile.X11 @@ -1,4 +1,4 @@ -# $Id: Makefile.X11,v 1.74 2003/03/01 01:50:20 brianp Exp $ +# $Id: Makefile.X11,v 1.75 2003/03/25 02:26:29 brianp Exp $ # Mesa 3-D graphics library # Version: 5.0 @@ -102,7 +102,6 @@ CORE_SOURCES = \ swrast/s_drawpix.c \ swrast/s_feedback.c \ swrast/s_fog.c \ - swrast/s_histogram.c \ swrast/s_imaging.c \ swrast/s_lines.c \ swrast/s_logic.c \ diff --git a/src/mesa/main/Makefile.ugl b/src/mesa/main/Makefile.ugl index bcecd7afb7..20452e44a4 100644 --- a/src/mesa/main/Makefile.ugl +++ b/src/mesa/main/Makefile.ugl @@ -130,7 +130,6 @@ GL_SOURCES = \ swrast/s_drawpix.c \ swrast/s_feedback.c \ swrast/s_fog.c \ - swrast/s_histogram.c \ swrast/s_imaging.c \ swrast/s_lines.c \ swrast/s_logic.c \ diff --git a/src/mesa/main/Makefile.win b/src/mesa/main/Makefile.win index 2acbce0ced..d4a45547c6 100644 --- a/src/mesa/main/Makefile.win +++ b/src/mesa/main/Makefile.win @@ -91,7 +91,6 @@ CORE_SRCS = \ swrast\s_drawpix.c \ swrast\s_feedback.c \ swrast\s_fog.c \ - swrast\s_histogram.c \ swrast\s_imaging.c \ swrast\s_lines.c \ swrast\s_logic.c \ diff --git a/src/mesa/main/descrip.mms b/src/mesa/main/descrip.mms index f0c8a1c34e..345c3e6130 100644 --- a/src/mesa/main/descrip.mms +++ b/src/mesa/main/descrip.mms @@ -97,7 +97,6 @@ RASTER_SOURCES = [.swrast]s_aatriangle.c \ [.swrast]s_drawpix.c \ [.swrast]s_fog.c \ [.swrast]s_feedback.c \ -[.swrast]s_histogram.c \ [.swrast]s_imaging.c \ [.swrast]s_lines.c \ [.swrast]s_logic.c \ @@ -239,7 +238,6 @@ OBJECTS8=[.swrast]s_aatriangle.obj,\ OBJECTS9=[.swrast]s_drawpix.obj,\ [.swrast]s_fog.obj,\ -[.swrast]s_histogram.obj,\ [.swrast]s_imaging.obj,\ [.swrast]s_lines.obj,\ [.swrast]s_logic.obj,\ @@ -435,8 +433,6 @@ imports.obj : imports.c $(CC) $(CFLAGS) /obj=[.swrast]s_feedback.obj [.swrast]s_feedback.c [.swrast]s_fog.obj : [.swrast]s_fog.c $(CC) $(CFLAGS) /obj=[.swrast]s_fog.obj [.swrast]s_fog.c -[.swrast]s_histogram.obj : [.swrast]s_histogram.c - $(CC) $(CFLAGS) /obj=[.swrast]s_histogram.obj [.swrast]s_histogram.c [.swrast]s_imaging.obj : [.swrast]s_imaging.c $(CC) $(CFLAGS) /obj=[.swrast]s_imaging.obj [.swrast]s_imaging.c [.swrast]s_lines.obj : [.swrast]s_lines.c diff --git a/src/mesa/main/histogram.c b/src/mesa/main/histogram.c index 2eca44f02f..e96c990f58 100644 --- a/src/mesa/main/histogram.c +++ b/src/mesa/main/histogram.c @@ -1,4 +1,4 @@ -/* $Id: histogram.c,v 1.12 2003/03/01 01:50:21 brianp Exp $ */ +/* $Id: histogram.c,v 1.13 2003/03/25 02:26:29 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -32,6 +32,72 @@ #include "histogram.h" +/********************************************************************** + * Internal functions + */ + + +/* + * Update the min/max values from an array of fragment colors. + */ +void +_mesa_update_minmax(GLcontext *ctx, GLuint n, const GLfloat rgba[][4]) +{ + GLuint i; + for (i = 0; i < n; i++) { + /* update mins */ + if (rgba[i][RCOMP] < ctx->MinMax.Min[RCOMP]) + ctx->MinMax.Min[RCOMP] = rgba[i][RCOMP]; + if (rgba[i][GCOMP] < ctx->MinMax.Min[GCOMP]) + ctx->MinMax.Min[GCOMP] = rgba[i][GCOMP]; + if (rgba[i][BCOMP] < ctx->MinMax.Min[BCOMP]) + ctx->MinMax.Min[BCOMP] = rgba[i][BCOMP]; + if (rgba[i][ACOMP] < ctx->MinMax.Min[ACOMP]) + ctx->MinMax.Min[ACOMP] = rgba[i][ACOMP]; + + /* update maxs */ + if (rgba[i][RCOMP] > ctx->MinMax.Max[RCOMP]) + ctx->MinMax.Max[RCOMP] = rgba[i][RCOMP]; + if (rgba[i][GCOMP] > ctx->MinMax.Max[GCOMP]) + ctx->MinMax.Max[GCOMP] = rgba[i][GCOMP]; + if (rgba[i][BCOMP] > ctx->MinMax.Max[BCOMP]) + ctx->MinMax.Max[BCOMP] = rgba[i][BCOMP]; + if (rgba[i][ACOMP] > ctx->MinMax.Max[ACOMP]) + ctx->MinMax.Max[ACOMP] = rgba[i][ACOMP]; + } +} + + +/* + * Update the histogram values from an array of fragment colors. + */ +void +_mesa_update_histogram(GLcontext *ctx, GLuint n, const GLfloat rgba[][4]) +{ + const GLint max = ctx->Histogram.Width - 1; + GLfloat w = (GLfloat) max; + GLuint i; + + if (ctx->Histogram.Width == 0) + return; + + for (i = 0; i < n; i++) { + GLint ri = IROUND(rgba[i][RCOMP] * w); + GLint gi = IROUND(rgba[i][GCOMP] * w); + GLint bi = IROUND(rgba[i][BCOMP] * w); + GLint ai = IROUND(rgba[i][ACOMP] * w); + ri = CLAMP(ri, 0, max); + gi = CLAMP(gi, 0, max); + bi = CLAMP(bi, 0, max); + ai = CLAMP(ai, 0, max); + ctx->Histogram.Count[ri][RCOMP]++; + ctx->Histogram.Count[gi][GCOMP]++; + ctx->Histogram.Count[bi][BCOMP]++; + ctx->Histogram.Count[ai][ACOMP]++; + } +} + + /* * XXX the packed pixel formats haven't been tested. */ @@ -591,6 +657,12 @@ base_histogram_format( GLenum format ) } + +/********************************************************************** + * API functions + */ + + void _mesa_GetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) { diff --git a/src/mesa/main/histogram.h b/src/mesa/main/histogram.h index 3cff4d0db5..f929b0513c 100644 --- a/src/mesa/main/histogram.h +++ b/src/mesa/main/histogram.h @@ -1,10 +1,10 @@ -/* $Id: histogram.h,v 1.4 2002/10/24 23:57:21 brianp Exp $ */ +/* $Id: histogram.h,v 1.5 2003/03/25 02:26:29 brianp Exp $ */ /* * Mesa 3-D graphics library - * Version: 4.1 + * Version: 5.1 * - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -32,6 +32,13 @@ #include "mtypes.h" +extern void +_mesa_update_minmax(GLcontext *ctx, GLuint n, const GLfloat rgba[][4]); + +extern void +_mesa_update_histogram(GLcontext *ctx, GLuint n, const GLfloat rgba[][4]); + + extern void _mesa_GetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values); extern void _mesa_GetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); @@ -52,11 +59,4 @@ extern void _mesa_ResetHistogram(GLenum target); extern void _mesa_ResetMinmax(GLenum target); -extern void -_mesa_update_minmax(GLcontext *ctx, GLuint n, const GLfloat rgba[][4]); - -extern void -_mesa_update_histogram(GLcontext *ctx, GLuint n, const GLfloat rgba[][4]); - - #endif -- cgit v1.2.3