|
|
@@ -123,33 +123,22 @@ intel_miptree_create_for_teximage(struct intel_context *intel, |
|
|
|
/* There are actually quite a few combinations this will work for, |
|
|
|
* more than what I've listed here. |
|
|
|
*/ |
|
|
|
static GLboolean |
|
|
|
check_pbo_format(GLint internalFormat, |
|
|
|
GLenum format, GLenum type, |
|
|
|
static bool |
|
|
|
check_pbo_format(GLenum format, GLenum type, |
|
|
|
gl_format mesa_format) |
|
|
|
{ |
|
|
|
switch (internalFormat) { |
|
|
|
case 4: |
|
|
|
case GL_RGBA: |
|
|
|
case GL_RGBA8: |
|
|
|
return (format == GL_BGRA && |
|
|
|
(type == GL_UNSIGNED_BYTE || |
|
|
|
type == GL_UNSIGNED_INT_8_8_8_8_REV) && |
|
|
|
mesa_format == MESA_FORMAT_ARGB8888); |
|
|
|
case 3: |
|
|
|
case GL_RGB: |
|
|
|
return (format == GL_RGB && |
|
|
|
type == GL_UNSIGNED_SHORT_5_6_5 && |
|
|
|
mesa_format == MESA_FORMAT_RGB565); |
|
|
|
case 1: |
|
|
|
case GL_LUMINANCE: |
|
|
|
return (format == GL_LUMINANCE && |
|
|
|
type == GL_UNSIGNED_BYTE && |
|
|
|
mesa_format == MESA_FORMAT_L8); |
|
|
|
case GL_YCBCR_MESA: |
|
|
|
switch (mesa_format) { |
|
|
|
case MESA_FORMAT_ARGB8888: |
|
|
|
return (format == GL_BGRA && (type == GL_UNSIGNED_BYTE || |
|
|
|
type == GL_UNSIGNED_INT_8_8_8_8_REV)); |
|
|
|
case MESA_FORMAT_RGB565: |
|
|
|
return (format == GL_RGB && type == GL_UNSIGNED_SHORT_5_6_5); |
|
|
|
case MESA_FORMAT_L8: |
|
|
|
return (format == GL_LUMINANCE && type == GL_UNSIGNED_BYTE); |
|
|
|
case MESA_FORMAT_YCBCR: |
|
|
|
return (type == GL_UNSIGNED_SHORT_8_8_MESA || type == GL_UNSIGNED_BYTE); |
|
|
|
default: |
|
|
|
return GL_FALSE; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -184,8 +173,7 @@ try_pbo_upload(struct intel_context *intel, |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
if (!check_pbo_format(intelImage->base.Base.InternalFormat, format, |
|
|
|
type, intelImage->base.Base.TexFormat)) { |
|
|
|
if (!check_pbo_format(format, type, intelImage->base.Base.TexFormat)) { |
|
|
|
DBG("%s: format mismatch (upload to %s with format 0x%x, type 0x%x)\n", |
|
|
|
__FUNCTION__, _mesa_get_format_name(intelImage->base.Base.TexFormat), |
|
|
|
format, type); |