[Cogl] [PATCH] Support cogl_renderer_get_n_fragment_texture_units() for ARBfp

Robert Bragg robert at sixbynine.org
Wed Jan 30 06:31:41 PST 2013


This looks good to land to me:

Reviewed-by: Robert Bragg <robert at linux.intel.com>

thanks,
- Robert

On Wed, Jan 30, 2013 at 1:53 PM, Neil Roberts <neil at linux.intel.com> wrote:
> There is a cogl_renderer_get_n_fragment_texture_units() function which
> is documented to return the number of texture units that are
> accessible from a fragment program. This just directly returns the
> value from GL_MAX_TEXTURE_IMAGE_UNITS which is available in either the
> GLSL extensions or the ARBfp extension. Clutter-GST relies on this to
> determine whether it can use a program to convert the YUV data on the
> GPU.
>
> When the GL3 driver was added in 66c9db993595b this was changed to
> only query the value when the GLSL feature is available. Previously it
> would always query the value when the GL or GLES2 driver is used. This
> change makes sense on master because there is no API for an
> application to make its own ARBfp programs so the only way to access
> texture units from a program is via GLSL. However on the 1.14 branch
> this patch broke clutter-gst when GLSL is disabled because it thinks
> the ARBfp programs can't use multi-texturing.
>
> This patch just changes it to also query the value when ARBfp support
> is available.
>
> Note: it's probably note a good idea to apply this patch to master,
> but only to the 1.14 branch. On master the function probably needs to
> be changed anyway because it is using _COGL_GET_CONTEXT().
> ---
>  cogl/cogl-renderer.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/cogl/cogl-renderer.c b/cogl/cogl-renderer.c
> index 2535e6a..fcfa0b4 100644
> --- a/cogl/cogl-renderer.c
> +++ b/cogl/cogl-renderer.c
> @@ -590,7 +590,8 @@ cogl_renderer_get_n_fragment_texture_units (CoglRenderer *renderer)
>    _COGL_GET_CONTEXT (ctx, 0);
>
>  #if defined (HAVE_COGL_GL) || defined (HAVE_COGL_GLES2)
> -  if (cogl_has_feature (ctx, COGL_FEATURE_ID_GLSL))
> +  if (cogl_has_feature (ctx, COGL_FEATURE_ID_GLSL) ||
> +      cogl_has_feature (ctx, COGL_FEATURE_ID_ARBFP))
>      GE (ctx, glGetIntegerv (GL_MAX_TEXTURE_IMAGE_UNITS, &n));
>  #endif
>
> --
> 1.7.11.3.g3c3efa5
>
> _______________________________________________
> Cogl mailing list
> Cogl at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/cogl


More information about the Cogl mailing list