mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
st/mesa: implement and enable memory info extensions (v2)
v2: assert and return if query_memory_info is not set
rebase
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
837f74aa51
commit
5f51a24a77
2 changed files with 27 additions and 0 deletions
|
|
@ -96,6 +96,30 @@ static void st_Enable(struct gl_context * ctx, GLenum cap, GLboolean state)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called via ctx->Driver.QueryMemoryInfo()
|
||||
*/
|
||||
static void
|
||||
st_query_memory_info(struct gl_context *ctx, struct gl_memory_info *out)
|
||||
{
|
||||
struct pipe_screen *screen = st_context(ctx)->pipe->screen;
|
||||
struct pipe_memory_info info;
|
||||
|
||||
assert(screen->query_memory_info);
|
||||
if (!screen->query_memory_info)
|
||||
return;
|
||||
|
||||
screen->query_memory_info(screen, &info);
|
||||
|
||||
out->total_device_memory = info.total_device_memory;
|
||||
out->avail_device_memory = info.avail_device_memory;
|
||||
out->total_staging_memory = info.total_staging_memory;
|
||||
out->avail_staging_memory = info.avail_staging_memory;
|
||||
out->device_memory_evicted = info.device_memory_evicted;
|
||||
out->nr_device_memory_evictions = info.nr_device_memory_evictions;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Called via ctx->Driver.UpdateState()
|
||||
*/
|
||||
|
|
@ -491,4 +515,5 @@ void st_init_driver_functions(struct pipe_screen *screen,
|
|||
|
||||
functions->Enable = st_Enable;
|
||||
functions->UpdateState = st_invalidate_state;
|
||||
functions->QueryMemoryInfo = st_query_memory_info;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -527,12 +527,14 @@ void st_init_extensions(struct pipe_screen *screen,
|
|||
{ o(EXT_transform_feedback), PIPE_CAP_MAX_STREAM_OUTPUT_BUFFERS },
|
||||
|
||||
{ o(AMD_pinned_memory), PIPE_CAP_RESOURCE_FROM_USER_MEMORY },
|
||||
{ o(ATI_meminfo), PIPE_CAP_QUERY_MEMORY_INFO },
|
||||
{ o(AMD_seamless_cubemap_per_texture), PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE },
|
||||
{ o(ATI_separate_stencil), PIPE_CAP_TWO_SIDED_STENCIL },
|
||||
{ o(ATI_texture_mirror_once), PIPE_CAP_TEXTURE_MIRROR_CLAMP },
|
||||
{ o(NV_conditional_render), PIPE_CAP_CONDITIONAL_RENDER },
|
||||
{ o(NV_primitive_restart), PIPE_CAP_PRIMITIVE_RESTART },
|
||||
{ o(NV_texture_barrier), PIPE_CAP_TEXTURE_BARRIER },
|
||||
{ o(NVX_gpu_memory_info), PIPE_CAP_QUERY_MEMORY_INFO },
|
||||
/* GL_NV_point_sprite is not supported by gallium because we don't
|
||||
* support the GL_POINT_SPRITE_R_MODE_NV option. */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue