From 059d82c1c2566afc6f7ac07d38a206c6fa7c1ed4 Mon Sep 17 00:00:00 2001 From: Andres Rodriguez Date: Wed, 12 Jul 2017 18:45:27 -0400 Subject: [PATCH] mesa: hook up queries for NUM_TILING_TYPES and TILING_TYPES These are just basic implementations. Signed-off-by: Andres Rodriguez Reviewed-by: Timothy Arceri Reviewed-by: Samuel Pitoiset --- src/mesa/main/formatquery.c | 17 +++++++++++++++++ src/mesa/main/mtypes.h | 3 +++ src/mesa/main/texparam.c | 27 +++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/src/mesa/main/formatquery.c b/src/mesa/main/formatquery.c index 07fb2f2330f..77c7faa2251 100644 --- a/src/mesa/main/formatquery.c +++ b/src/mesa/main/formatquery.c @@ -216,6 +216,8 @@ _legal_parameters(struct gl_context *ctx, GLenum target, GLenum internalformat, case GL_CLEAR_BUFFER: case GL_TEXTURE_VIEW: case GL_VIEW_COMPATIBILITY_CLASS: + case GL_NUM_TILING_TYPES_EXT: + case GL_TILING_TYPES_EXT: /* The ARB_internalformat_query spec says: * * "If the parameter to GetInternalformativ is not SAMPLES @@ -284,6 +286,7 @@ _set_default_response(GLenum pname, GLint buffer[16]) */ switch(pname) { case GL_SAMPLES: + case GL_TILING_TYPES_EXT: break; case GL_MAX_COMBINED_DIMENSIONS: @@ -309,6 +312,7 @@ _set_default_response(GLenum pname, GLint buffer[16]) case GL_TEXTURE_COMPRESSED_BLOCK_WIDTH: case GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT: case GL_TEXTURE_COMPRESSED_BLOCK_SIZE: + case GL_NUM_TILING_TYPES_EXT: buffer[0] = 0; break; @@ -700,6 +704,13 @@ _mesa_query_internal_format_default(struct gl_context *ctx, GLenum target, case GL_FILTER: params[0] = GL_FULL_SUPPORT; break; + case GL_NUM_TILING_TYPES_EXT: + params[0] = 2; + break; + case GL_TILING_TYPES_EXT: + params[0] = GL_OPTIMAL_TILING_EXT; + params[1] = GL_LINEAR_TILING_EXT; + break; default: _set_default_response(pname, params); @@ -1519,6 +1530,12 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, } break; + case GL_NUM_TILING_TYPES_EXT: + case GL_TILING_TYPES_EXT: + ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname, + buffer); + break; + default: unreachable("bad param"); } diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index a5498732dee..49eb7d54bd5 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1057,6 +1057,9 @@ struct gl_texture_object /** GL_ARB_shader_image_load_store */ GLenum ImageFormatCompatibilityType; + /** GL_EXT_memory_object */ + GLenum TextureTiling; + /** GL_ARB_bindless_texture */ struct util_dynarray SamplerHandles; struct util_dynarray ImageHandles; diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index d8bbabf8f26..b6e91503eae 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -622,6 +622,14 @@ set_tex_parameteri(struct gl_context *ctx, } goto invalid_pname; + case GL_TEXTURE_TILING_EXT: + if (ctx->Extensions.EXT_memory_object) { + texObj->TextureTiling = params[0]; + + return GL_TRUE; + } + goto invalid_pname; + default: goto invalid_pname; } @@ -778,6 +786,13 @@ set_tex_parameterf(struct gl_context *ctx, } return GL_TRUE; + case GL_TEXTURE_TILING_EXT: + if (ctx->Extensions.EXT_memory_object) { + texObj->TextureTiling = params[0]; + return GL_TRUE; + } + goto invalid_pname; + default: goto invalid_pname; } @@ -2019,6 +2034,12 @@ get_tex_parameterfv(struct gl_context *ctx, *params = ENUM_TO_FLOAT(obj->Target); break; + case GL_TEXTURE_TILING_EXT: + if (!ctx->Extensions.EXT_memory_object) + goto invalid_pname; + *params = ENUM_TO_FLOAT(obj->TextureTiling); + break; + default: goto invalid_pname; } @@ -2251,6 +2272,12 @@ get_tex_parameteriv(struct gl_context *ctx, *params = (GLint) obj->Target; break; + case GL_TEXTURE_TILING_EXT: + if (!ctx->Extensions.EXT_memory_object) + goto invalid_pname; + *params = (GLint) obj->TextureTiling; + break; + default: goto invalid_pname; } -- 2.30.2