mesa/formatquery: Added SHADER_IMAGE_{LOAD,STORE,ATOMIC} <pname> queries
From the ARB_internalformat_query2 specification:
"- SHADER_IMAGE_LOAD: The support for using the resource with image load
operations in shaders is written to <params>.
In this case the <internalformat> is the value of the <format> parameter
that would be passed to BindImageTexture.
- SHADER_IMAGE_STORE: The support for using the resource with image store
operations in shaders is written to <params>.
In this case the <internalformat> is the value of the <format> parameter
that is passed to BindImageTexture.
- SHADER_IMAGE_ATOMIC: The support for using the resource with atomic
memory operations from shaders is written to <params>."
For all of them:
"Possible values returned are FULL_SUPPORT, CAVEAT_SUPPORT, or NONE.
If the resource or operation is not supported, NONE is returned."
Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
committed by
Eduardo Lima Mitev
parent
876f7a7c08
commit
52c3692324
@@ -33,6 +33,7 @@
|
||||
#include "texobj.h"
|
||||
#include "get.h"
|
||||
#include "genmipmap.h"
|
||||
#include "shaderimage.h"
|
||||
|
||||
static bool
|
||||
_is_renderable(struct gl_context *ctx, GLenum internalformat)
|
||||
@@ -607,6 +608,9 @@ _mesa_query_internal_format_default(struct gl_context *ctx, GLenum target,
|
||||
case GL_GEOMETRY_TEXTURE:
|
||||
case GL_FRAGMENT_TEXTURE:
|
||||
case GL_COMPUTE_TEXTURE:
|
||||
case GL_SHADER_IMAGE_LOAD:
|
||||
case GL_SHADER_IMAGE_STORE:
|
||||
case GL_SHADER_IMAGE_ATOMIC:
|
||||
params[0] = GL_FULL_SUPPORT;
|
||||
break;
|
||||
|
||||
@@ -1190,15 +1194,30 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
|
||||
break;
|
||||
|
||||
case GL_SHADER_IMAGE_LOAD:
|
||||
/* @TODO */
|
||||
break;
|
||||
|
||||
case GL_SHADER_IMAGE_STORE:
|
||||
/* @TODO */
|
||||
if (!_mesa_has_ARB_shader_image_load_store(ctx))
|
||||
goto end;
|
||||
|
||||
/* We call to _mesa_is_shader_image_format_supported
|
||||
* using "internalformat" as parameter, because the
|
||||
* the ARB_internalformat_query2 spec says:
|
||||
* "In this case the <internalformat> is the value of the <format>
|
||||
* parameter that is passed to BindImageTexture."
|
||||
*/
|
||||
if (target == GL_RENDERBUFFER ||
|
||||
!_mesa_is_shader_image_format_supported(ctx, internalformat))
|
||||
goto end;
|
||||
|
||||
ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname,
|
||||
buffer);
|
||||
break;
|
||||
|
||||
case GL_SHADER_IMAGE_ATOMIC:
|
||||
/* @TODO */
|
||||
if (!_mesa_has_ARB_shader_image_load_store(ctx))
|
||||
goto end;
|
||||
|
||||
ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname,
|
||||
buffer);
|
||||
break;
|
||||
|
||||
case GL_IMAGE_TEXEL_SIZE:
|
||||
|
||||
Reference in New Issue
Block a user