radeonsi: enable ARB_sparse_texture
Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Qiang Yu <yuq825@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14223>
This commit is contained in:
parent
5a844f87a1
commit
71e2df73d9
|
@ -311,8 +311,8 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
|||
GL_ARB_shader_stencil_export DONE (i965/gen9+, r600, radeonsi, softpipe, llvmpipe, virgl, panfrost, zink)
|
||||
GL_ARB_shader_viewport_layer_array DONE (i965/gen6+, nvc0, radeonsi, zink)
|
||||
GL_ARB_shading_language_include DONE
|
||||
GL_ARB_sparse_buffer DONE (radeonsi/CIK+, zink)
|
||||
GL_ARB_sparse_texture not started
|
||||
GL_ARB_sparse_buffer DONE (radeonsi/gfx9+, zink)
|
||||
GL_ARB_sparse_texture DONE (radeonsi/gfx9+)
|
||||
GL_ARB_sparse_texture2 not started
|
||||
GL_ARB_sparse_texture_clamp not started
|
||||
GL_ARB_texture_filter_minmax DONE (nvc0/gm200+, zink)
|
||||
|
|
|
@ -2,3 +2,4 @@ lavapipe,radv KHR_dynamic_rendering
|
|||
radv EXT_image_view_min_lod
|
||||
VK_KHR_synchronization2 on RADV.
|
||||
OpenSWR has been moved to the Amber branch
|
||||
radeonsi ARB_sparse_texture
|
||||
|
|
|
@ -48,6 +48,10 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
{
|
||||
struct si_screen *sscreen = (struct si_screen *)pscreen;
|
||||
|
||||
/* Gfx8 (Polaris11) hangs, so don't enable this on Gfx8 and older chips. */
|
||||
bool enable_sparse = sscreen->info.chip_class >= GFX9 &&
|
||||
sscreen->info.has_sparse_vm_mappings;
|
||||
|
||||
switch (param) {
|
||||
/* Supported features (boolean caps). */
|
||||
case PIPE_CAP_ACCELERATED:
|
||||
|
@ -242,9 +246,7 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
return 0;
|
||||
|
||||
case PIPE_CAP_SPARSE_BUFFER_PAGE_SIZE:
|
||||
/* Gfx8 (Polaris11) hangs, so don't enable this on Gfx8 and older chips. */
|
||||
return sscreen->info.chip_class >= GFX9 &&
|
||||
sscreen->info.has_sparse_vm_mappings ? RADEON_SPARSE_PAGE_SIZE : 0;
|
||||
return enable_sparse ? RADEON_SPARSE_PAGE_SIZE : 0;
|
||||
|
||||
case PIPE_CAP_UMA:
|
||||
case PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF:
|
||||
|
@ -313,6 +315,19 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
/* textures support 8192, but layered rendering supports 2048 */
|
||||
return 2048;
|
||||
|
||||
/* Sparse texture */
|
||||
case PIPE_CAP_MAX_SPARSE_TEXTURE_SIZE:
|
||||
return enable_sparse ?
|
||||
si_get_param(pscreen, PIPE_CAP_MAX_TEXTURE_2D_SIZE) : 0;
|
||||
case PIPE_CAP_MAX_SPARSE_3D_TEXTURE_SIZE:
|
||||
return enable_sparse ?
|
||||
(1 << (si_get_param(pscreen, PIPE_CAP_MAX_TEXTURE_3D_LEVELS) - 1)) : 0;
|
||||
case PIPE_CAP_MAX_SPARSE_ARRAY_TEXTURE_LAYERS:
|
||||
return enable_sparse ?
|
||||
si_get_param(pscreen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS) : 0;
|
||||
case PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS:
|
||||
return enable_sparse ? 1 : 0;
|
||||
|
||||
/* Viewports and render targets. */
|
||||
case PIPE_CAP_MAX_VIEWPORTS:
|
||||
return SI_MAX_VIEWPORTS;
|
||||
|
|
Loading…
Reference in New Issue