gallium: add PIPE_CAP_PERFORMANCE_MONITOR for GL_AMD_performance_monitor
Use a CAP instead of guessing it. radeonsi won't expose it. Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26262>
This commit is contained in:
@@ -647,6 +647,8 @@ The integer capabilities:
|
||||
* ``PIPE_CAP_ASTC_VOID_EXTENTS_NEED_DENORM_FLUSH`` : True if the driver/hardware needs denormalized values in ASTC void extent blocks flushed to zero.
|
||||
* ``PIPE_CAP_VALIDATE_ALL_DIRTY_STATES`` : Whether state validation must also validate the state changes for resources types used in the previous shader but not in the current shader.
|
||||
* ``PIPE_CAP_HAS_CONST_BW``: Whether the driver only supports non-data-dependent layouts (ie. not bandwidth compressed formats like AFBC, UBWC, etc), or supports ``PIPE_BIND_CONST_BW`` to disable data-dependent layouts on requested resources.
|
||||
* ``PIPE_CAP_PERFORMANCE_MONITOR``: Whether GL_AMD_performance_monitor should be exposed.
|
||||
|
||||
|
||||
.. _pipe_capf:
|
||||
|
||||
|
@@ -550,6 +550,10 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
|
||||
case PIPE_CAP_HAS_CONST_BW:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_PERFORMANCE_MONITOR:
|
||||
return pscreen->get_driver_query_info && pscreen->get_driver_query_group_info &&
|
||||
pscreen->get_driver_query_group_info(pscreen, 0, NULL) != 0;
|
||||
|
||||
default:
|
||||
unreachable("bad PIPE_CAP_*");
|
||||
}
|
||||
|
@@ -934,6 +934,7 @@ enum pipe_cap
|
||||
PIPE_CAP_ASTC_VOID_EXTENTS_NEED_DENORM_FLUSH,
|
||||
PIPE_CAP_VALIDATE_ALL_DIRTY_STATES,
|
||||
PIPE_CAP_HAS_CONST_BW,
|
||||
PIPE_CAP_PERFORMANCE_MONITOR,
|
||||
PIPE_CAP_LAST,
|
||||
/* XXX do not add caps after PIPE_CAP_LAST! */
|
||||
};
|
||||
|
@@ -431,17 +431,6 @@ st_init_driver_flags(struct st_context *st)
|
||||
f->NewAtomicBuffer |= ST_NEW_CONSTANTS;
|
||||
}
|
||||
|
||||
static bool
|
||||
st_have_perfmon(struct st_context *st)
|
||||
{
|
||||
struct pipe_screen *screen = st->screen;
|
||||
|
||||
if (!screen->get_driver_query_info || !screen->get_driver_query_group_info)
|
||||
return false;
|
||||
|
||||
return screen->get_driver_query_group_info(screen, 0, NULL) != 0;
|
||||
}
|
||||
|
||||
static bool
|
||||
st_have_perfquery(struct st_context *ctx)
|
||||
{
|
||||
@@ -663,10 +652,6 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe,
|
||||
st_init_extensions(screen, &ctx->Const,
|
||||
&ctx->Extensions, &st->options, ctx->API);
|
||||
|
||||
if (st_have_perfmon(st)) {
|
||||
ctx->Extensions.AMD_performance_monitor = GL_TRUE;
|
||||
}
|
||||
|
||||
if (st_have_perfquery(st)) {
|
||||
ctx->Extensions.INTEL_performance_query = GL_TRUE;
|
||||
}
|
||||
|
@@ -846,6 +846,7 @@ void st_init_extensions(struct pipe_screen *screen,
|
||||
|
||||
{ o(AMD_depth_clamp_separate), PIPE_CAP_DEPTH_CLIP_DISABLE_SEPARATE },
|
||||
{ o(AMD_framebuffer_multisample_advanced), PIPE_CAP_FRAMEBUFFER_MSAA_CONSTRAINTS },
|
||||
{ o(AMD_performance_monitor), PIPE_CAP_PERFORMANCE_MONITOR },
|
||||
{ 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 },
|
||||
|
Reference in New Issue
Block a user