meta: Refactor texture format translation
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
parent
542bb85049
commit
a283a4ee2f
|
@ -72,7 +72,8 @@ create_texture_for_pbo(struct gl_context *ctx,
|
||||||
const struct gl_pixelstore_attrib *packing,
|
const struct gl_pixelstore_attrib *packing,
|
||||||
struct gl_buffer_object **tmp_pbo, GLuint *tmp_tex)
|
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;
|
GLenum internal_format;
|
||||||
unsigned row_stride;
|
unsigned row_stride;
|
||||||
struct gl_buffer_object *buffer_obj;
|
struct gl_buffer_object *buffer_obj;
|
||||||
|
@ -85,11 +86,7 @@ create_texture_for_pbo(struct gl_context *ctx,
|
||||||
packing->Invert)
|
packing->Invert)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
pbo_format = _mesa_format_from_format_and_type(format, type);
|
if (pbo_format == MESA_FORMAT_NONE)
|
||||||
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])
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Account for SKIP_PIXELS, SKIP_ROWS, ALIGNMENT, and SKIP_IMAGES */
|
/* Account for SKIP_PIXELS, SKIP_ROWS, ALIGNMENT, and SKIP_IMAGES */
|
||||||
|
|
|
@ -3632,6 +3632,21 @@ _mesa_format_from_format_and_type(GLenum format, GLenum type)
|
||||||
unreachable("Unsupported format");
|
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
|
* 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.
|
* is marked "Color Renderable" in Table 8.10 of the ES 3.2 specification.
|
||||||
|
|
|
@ -148,6 +148,10 @@ _mesa_base_tex_format(const struct gl_context *ctx, GLint internalFormat );
|
||||||
extern uint32_t
|
extern uint32_t
|
||||||
_mesa_format_from_format_and_type(GLenum format, GLenum type);
|
_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
|
extern bool
|
||||||
_mesa_is_es3_color_renderable(GLenum internal_format);
|
_mesa_is_es3_color_renderable(GLenum internal_format);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue