summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Rodriguez <andresx7@gmail.com>2017-07-12 18:45:27 -0400
committerTimothy Arceri <tarceri@itsqueeze.com>2017-08-06 12:42:07 +1000
commit059d82c1c2566afc6f7ac07d38a206c6fa7c1ed4 (patch)
tree09e046de69d4305376914c32c97ca095d9936d75
parent68623933a06b018edb8555c26a4505832719054c (diff)
mesa: hook up queries for NUM_TILING_TYPES and TILING_TYPES
These are just basic implementations. Signed-off-by: Andres Rodriguez <andresx7@gmail.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
-rw-r--r--src/mesa/main/formatquery.c17
-rw-r--r--src/mesa/main/mtypes.h3
-rw-r--r--src/mesa/main/texparam.c27
3 files changed, 47 insertions, 0 deletions
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 <pname> 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;
}