On Tue, Dec 20, 2016 at 6:45 AM, Topi Pohjolainen <topi.pohjolai...@gmail.com> wrote: > Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> > --- > src/mesa/drivers/common/meta_tex_subimage.c | 9 +++------ > src/mesa/main/glformats.c | 15 +++++++++++++++ > src/mesa/main/glformats.h | 4 ++++ > 3 files changed, 22 insertions(+), 6 deletions(-) > > diff --git a/src/mesa/drivers/common/meta_tex_subimage.c > b/src/mesa/drivers/common/meta_tex_subimage.c > index 703efcd..b8c422b 100644 > --- a/src/mesa/drivers/common/meta_tex_subimage.c > +++ b/src/mesa/drivers/common/meta_tex_subimage.c > @@ -72,7 +72,8 @@ create_texture_for_pbo(struct gl_context *ctx, > const struct gl_pixelstore_attrib *packing, > struct gl_buffer_object **tmp_pbo, GLuint *tmp_tex) > { > - uint32_t pbo_format; > + const mesa_format pbo_format = > + _mesa_tex_format_from_format_and_type(ctx, format, type); > GLenum internal_format; > unsigned row_stride; > struct gl_buffer_object *buffer_obj; > @@ -85,11 +86,7 @@ create_texture_for_pbo(struct gl_context *ctx, > packing->Invert) > return NULL; > > - pbo_format = _mesa_format_from_format_and_type(format, type); > - if (_mesa_format_is_mesa_array_format(pbo_format)) > - pbo_format = _mesa_format_from_array_format(pbo_format); > - > - if (!pbo_format || !ctx->TextureFormatSupported[pbo_format]) > + if (pbo_format == MESA_FORMAT_NONE) > return NULL; > > /* Account for SKIP_PIXELS, SKIP_ROWS, ALIGNMENT, and SKIP_IMAGES */ > diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c > index a95909c..4f24020 100644 > --- a/src/mesa/main/glformats.c > +++ b/src/mesa/main/glformats.c > @@ -3632,6 +3632,21 @@ _mesa_format_from_format_and_type(GLenum format, > GLenum type) > unreachable("Unsupported format"); > } > > +uint32_t > +_mesa_tex_format_from_format_and_type(const struct gl_context *ctx, > + GLenum gl_format, GLenum type) > +{ > + mesa_format format = _mesa_format_from_format_and_type(gl_format, type); > + > + if (_mesa_format_is_mesa_array_format(format)) > + format = _mesa_format_from_array_format(format); > + > + if (format == MESA_FORMAT_NONE || !ctx->TextureFormatSupported[format]) > + return MESA_FORMAT_NONE; > + > + return format; > +} > + > /** > * Returns true if \p internal_format is a sized internal format that > * is marked "Color Renderable" in Table 8.10 of the ES 3.2 specification. > diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h > index 763307f..5c9d826 100644 > --- a/src/mesa/main/glformats.h > +++ b/src/mesa/main/glformats.h > @@ -148,6 +148,10 @@ _mesa_base_tex_format(const struct gl_context *ctx, > GLint internalFormat ); > extern uint32_t > _mesa_format_from_format_and_type(GLenum format, GLenum type); > > +extern uint32_t > +_mesa_tex_format_from_format_and_type(const struct gl_context *ctx, > + GLenum gl_format, GLenum type); > + > extern bool > _mesa_is_es3_color_renderable(GLenum internal_format); > > -- > 2.5.5 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev