Hi Eric, I think José wanted TEXTURE_FLOAT_ENABLED to apply to hardware drivers only, because there is said to be prior art regarding software implementations. That's why I didn't use TEXTURE_FLOAT_ENABLED in any core components.
Marek On Mon, Apr 18, 2011 at 10:37 PM, Eric Anholt <e...@anholt.net> wrote: > --- > src/mesa/main/renderbuffer.c | 33 +++++++++++++++++++++++++++++++++ > 1 files changed, 33 insertions(+), 0 deletions(-) > > diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c > index 4a4a917..a255ddd 100644 > --- a/src/mesa/main/renderbuffer.c > +++ b/src/mesa/main/renderbuffer.c > @@ -113,6 +113,27 @@ get_row_generic(struct gl_context *ctx, struct > gl_renderbuffer *rb, > memcpy(values, src, count * _mesa_get_format_bytes(rb->Format)); > } > > +/* Only used for float textures currently, but might also be used for > + * RGBA8888, RGBA16, etc. > + */ > +#ifdef TEXTURE_FLOAT_ENABLED > + > +static void > +get_values_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, > + GLuint count, const GLint x[], const GLint y[], void > *values) > +{ > + int format_bytes = _mesa_get_format_bytes(rb->Format) / > sizeof(GLfloat); > + GLuint i; > + > + for (i = 0; i < count; i++) { > + const void *src = rb->GetPointer(ctx, rb, x[i], y[i]); > + > + memcpy(values + i * format_bytes, src, format_bytes); > + } > +} > + > +#endif /* TEXTURE_FLOAT_ENABLED */ > + > /* For the GL_RED/GL_RG/GL_RGB format/DataType combinations (and > * GL_LUMINANCE/GL_INTENSITY?), the Put functions are a matter of > * storing those initial components of the value per pixel into the > @@ -1238,6 +1259,18 @@ _mesa_set_renderbuffer_accessors(struct > gl_renderbuffer *rb) > rb->PutMonoValues = put_mono_values_uint; > break; > > +#ifdef TEXTURE_FLOAT_ENABLED > + case MESA_FORMAT_RGBA_FLOAT32: > + rb->GetRow = get_row_generic; > + rb->GetValues = get_values_generic; > + rb->PutRow = put_row_generic; > + rb->PutRowRGB = NULL; > + rb->PutMonoRow = put_mono_row_generic; > + rb->PutValues = put_values_generic; > + rb->PutMonoValues = put_mono_values_generic; > + break; > +#endif > + > default: > break; > } > -- > 1.7.4.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev