mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
mesa/formatquery: Added a func to check if the <target> is supported
From the ARB_internalformat_query2 spec: "If the particular <target> and <internalformat> combination do not make sense, or if a particular type of <target> is not supported by the implementation the "unsupported" answer should be given. This is not an error." This function checks if the <target> is supported by the implementation. v2: Allow RENDERBUFFER targets also on GLES 3 profiles. Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
4af3e5e9f1
commit
806bc2bf22
1 changed files with 70 additions and 0 deletions
|
|
@ -28,6 +28,7 @@
|
|||
#include "enums.h"
|
||||
#include "fbobject.h"
|
||||
#include "formatquery.h"
|
||||
#include "teximage.h"
|
||||
|
||||
/* Handles the cases where either ARB_internalformat_query or
|
||||
* ARB_internalformat_query2 have to return an error.
|
||||
|
|
@ -362,6 +363,75 @@ _set_default_response(GLenum pname, GLint buffer[16])
|
|||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
_is_target_supported(struct gl_context *ctx, GLenum target)
|
||||
{
|
||||
/* The ARB_internalformat_query2 spec says:
|
||||
*
|
||||
* "if a particular type of <target> is not supported by the
|
||||
* implementation the "unsupported" answer should be given.
|
||||
* This is not an error."
|
||||
*/
|
||||
switch(target){
|
||||
case GL_TEXTURE_2D:
|
||||
case GL_TEXTURE_3D:
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_1D:
|
||||
if (!_mesa_is_desktop_gl(ctx))
|
||||
return false;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_1D_ARRAY:
|
||||
if (!_mesa_has_EXT_texture_array(ctx))
|
||||
return false;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_2D_ARRAY:
|
||||
if (!(_mesa_has_EXT_texture_array(ctx) || _mesa_is_gles3(ctx)))
|
||||
return false;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_CUBE_MAP:
|
||||
if (!_mesa_has_ARB_texture_cube_map(ctx))
|
||||
return false;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_CUBE_MAP_ARRAY:
|
||||
if (!_mesa_has_ARB_texture_cube_map_array(ctx))
|
||||
return false;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_RECTANGLE:
|
||||
if (!_mesa_has_NV_texture_rectangle(ctx))
|
||||
return false;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_BUFFER:
|
||||
if (!_mesa_has_ARB_texture_buffer_object(ctx))
|
||||
return false;
|
||||
break;
|
||||
|
||||
case GL_RENDERBUFFER:
|
||||
if (!(_mesa_has_ARB_framebuffer_object(ctx) ||
|
||||
_mesa_is_gles3(ctx)))
|
||||
return false;
|
||||
break;
|
||||
|
||||
case GL_TEXTURE_2D_MULTISAMPLE:
|
||||
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
|
||||
if (!(_mesa_has_ARB_texture_multisample(ctx) ||
|
||||
_mesa_is_gles31(ctx)))
|
||||
return false;
|
||||
break;
|
||||
|
||||
default:
|
||||
unreachable("invalid target");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* default implementation of QueryInternalFormat driverfunc, for
|
||||
* drivers not implementing ARB_internalformat_query2.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue