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>tags/17.3-branchpoint
@@ -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"); | |||
} |
@@ -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; |
@@ -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; | |||
} |