diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index bbe6e28fe42..e20bc6d8f25 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -582,6 +582,7 @@ EXTRA_EXT(ARB_sample_locations); EXTRA_EXT(AMD_framebuffer_multisample_advanced); EXTRA_EXT(ARB_spirv_extensions); EXTRA_EXT(NV_viewport_swizzle); +EXTRA_EXT(ARB_sparse_texture); static const int extra_ARB_color_buffer_float_or_glcore[] = { diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py index 6c824c7aa6b..0a629ad6ace 100644 --- a/src/mesa/main/get_hash_params.py +++ b/src/mesa/main/get_hash_params.py @@ -957,6 +957,12 @@ descriptor=[ # GL_ARB_color_buffer_float [ "RGBA_FLOAT_MODE_ARB", "BUFFER_FIELD(Visual.floatMode, TYPE_BOOLEAN), extra_core_ARB_color_buffer_float_and_new_buffers" ], +# GL_ARB_sparse_texture + [ "MAX_SPARSE_TEXTURE_SIZE_ARB", "CONTEXT_INT(Const.MaxSparseTextureSize), extra_ARB_sparse_texture" ], + [ "MAX_SPARSE_3D_TEXTURE_SIZE_ARB", "CONTEXT_INT(Const.MaxSparse3DTextureSize), extra_ARB_sparse_texture" ], + [ "MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB", "CONTEXT_INT(Const.MaxSparseArrayTextureLayers), extra_ARB_sparse_texture" ], + [ "SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB", "CONTEXT_BOOL(Const.SparseTextureFullArrayCubeMipmaps), extra_ARB_sparse_texture" ], + # GL3.0 / GL_EXT_framebuffer_sRGB [ "FRAMEBUFFER_SRGB_CAPABLE_EXT", "BUFFER_INT(Visual.sRGBCapable), extra_EXT_framebuffer_sRGB_and_new_buffers" ], diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index b26b2929bfa..be68cb1bef2 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -4328,6 +4328,12 @@ struct gl_constants * a frame, but always getting framebuffer completeness. */ bool GLThreadNopCheckFramebufferStatus; + + /** GL_ARB_sparse_texture */ + GLuint MaxSparseTextureSize; + GLuint MaxSparse3DTextureSize; + GLuint MaxSparseArrayTextureLayers; + bool SparseTextureFullArrayCubeMipmaps; }; diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index b8a503ef0fd..7967213092e 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -638,6 +638,15 @@ void st_init_limits(struct pipe_screen *screen, c->glBeginEndBufferSize = screen->get_param(screen, PIPE_CAP_GL_BEGIN_END_BUFFER_SIZE); + + c->MaxSparseTextureSize = + screen->get_param(screen, PIPE_CAP_MAX_SPARSE_TEXTURE_SIZE); + c->MaxSparse3DTextureSize = + screen->get_param(screen, PIPE_CAP_MAX_SPARSE_3D_TEXTURE_SIZE); + c->MaxSparseArrayTextureLayers = + screen->get_param(screen, PIPE_CAP_MAX_SPARSE_ARRAY_TEXTURE_LAYERS); + c->SparseTextureFullArrayCubeMipmaps = + screen->get_param(screen, PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS); }