[Mesa-dev] [PATCH 02/10] mesa: Add renderbuffer accessors for MESA_FORMAT_RGBA_FLOAT32.

Marek Olšák maraeo at gmail.com
Mon Apr 18 14:10:26 PDT 2011


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 <eric at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20110418/00bf559e/attachment-0001.htm>


More information about the mesa-dev mailing list