diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index 2143c9d139f..c98e08b77a4 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -95,50 +95,6 @@ uint64_t agx_best_modifiers[] = { void agx_init_state_functions(struct pipe_context *ctx); -static struct pipe_query * -agx_create_query(struct pipe_context *ctx, unsigned query_type, unsigned index) -{ - struct agx_query *query = CALLOC_STRUCT(agx_query); - - return (struct pipe_query *)query; -} - -static void -agx_destroy_query(struct pipe_context *ctx, struct pipe_query *query) -{ - FREE(query); -} - -static bool -agx_begin_query(struct pipe_context *ctx, struct pipe_query *query) -{ - return true; -} - -static bool -agx_end_query(struct pipe_context *ctx, struct pipe_query *query) -{ - return true; -} - -static bool -agx_get_query_result(struct pipe_context *ctx, - struct pipe_query *query, - bool wait, - union pipe_query_result *vresult) -{ - uint64_t *result = (uint64_t*)vresult; - - *result = 0; - return true; -} - -static void -agx_set_active_query_state(struct pipe_context *pipe, bool enable) -{ -} - - /* * resource */ @@ -1177,12 +1133,6 @@ agx_create_context(struct pipe_screen *screen, pctx->resource_copy_region = util_resource_copy_region; pctx->blit = agx_blit; pctx->flush_resource = agx_flush_resource; - pctx->create_query = agx_create_query; - pctx->destroy_query = agx_destroy_query; - pctx->begin_query = agx_begin_query; - pctx->end_query = agx_end_query; - pctx->get_query_result = agx_get_query_result; - pctx->set_active_query_state = agx_set_active_query_state; pctx->buffer_map = u_transfer_helper_transfer_map; pctx->buffer_unmap = u_transfer_helper_transfer_unmap; @@ -1194,7 +1144,9 @@ agx_create_context(struct pipe_screen *screen, pctx->texture_subdata = u_default_texture_subdata; pctx->set_debug_callback = u_default_set_debug_callback; pctx->invalidate_resource = agx_invalidate_resource; + agx_init_state_functions(pctx); + agx_init_query_functions(pctx); agx_meta_init(&ctx->meta, agx_device(screen), ctx); diff --git a/src/gallium/drivers/asahi/agx_query.c b/src/gallium/drivers/asahi/agx_query.c new file mode 100644 index 00000000000..b9137821ef2 --- /dev/null +++ b/src/gallium/drivers/asahi/agx_query.c @@ -0,0 +1,60 @@ +/* + * Copyright 2022 Alyssa Rosenzweig + * SPDX-License-Identifier: MIT + */ + +#include "agx_state.h" + +static struct pipe_query * +agx_create_query(struct pipe_context *ctx, unsigned query_type, unsigned index) +{ + struct agx_query *query = calloc(1, sizeof(struct agx_query)); + + return (struct pipe_query *)query; +} + +static void +agx_destroy_query(struct pipe_context *ctx, struct pipe_query *query) +{ + free(query); +} + +static bool +agx_begin_query(struct pipe_context *ctx, struct pipe_query *query) +{ + return true; +} + +static bool +agx_end_query(struct pipe_context *ctx, struct pipe_query *query) +{ + return true; +} + +static bool +agx_get_query_result(struct pipe_context *ctx, + struct pipe_query *query, + bool wait, + union pipe_query_result *vresult) +{ + uint64_t *result = (uint64_t*)vresult; + + *result = 0; + return true; +} + +static void +agx_set_active_query_state(struct pipe_context *pipe, bool enable) +{ +} + +void +agx_init_query_functions(struct pipe_context *pctx) +{ + pctx->create_query = agx_create_query; + pctx->destroy_query = agx_destroy_query; + pctx->begin_query = agx_begin_query; + pctx->end_query = agx_end_query; + pctx->get_query_result = agx_get_query_result; + pctx->set_active_query_state = agx_set_active_query_state; +} diff --git a/src/gallium/drivers/asahi/agx_state.h b/src/gallium/drivers/asahi/agx_state.h index 165ef687b35..3495f9c98b0 100644 --- a/src/gallium/drivers/asahi/agx_state.h +++ b/src/gallium/drivers/asahi/agx_state.h @@ -245,6 +245,8 @@ agx_context(struct pipe_context *pctx) return (struct agx_context *) pctx; } +void agx_init_query_functions(struct pipe_context *ctx); + static inline void agx_dirty_all(struct agx_context *ctx) { diff --git a/src/gallium/drivers/asahi/meson.build b/src/gallium/drivers/asahi/meson.build index cd67db011ab..5ea2612961f 100644 --- a/src/gallium/drivers/asahi/meson.build +++ b/src/gallium/drivers/asahi/meson.build @@ -22,6 +22,7 @@ files_asahi = files( 'agx_batch.c', 'agx_blit.c', 'agx_pipe.c', + 'agx_query.c', 'agx_state.c', 'agx_uniforms.c', 'magic.c',