[Mesa-dev] [PATCH 2/2] gallium/hud: also try R8_UNORM format for font texture

Marek Olšák maraeo at gmail.com
Fri Feb 6 06:44:36 PST 2015


For the series:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Wed, Feb 4, 2015 at 9:46 PM, Brian Paul <brianp at vmware.com> wrote:
> Convert the code to try formats from an array rather than a bunch
> of if/else cases.
> ---
>  src/gallium/auxiliary/hud/font.c | 24 +++++++++++++++---------
>  1 file changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/src/gallium/auxiliary/hud/font.c b/src/gallium/auxiliary/hud/font.c
> index 03e35d9..60e8ae5 100644
> --- a/src/gallium/auxiliary/hud/font.c
> +++ b/src/gallium/auxiliary/hud/font.c
> @@ -57,6 +57,7 @@
>  #include "pipe/p_state.h"
>  #include "pipe/p_context.h"
>  #include "util/u_inlines.h"
> +#include "util/u_memory.h"
>
>  typedef unsigned char  GLubyte;        /* 1-byte unsigned */
>  typedef struct tagSFG_Font SFG_Font;
> @@ -373,24 +374,29 @@ static boolean
>  util_font_create_fixed_8x13(struct pipe_context *pipe,
>                              struct util_font *out_font)
>  {
> +   static const enum pipe_format formats[] = {
> +      PIPE_FORMAT_I8_UNORM,
> +      PIPE_FORMAT_L8_UNORM,
> +      PIPE_FORMAT_R8_UNORM
> +   };
>     struct pipe_screen *screen = pipe->screen;
>     struct pipe_resource tex_templ, *tex;
>     struct pipe_transfer *transfer = NULL;
>     char *map;
> -   enum pipe_format tex_format;
> +   enum pipe_format tex_format = PIPE_FORMAT_NONE;
>     int i;
>
> -   if (screen->is_format_supported(screen, PIPE_FORMAT_I8_UNORM,
> +   for (i = 0; i < Elements(formats); i++) {
> +      if (screen->is_format_supported(screen, formats[i],
>                                     PIPE_TEXTURE_RECT, 0,
>                                     PIPE_BIND_SAMPLER_VIEW)) {
> -      tex_format = PIPE_FORMAT_I8_UNORM;
> -   }
> -   else if (screen->is_format_supported(screen, PIPE_FORMAT_L8_UNORM,
> -                                   PIPE_TEXTURE_RECT, 0,
> -                                   PIPE_BIND_SAMPLER_VIEW)) {
> -      tex_format = PIPE_FORMAT_L8_UNORM;
> +         tex_format = formats[i];
> +         break;
> +      }
>     }
> -   else {
> +
> +   if (tex_format == PIPE_FORMAT_NONE) {
> +      debug_printf("Unable to find texture format for font.\n");
>        return FALSE;
>     }
>
> --
> 1.9.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list