mesa: add GL_RED, GL_RG support for floating point textures
Mesa supports EXT_texture_rg and OES_texture_float. This patch adds support for using unsized enums GL_RED and GL_RG for floating point targets and writes proper checks for internalformat when format is GL_RED or GL_RG and type is of GL_FLOAT or GL_HALF_FLOAT. Later, internalformat will get adjusted by adjust_for_oes_float_texture after these checks. v2: simplify to check vs supported enums v3: follow the style and break out if internalFormat ok (Kenneth) Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90748 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -2296,8 +2296,18 @@ _mesa_es3_error_check_format_and_type(const struct gl_context *ctx,
|
||||
break;
|
||||
|
||||
case GL_HALF_FLOAT:
|
||||
if (internalFormat != GL_RG16F)
|
||||
return GL_INVALID_OPERATION;
|
||||
case GL_HALF_FLOAT_OES:
|
||||
switch (internalFormat) {
|
||||
case GL_RG16F:
|
||||
break;
|
||||
case GL_RG:
|
||||
if (ctx->Extensions.ARB_texture_rg &&
|
||||
ctx->Extensions.OES_texture_half_float)
|
||||
break;
|
||||
/* fallthrough */
|
||||
default:
|
||||
return GL_INVALID_OPERATION;
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_FLOAT:
|
||||
@@ -2305,6 +2315,11 @@ _mesa_es3_error_check_format_and_type(const struct gl_context *ctx,
|
||||
case GL_RG16F:
|
||||
case GL_RG32F:
|
||||
break;
|
||||
case GL_RG:
|
||||
if (ctx->Extensions.ARB_texture_rg &&
|
||||
ctx->Extensions.OES_texture_float)
|
||||
break;
|
||||
/* fallthrough */
|
||||
default:
|
||||
return GL_INVALID_OPERATION;
|
||||
}
|
||||
@@ -2365,8 +2380,19 @@ _mesa_es3_error_check_format_and_type(const struct gl_context *ctx,
|
||||
break;
|
||||
|
||||
case GL_HALF_FLOAT:
|
||||
if (internalFormat != GL_R16F)
|
||||
case GL_HALF_FLOAT_OES:
|
||||
switch (internalFormat) {
|
||||
case GL_R16F:
|
||||
break;
|
||||
case GL_RG:
|
||||
case GL_RED:
|
||||
if (ctx->Extensions.ARB_texture_rg &&
|
||||
ctx->Extensions.OES_texture_half_float)
|
||||
break;
|
||||
/* fallthrough */
|
||||
default:
|
||||
return GL_INVALID_OPERATION;
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_FLOAT:
|
||||
@@ -2374,6 +2400,11 @@ _mesa_es3_error_check_format_and_type(const struct gl_context *ctx,
|
||||
case GL_R16F:
|
||||
case GL_R32F:
|
||||
break;
|
||||
case GL_RED:
|
||||
if (ctx->Extensions.ARB_texture_rg &&
|
||||
ctx->Extensions.OES_texture_float)
|
||||
break;
|
||||
/* fallthrough */
|
||||
default:
|
||||
return GL_INVALID_OPERATION;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user