gallium: Add u_default_set_debug_callback

Drivers that don't use compile queues can use a common implementation. Drivers
that do can tail call into the common implementation.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18351>
This commit is contained in:
Alyssa Rosenzweig 2022-08-31 13:41:26 -04:00 committed by Marge Bot
parent 8318f73384
commit c4b3dee8f3
3 changed files with 56 additions and 0 deletions

View file

@ -230,6 +230,7 @@ files_libgallium = files(
'util/u_cache.h',
'util/u_compute.c',
'util/u_compute.h',
'util/u_debug_cb.h',
'util/u_debug_flush.c',
'util/u_debug_flush.h',
'util/u_debug_image.c',

View file

@ -0,0 +1,48 @@
/*
* Copyright (C) 2022 Collabora, Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* on the rights to use, copy, modify, merge, publish, distribute, sub
* license, and/or sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
* THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
* USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef U_DEBUG_H
#define U_DEBUG_H
#include "util/u_debug.h"
#include "pipe/p_context.h"
#ifdef __cplusplus
extern "C" {
#endif
static inline void
u_default_set_debug_callback(struct pipe_context *ctx,
const struct util_debug_callback *cb)
{
if (cb)
ctx->debug = *cb;
else
memset(&ctx->debug, 0, sizeof(ctx->debug));
}
#ifdef __cplusplus
}
#endif
#endif /* U_LOG_H */

View file

@ -32,6 +32,7 @@
#include "p_format.h"
#include "p_video_enums.h"
#include "p_defines.h"
#include "util/u_debug.h"
#include <stdio.h>
#ifdef __cplusplus
@ -104,6 +105,12 @@ struct pipe_context {
struct u_upload_mgr *stream_uploader; /* everything but shader constants */
struct u_upload_mgr *const_uploader; /* shader constants only */
/**
* Debug callback set by u_default_set_debug_callback. Frontends should use
* set_debug_callback in case drivers need to flush compiler queues.
*/
struct util_debug_callback debug;
void (*destroy)( struct pipe_context * );
/**