[build] Add support for building with Tracy

Tracy is a frame profiler: https://github.com/wolfpld/tracy

This uses Tracy's C API to instrument the code (already added in several
places). It turns out there is something very weird with the fence
behavior between the staging buffers and render commands as the
inter-frame delay occurs in a very strangle place (in the draw code's
packet acquisition rather than the fence waiter that's there for that
purpose). I suspect some tangled dependencies.
This commit is contained in:
Bill Currie 2023-11-28 15:54:55 +09:00
parent cba1866360
commit 010c658653
41 changed files with 206 additions and 10 deletions

1
.gitignore vendored
View file

@ -44,6 +44,7 @@ core
/quakeforge-config /quakeforge-config
/quakeforge.lsm /quakeforge.lsm
/test-driver /test-driver
/tracy
/ylwrap /ylwrap
# /RPM/ # /RPM/

View file

@ -25,8 +25,9 @@ NOCONV_DIST= \
$(distdir)/include/win32/resources/icon1XP.ico $(distdir)/include/win32/resources/icon1XP.ico
BUILT_SOURCES = $(top_srcdir)/.version BUILT_SOURCES = $(top_srcdir)/.version
#AM_CFLAGS= @PREFER_NON_PIC@ AM_CFLAGS= $(TRACY_CFLAGS) -funwind-tables -include qftracy.h
AM_CPPFLAGS= -I$(top_srcdir)/include $(PTHREAD_CFLAGS) $(FNM_FLAGS) $(NCURSES_CFLAGS) $(FREETYPE_CFLAGS) $(HARFBUZZ_CFLAGS) $(VULKAN_CPPFLAGS) $(LIBCURL_CFLAGS) AM_CXXFLAGS= $(TRACY_CFLAGS) -include qftracy.h
AM_CPPFLAGS= -I$(top_srcdir)/include $(UNWIND_CFLAGS) $(PTHREAD_CFLAGS) $(FNM_FLAGS) $(NCURSES_CFLAGS) $(FREETYPE_CFLAGS) $(HARFBUZZ_CFLAGS) $(VULKAN_CPPFLAGS) $(LIBCURL_CFLAGS)
common_ldflags= -export-dynamic @STATIC@ @PTHREAD_LDFLAGS@ common_ldflags= -export-dynamic @STATIC@ @PTHREAD_LDFLAGS@
@ -60,6 +61,12 @@ YFLAGS = -v -d -Wno-yacc -Werror
PTHREAD_LDFLAGS=@PTHREAD_LDFLAGS@ PTHREAD_LDFLAGS=@PTHREAD_LDFLAGS@
PTHREAD_CFLAGS=@PTHREAD_CFLAGS@ PTHREAD_CFLAGS=@PTHREAD_CFLAGS@
if HAVE_TRACY
tracy_src=tracy/public/TracyClient.cpp
else
tracy_src=
endif
lib_ldflags=-version-info $(QUAKE_LIBRARY_VERSION_INFO) \ lib_ldflags=-version-info $(QUAKE_LIBRARY_VERSION_INFO) \
-rpath $(libdir) -no-undefined -rpath $(libdir) -no-undefined
plugin_ldflags= @plugin_ldflags@ -avoid-version -module -rpath $(plugindir) plugin_ldflags= @plugin_ldflags@ -avoid-version -module -rpath $(plugindir)

View file

@ -64,7 +64,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <winsock.h> #include <winsock.h>
]], [[ ]], [[
connect(0, NULL, 42); connect(0, NULL, 42);
]])],[NET_LIBS="$NET_LIBS -lwsock32 -lwinmm" ]])],[NET_LIBS="$NET_LIBS -lwsock32"
ac_cv_func_connect=yes ac_cv_func_connect=yes
ac_cv_func_gethostbyname=yes ac_cv_func_gethostbyname=yes
HAVE_WSOCK=yes HAVE_WSOCK=yes
@ -72,6 +72,21 @@ connect(0, NULL, 42);
]) ])
LIBS="$SAVELIBS" LIBS="$SAVELIBS"
AC_MSG_CHECKING([for WSAPoll in -lws2_32])
SAVELIBS="$LIBS"
LIBS="$LIBS -lws2_32"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <winsock.h>
]], [[
WSAPoll(NULL, 0, 42);
]])],[NET_LIBS="$NET_LIBS -lws2_32 -lwinmm"
ac_cv_func_connect=yes
ac_cv_func_gethostbyname=yes
HAVE_WS2=yes
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
])
LIBS="$SAVELIBS"
AC_MSG_CHECKING(for UDP support) AC_MSG_CHECKING(for UDP support)
if test "x$ac_cv_func_connect" = "xyes" -a "x$ac_cv_func_gethostbyname" = "xyes"; then if test "x$ac_cv_func_connect" = "xyes" -a "x$ac_cv_func_gethostbyname" = "xyes"; then
HAVE_UDP=yes HAVE_UDP=yes

View file

@ -4,6 +4,7 @@ dnl ==================================================================
AC_PROG_INSTALL AC_PROG_INSTALL
AC_PROG_CC AC_PROG_CC
AC_PROG_CXX
AC_PROG_CPP AC_PROG_CPP
AC_PROG_LN_S AC_PROG_LN_S
AC_PROG_RANLIB AC_PROG_RANLIB

35
config.d/tracy.m4 Normal file
View file

@ -0,0 +1,35 @@
AC_ARG_ENABLE(tracy,
AS_HELP_STRING(
[--disable-tracy],
[disable use of tracy profiler]
)
)
HAVE_TRACY=no
if test "x$enable_tracy" = "xyes"; then
tracy_dir=${srcdir}/tracy/public
if test -d ${tracy_dir}; then
TRACY_CFLAGS="-I ${tracy_dir} -DHAVE_TRACY"
HAVE_TRACY=yes
fi
fi
AC_SUBST(TRACY_CFLAGS)
AC_SUBST(TRACY_SRC)
AM_CONDITIONAL(HAVE_TRACY, test "x$HAVE_TRACY" = "xyes")
if test "x$HAVE_TRACY" = "xyes"; then
AC_MSG_CHECKING([for SymFromAddr in -ldbghelp])
SAVELIBS="$LIBS"
LIBS="$LIBS -ldbghelp"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <windows.h>
#include <dbghelp.h>
]], [[
SymFromAddr(NULL, 0, NULL, NULL);
]])],[NET_LIBS="$NET_LIBS -ldbghelp"
ac_cv_func_connect=yes
ac_cv_func_gethostbyname=yes
HAVE_WS2=yes
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
])
LIBS="$SAVELIBS"
fi

View file

@ -140,6 +140,7 @@ m4_include(config.d/paths.m4)
m4_include(config.d/build_control.m4) m4_include(config.d/build_control.m4)
m4_include(config.d/qfcc.m4) m4_include(config.d/qfcc.m4)
m4_include(config.d/tracy.m4)
AC_ARG_ENABLE(static-doc, AC_ARG_ENABLE(static-doc,
AS_HELP_STRING([--enable-static-doc], AS_HELP_STRING([--enable-static-doc],

50
include/qftracy.h Normal file
View file

@ -0,0 +1,50 @@
// do not include this directly: it's meant for -include
#ifdef HAVE_TRACY
// tracy includes math.h but _GNU_SOURCE is needed for sincosf
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
// enable tracy
#define TRACY_ENABLE
#include "tracy/TracyC.h"
inline void __qfZoneEnd (TracyCZoneCtx **ctxptr)
{
TracyCZoneEnd (**ctxptr);
}
#define qfConcatInternal(a,b) a##b
#define qfConcat(a,b) qfConcatInternal(a, b)
#define qfFrameMark TracyCFrameMark
#define qfZoneNamed(varname, active) \
TracyCZone (varname, active) \
__attribute__((cleanup(__qfZoneEnd))) \
TracyCZoneCtx *qfConcat(__qfZone, __COUNTER__) = &varname
#define qfZoneEnd(varname) TracyCZoneEnd (varname)
#define qfZoneName(ctx, name, size) TracyCZoneName (ctx, name, size)
#define qfZoneColor(ctx, color) TracyCZoneColor (ctx, color)
#define qfZoneValue(ctx, value) TracyCZoneValue (ctx, value)
#define qfZoneNamedN(varname, name, active) \
TracyCZoneN (varname, name, active) \
__attribute__((cleanup(__qfZoneEnd))) \
TracyCZoneCtx *qfConcat(__qfZone, __COUNTER__) = &varname
#define qfMessageL(msg) TracyCMessageL(msg)
#else
#define qfFrameMark
#define qfZoneNamed(varname, active)
#define qfZoneEnd(varname)
#define qfZoneName(ctx, name, size)
#define qfZoneColor(ctx, color)
#define qfZoneValue(ctx, value)
#define qfZoneNamedN(varname, name, active)
#define qfMessageL(msg)
#endif

View file

@ -169,6 +169,7 @@ SCR_CShift (view_pos_t abs, view_pos_t len)
static void static void
scr_draw_views (void) scr_draw_views (void)
{ {
qfZoneNamed (zone, true);
if (scr_showturtle) { if (scr_showturtle) {
static int count; static int count;
if (r_data->frametime < 0.1) { if (r_data->frametime < 0.1) {
@ -325,6 +326,7 @@ CL_Init_Screen (void)
void void
CL_UpdateScreen (viewstate_t *vs) CL_UpdateScreen (viewstate_t *vs)
{ {
qfZoneNamedN (us_zone, "CL_UpdateScreen", true);
_vs = vs; _vs = vs;
//FIXME not every time //FIXME not every time

View file

@ -666,6 +666,7 @@ CL_UpdateExplosions (double time, TEntContext_t *ctx)
void void
CL_UpdateTEnts (double time, TEntContext_t *ctx) CL_UpdateTEnts (double time, TEntContext_t *ctx)
{ {
qfZoneNamedN (ut_zone, "CL_UpdateTEnts", true);
free_stale_entities (); free_stale_entities ();
CL_UpdateBeams (time, ctx); CL_UpdateBeams (time, ctx);
CL_UpdateExplosions (time, ctx); CL_UpdateExplosions (time, ctx);

View file

@ -632,6 +632,7 @@ V_DropCShift (cshift_t *cs, double time, float droprate)
void void
V_PrepBlend (viewstate_t *vs) V_PrepBlend (viewstate_t *vs)
{ {
qfZoneNamed (zone, true);
int i, j; int i, j;
if (cl_cshift_powerup if (cl_cshift_powerup
@ -931,6 +932,7 @@ DropPunchAngle (viewstate_t *vs)
void void
V_RenderView (viewstate_t *vs) V_RenderView (viewstate_t *vs)
{ {
qfZoneNamed (zone, true);
if (!vs->active) { if (!vs->active) {
if (Transform_Valid (vs->camera_transform)) { if (Transform_Valid (vs->camera_transform)) {
vec4f_t base = { 0, 0, 0, 1 }; vec4f_t base = { 0, 0, 0, 1 };

View file

@ -1754,6 +1754,7 @@ Sbar_DrawCenterPrint (void)
void void
Sbar_Update (double time) Sbar_Update (double time)
{ {
qfZoneNamedN (sbu_zone, "Sbar_Update", true);
fps_count++; fps_count++;
sbar_time = time; sbar_time = time;
if (!sbar_active) { if (!sbar_active) {

View file

@ -791,6 +791,7 @@ setup_console (void)
static void static void
C_DrawConsole (void) C_DrawConsole (void)
{ {
qfZoneNamed (zone, true);
if (con_debug) { if (con_debug) {
Con_Debug_Draw (); Con_Debug_Draw ();
} }

View file

@ -167,6 +167,7 @@ typedef void (*canvas_sysfunc_f) (canvas_system_t *canvas_sys,
static void static void
draw_update (canvas_system_t *canvas_sys, ecs_pool_t *pool, ecs_range_t range) draw_update (canvas_system_t *canvas_sys, ecs_pool_t *pool, ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -180,6 +181,7 @@ static void
draw_tile_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_tile_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -197,6 +199,7 @@ static void
draw_pic_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_pic_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -215,6 +218,7 @@ static void
draw_fitpic_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_fitpic_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -234,6 +238,7 @@ static void
draw_subpic_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_subpic_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -253,6 +258,7 @@ static void
draw_cachepic_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_cachepic_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -272,6 +278,7 @@ static void
draw_fill_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_fill_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -291,6 +298,7 @@ static void
draw_charbuff_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_charbuff_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -309,6 +317,7 @@ static void
draw_func_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_func_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -328,6 +337,7 @@ static void
draw_outline_views (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_outline_views (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base }; ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
uint32_t count = range.end - range.start; uint32_t count = range.end - range.start;
uint32_t *ent = pool->dense + range.start; uint32_t *ent = pool->dense + range.start;
@ -378,6 +388,7 @@ draw_box (view_pos_t *abs, view_pos_t *len, uint32_t ind, int c)
static void static void
draw_glyphs (canvas_system_t *canvas_sys, ecs_pool_t *pool, ecs_range_t range) draw_glyphs (canvas_system_t *canvas_sys, ecs_pool_t *pool, ecs_range_t range)
{ {
qfZoneNamed (zone, true);
auto reg = canvas_sys->reg; auto reg = canvas_sys->reg;
uint32_t glyphs = canvas_sys->text_base + text_glyphs; uint32_t glyphs = canvas_sys->text_base + text_glyphs;
uint32_t color = canvas_sys->text_base + text_color; uint32_t color = canvas_sys->text_base + text_color;
@ -402,6 +413,7 @@ static void
draw_passage_glyphs (canvas_system_t *canvas_sys, ecs_pool_t *pool, draw_passage_glyphs (canvas_system_t *canvas_sys, ecs_pool_t *pool,
ecs_range_t range) ecs_range_t range)
{ {
qfZoneNamed (zone, true);
auto reg = canvas_sys->reg; auto reg = canvas_sys->reg;
uint32_t glyphs = canvas_sys->text_base + text_glyphs; uint32_t glyphs = canvas_sys->text_base + text_glyphs;
uint32_t color = canvas_sys->text_base + text_color; uint32_t color = canvas_sys->text_base + text_color;
@ -440,6 +452,7 @@ draw_passage_glyphs (canvas_system_t *canvas_sys, ecs_pool_t *pool,
void void
Canvas_Draw (canvas_system_t canvas_sys) Canvas_Draw (canvas_system_t canvas_sys)
{ {
qfZoneNamed (zone, true);
static canvas_sysfunc_f draw_func[canvas_comp_count] = { static canvas_sysfunc_f draw_func[canvas_comp_count] = {
[canvas_update] = draw_update, [canvas_update] = draw_update,
[canvas_updateonce] = draw_update, [canvas_updateonce] = draw_update,

View file

@ -288,6 +288,7 @@ SCR_UpdateScreen_legacy (SCR_Func *scr_funcs)
void void
SCR_UpdateScreen (transform_t camera, double realtime, SCR_Func *scr_funcs) SCR_UpdateScreen (transform_t camera, double realtime, SCR_Func *scr_funcs)
{ {
qfZoneNamed (zone, true);
R_RunParticles (r_data->frametime); R_RunParticles (r_data->frametime);
if (scr_skipupdate || !scr_initialized) { if (scr_skipupdate || !scr_initialized) {

View file

@ -345,6 +345,7 @@ vulkan_set_2d (int scaled)
static void static void
vulkan_UpdateScreen (SCR_Func *scr_funcs) vulkan_UpdateScreen (SCR_Func *scr_funcs)
{ {
qfZoneNamed (zone, true);
vulkan_set_2d (1);//FIXME vulkan_set_2d (1);//FIXME
Vulkan_SetScrFuncs (scr_funcs, vulkan_ctx); Vulkan_SetScrFuncs (scr_funcs, vulkan_ctx);
QFV_RunRenderJob (vulkan_ctx); QFV_RunRenderJob (vulkan_ctx);

View file

@ -47,6 +47,7 @@
static void static void
capture_initiate (const exprval_t **params, exprval_t *result, exprctx_t *ectx) capture_initiate (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
@ -158,6 +159,7 @@ is_bgr (VkFormat format)
static void static void
capture_finalize (const exprval_t **params, exprval_t *result, exprctx_t *ectx) capture_finalize (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;

View file

@ -46,6 +46,7 @@ static void
mousepick_initiate (const exprval_t **params, exprval_t *result, mousepick_initiate (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
@ -86,6 +87,7 @@ static void
mousepick_finalize (const exprval_t **params, exprval_t *result, mousepick_finalize (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;

View file

@ -152,6 +152,9 @@ run_subpass (qfv_subpass_t *sp, qfv_taskctx_t *taskctx)
static void static void
run_renderpass (qfv_renderpass_t *rp, vulkan_ctx_t *ctx, void *data) run_renderpass (qfv_renderpass_t *rp, vulkan_ctx_t *ctx, void *data)
{ {
qfZoneNamed (zone, true);
qfZoneName (zone, rp->label.name, rp->label.name_len);
qfZoneColor (zone, rp->label.color32);
qfv_device_t *device = ctx->device; qfv_device_t *device = ctx->device;
qfv_devfuncs_t *dfunc = device->funcs; qfv_devfuncs_t *dfunc = device->funcs;
__auto_type rctx = ctx->render_context; __auto_type rctx = ctx->render_context;
@ -223,6 +226,9 @@ run_compute_pipeline (qfv_pipeline_t *pipeline, VkCommandBuffer cmd,
static void static void
run_compute (qfv_compute_t *comp, vulkan_ctx_t *ctx, qfv_step_t *step) run_compute (qfv_compute_t *comp, vulkan_ctx_t *ctx, qfv_step_t *step)
{ {
qfZoneNamed (zone, true);
qfZoneName (zone, step->label.name, step->label.name_len);
qfZoneColor (zone, step->label.color32);
qfv_device_t *device = ctx->device; qfv_device_t *device = ctx->device;
qfv_devfuncs_t *dfunc = device->funcs; qfv_devfuncs_t *dfunc = device->funcs;
__auto_type rctx = ctx->render_context; __auto_type rctx = ctx->render_context;
@ -251,6 +257,9 @@ run_compute (qfv_compute_t *comp, vulkan_ctx_t *ctx, qfv_step_t *step)
static void static void
run_process (qfv_process_t *proc, vulkan_ctx_t *ctx) run_process (qfv_process_t *proc, vulkan_ctx_t *ctx)
{ {
qfZoneNamed (zone, true);
qfZoneName (zone, proc->label.name, proc->label.name_len);
qfZoneColor (zone, proc->label.color32);
qfv_taskctx_t taskctx = { qfv_taskctx_t taskctx = {
.ctx = ctx, .ctx = ctx,
}; };
@ -261,6 +270,7 @@ void
QFV_RunRenderPass (vulkan_ctx_t *ctx, qfv_renderpass_t *renderpass, QFV_RunRenderPass (vulkan_ctx_t *ctx, qfv_renderpass_t *renderpass,
uint32_t width, uint32_t height, void *data) uint32_t width, uint32_t height, void *data)
{ {
qfZoneNamed (zone, true);
qfv_output_t output = { qfv_output_t output = {
.extent = { .extent = {
.width = width, .width = width,
@ -274,6 +284,7 @@ QFV_RunRenderPass (vulkan_ctx_t *ctx, qfv_renderpass_t *renderpass,
void void
QFV_RunRenderJob (vulkan_ctx_t *ctx) QFV_RunRenderJob (vulkan_ctx_t *ctx)
{ {
qfZoneNamed (zone, true);
auto rctx = ctx->render_context; auto rctx = ctx->render_context;
auto job = rctx->job; auto job = rctx->job;
int64_t start = Sys_LongTime (); int64_t start = Sys_LongTime ();
@ -426,6 +437,7 @@ QFV_CreateFramebuffer (vulkan_ctx_t *ctx, qfv_renderpass_t *rp,
static void static void
wait_on_fence (const exprval_t **params, exprval_t *result, exprctx_t *ectx) wait_on_fence (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -445,6 +457,7 @@ static void
update_framebuffer (const exprval_t **params, exprval_t *result, update_framebuffer (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto job = ctx->render_context->job; auto job = ctx->render_context->job;

View file

@ -227,6 +227,7 @@ acquire_space (qfv_packet_t *packet, size_t size)
qfv_packet_t * qfv_packet_t *
QFV_PacketAcquire (qfv_stagebuf_t *stage) QFV_PacketAcquire (qfv_stagebuf_t *stage)
{ {
qfZoneNamed (zone, true);
qfv_device_t *device = stage->device; qfv_device_t *device = stage->device;
qfv_devfuncs_t *dfunc = device->funcs; qfv_devfuncs_t *dfunc = device->funcs;
@ -234,8 +235,10 @@ QFV_PacketAcquire (qfv_stagebuf_t *stage)
if (!RB_SPACE_AVAILABLE (stage->packets)) { if (!RB_SPACE_AVAILABLE (stage->packets)) {
// need to wait for a packet to become available // need to wait for a packet to become available
packet = RB_PEEK_DATA (stage->packets, 0); packet = RB_PEEK_DATA (stage->packets, 0);
qfMessageL ("waiting on fence");
dfunc->vkWaitForFences (device->dev, 1, &packet->fence, VK_TRUE, dfunc->vkWaitForFences (device->dev, 1, &packet->fence, VK_TRUE,
~0ull); ~0ull);
qfMessageL ("got fence");
release_space (stage, packet->offset, packet->length); release_space (stage, packet->offset, packet->length);
RB_RELEASE (stage->packets, 1); RB_RELEASE (stage->packets, 1);
} }

View file

@ -258,6 +258,7 @@ alias_draw_ent (qfv_taskctx_t *taskctx, entity_t ent, bool pass,
static void static void
alias_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) alias_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto pass = *(int *) params[0]->value; auto pass = *(int *) params[0]->value;
auto stage = *(int *) params[1]->value; auto stage = *(int *) params[1]->value;

View file

@ -1177,6 +1177,7 @@ create_notexture (vulkan_ctx_t *ctx)
static void static void
bsp_reset_queues (const exprval_t **params, exprval_t *result, exprctx_t *ectx) bsp_reset_queues (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto bctx = ctx->bsp_context; auto bctx = ctx->bsp_context;
@ -1191,6 +1192,7 @@ bsp_reset_queues (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
static void static void
bsp_draw_queue (const exprval_t **params, exprval_t *result, exprctx_t *ectx) bsp_draw_queue (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -1259,6 +1261,7 @@ bsp_draw_queue (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
static void static void
bsp_visit_world (const exprval_t **params, exprval_t *result, exprctx_t *ectx) bsp_visit_world (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto bctx = ctx->bsp_context; auto bctx = ctx->bsp_context;

View file

@ -71,6 +71,7 @@ static VkWriteDescriptorSet base_image_write = {
static void static void
compose_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) compose_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;

View file

@ -524,6 +524,7 @@ static uint32_t
create_quad (int x, int y, int w, int h, qpic_t *pic, uint32_t *vertex_index, create_quad (int x, int y, int w, int h, qpic_t *pic, uint32_t *vertex_index,
VkBuffer buffer, vulkan_ctx_t *ctx) VkBuffer buffer, vulkan_ctx_t *ctx)
{ {
qfZoneNamed (zone, true);
__auto_type pd = (picdata_t *) pic->data; __auto_type pd = (picdata_t *) pic->data;
float sl = 0, sr = 1, st = 0, sb = 1; float sl = 0, sr = 1, st = 0, sb = 1;
@ -566,6 +567,7 @@ make_static_quad (int w, int h, qpic_t *pic, vulkan_ctx_t *ctx)
static int static int
make_dyn_quad (int x, int y, int w, int h, qpic_t *pic, vulkan_ctx_t *ctx) make_dyn_quad (int x, int y, int w, int h, qpic_t *pic, vulkan_ctx_t *ctx)
{ {
qfZoneNamed (zone, true);
drawctx_t *dctx = ctx->draw_context; drawctx_t *dctx = ctx->draw_context;
drawframe_t *frame = &dctx->frames.a[ctx->curFrame]; drawframe_t *frame = &dctx->frames.a[ctx->curFrame];
@ -916,6 +918,7 @@ draw_lines (qfv_taskctx_t *taskctx)
static void static void
flush_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) flush_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
flush_draw_scrap (ctx); flush_draw_scrap (ctx);
@ -924,6 +927,7 @@ flush_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
static void static void
slice_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) slice_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -959,6 +963,7 @@ slice_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
static void static void
line_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) line_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -990,6 +995,7 @@ line_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
static void static void
draw_scr_funcs (const exprval_t **params, exprval_t *result, exprctx_t *ectx) draw_scr_funcs (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto dctx = ctx->draw_context; auto dctx = ctx->draw_context;
@ -1425,6 +1431,7 @@ Vulkan_Draw_SubPic (int x, int y, qpic_t *pic,
int srcx, int srcy, int width, int height, int srcx, int srcy, int width, int height,
vulkan_ctx_t *ctx) vulkan_ctx_t *ctx)
{ {
qfZoneNamed (zone, true);
drawctx_t *dctx = ctx->draw_context; drawctx_t *dctx = ctx->draw_context;
drawframe_t *frame = &dctx->frames.a[ctx->curFrame]; drawframe_t *frame = &dctx->frames.a[ctx->curFrame];

View file

@ -270,6 +270,7 @@ iqm_draw_ent (qfv_taskctx_t *taskctx, entity_t ent, bool pass)
static void static void
iqm_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) iqm_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
int pass = *(int *) params[0]->value; int pass = *(int *) params[0]->value;

View file

@ -160,6 +160,7 @@ static void
lighting_setup_shadow (const exprval_t **params, exprval_t *result, lighting_setup_shadow (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto lctx = ctx->lighting_context; auto lctx = ctx->lighting_context;
@ -287,6 +288,7 @@ static void
lighting_draw_shadow_maps (const exprval_t **params, exprval_t *result, lighting_draw_shadow_maps (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto lctx = ctx->lighting_context; auto lctx = ctx->lighting_context;
@ -457,6 +459,7 @@ static void
lighting_update_lights (const exprval_t **params, exprval_t *result, lighting_update_lights (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto lctx = ctx->lighting_context; auto lctx = ctx->lighting_context;
@ -619,6 +622,7 @@ static void
lighting_update_descriptors (const exprval_t **params, exprval_t *result, lighting_update_descriptors (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -676,6 +680,7 @@ static void
lighting_bind_descriptors (const exprval_t **params, exprval_t *result, lighting_bind_descriptors (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -728,6 +733,7 @@ static void
lighting_draw_splats (const exprval_t **params, exprval_t *result, lighting_draw_splats (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -751,6 +757,7 @@ static void
lighting_draw_lights (const exprval_t **params, exprval_t *result, lighting_draw_lights (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;

View file

@ -129,6 +129,7 @@ Vulkan_SetSkyMatrix (vulkan_ctx_t *ctx, mat4f_t sky)
static void static void
update_matrices (const exprval_t **params, exprval_t *result, exprctx_t *ectx) update_matrices (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;

View file

@ -65,6 +65,7 @@
static void static void
acquire_output (const exprval_t **params, exprval_t *result, exprctx_t *ectx) acquire_output (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -135,6 +136,7 @@ acquire_output (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
static void static void
update_input (const exprval_t **params, exprval_t *result, exprctx_t *ectx) update_input (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -165,6 +167,7 @@ static void
output_select_pipeline (const exprval_t **params, exprval_t *result, output_select_pipeline (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto output = QFV_GetStep (params[0], ctx->render_context->job); auto output = QFV_GetStep (params[0], ctx->render_context->job);
@ -192,6 +195,7 @@ static void
output_select_renderpass (const exprval_t **params, exprval_t *result, output_select_renderpass (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto main = QFV_GetStep (params[0], ctx->render_context->job); auto main = QFV_GetStep (params[0], ctx->render_context->job);
@ -234,6 +238,7 @@ output_draw (qfv_taskctx_t *taskctx,
static void static void
output_draw_flat (const exprval_t **params, exprval_t *result, exprctx_t *ectx) output_draw_flat (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
output_draw (taskctx, 0, 0); output_draw (taskctx, 0, 0);
} }
@ -241,6 +246,7 @@ output_draw_flat (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
static void static void
output_draw_waterwarp (const exprval_t **params, exprval_t *result, exprctx_t *ectx) output_draw_waterwarp (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
float time = vr_data.realtime; float time = vr_data.realtime;
qfv_push_constants_t push_constants[] = { qfv_push_constants_t push_constants[] = {
@ -252,6 +258,7 @@ output_draw_waterwarp (const exprval_t **params, exprval_t *result, exprctx_t *e
static void static void
output_draw_fisheye (const exprval_t **params, exprval_t *result, exprctx_t *ectx) output_draw_fisheye (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
float width = r_refdef.vrect.width; float width = r_refdef.vrect.width;
float height = r_refdef.vrect.height; float height = r_refdef.vrect.height;

View file

@ -163,6 +163,7 @@ create_buffers (vulkan_ctx_t *ctx)
static void static void
particles_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) particles_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -198,6 +199,7 @@ particles_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
static void static void
update_particles (const exprval_t **p, exprval_t *result, exprctx_t *ectx) update_particles (const exprval_t **p, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -332,6 +334,7 @@ wait_on_event (VkBuffer states, VkBuffer params, VkBuffer system,
static void static void
particle_physics (const exprval_t **params, exprval_t *result, exprctx_t *ectx) particle_physics (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;
@ -373,6 +376,7 @@ static void
particle_wait_physics (const exprval_t **params, exprval_t *result, particle_wait_physics (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;

View file

@ -90,6 +90,7 @@ make_plane (vec4f_t s, vec4f_t t, vec4f_t scolor, vec4f_t tcolor)
static void static void
debug_planes_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) debug_planes_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;

View file

@ -145,6 +145,7 @@ static void
scene_draw_viewmodel (const exprval_t **params, exprval_t *result, scene_draw_viewmodel (const exprval_t **params, exprval_t *result,
exprctx_t *ectx) exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
entity_t ent = vr_data.view_model; entity_t ent = vr_data.view_model;
if (!Entity_Valid (ent)) { if (!Entity_Valid (ent)) {
return; return;

View file

@ -182,6 +182,7 @@ sprite_draw_ent (qfv_taskctx_t *taskctx, entity_t ent)
static void static void
sprite_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx) sprite_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;

View file

@ -131,6 +131,7 @@ trans_create_buffers (vulkan_ctx_t *ctx)
static void static void
clear_translucent (const exprval_t **params, exprval_t *result, exprctx_t *ectx) clear_translucent (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
{ {
qfZoneNamed (zone, true);
auto taskctx = (qfv_taskctx_t *) ectx; auto taskctx = (qfv_taskctx_t *) ectx;
auto ctx = taskctx->ctx; auto ctx = taskctx->ctx;
auto device = ctx->device; auto device = ctx->device;

View file

@ -91,7 +91,7 @@ nq_x11_libs= \
libs/models/libQFmodels.la \ libs/models/libQFmodels.la \
libs/video/targets/libQFx11.la \ libs/video/targets/libQFx11.la \
$(nq_client_LIBS) $(nq_client_LIBS)
nq_x11_SOURCES= nq/source/sys_unix.c nq_x11_SOURCES= nq/source/sys_unix.c $(tracy_src)
nq_x11_LDADD= $(nq_x11_libs) \ nq_x11_LDADD= $(nq_x11_libs) \
$(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_LIBS) \ $(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_LIBS) \
-lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(NET_LIBS) $(DL_LIBS) -lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(NET_LIBS) $(DL_LIBS)
@ -106,7 +106,7 @@ nq_win_libs= \
libs/models/libQFmodels.la \ libs/models/libQFmodels.la \
libs/video/targets/libQFwin.la \ libs/video/targets/libQFwin.la \
$(nq_client_LIBS) $(nq_client_LIBS)
nq_win_SOURCES= nq/source/sys_win.c nq_win_SOURCES= nq/source/sys_win.c $(tracy_src)
nq_win_LDADD= $(nq_win_libs) -lgdi32 -lcomctl32 -lwinmm $(NET_LIBS) nq_win_LDADD= $(nq_win_libs) -lgdi32 -lcomctl32 -lwinmm $(NET_LIBS)
nq_win_LDFLAGS= $(common_ldflags) nq_win_LDFLAGS= $(common_ldflags)
nq_win_DEPENDENCIES= $(nq_win_libs) nq_win_DEPENDENCIES= $(nq_win_libs)
@ -120,6 +120,6 @@ endif
EXTRA_DIST += nq/source/sys_wind.c nq/source/sys_unixd.c nq/source/sv_ded.c EXTRA_DIST += nq/source/sys_wind.c nq/source/sys_unixd.c nq/source/sv_ded.c
nq_server_LDFLAGS= $(common_ldflags) nq_server_LDFLAGS= $(common_ldflags)
nq_server_SOURCES= $(ded_sources) nq_server_SOURCES= $(ded_sources) $(tracy_src)
nq_server_LDADD= $(server_libs) $(nq_server_LIBS) nq_server_LDADD= $(server_libs) $(nq_server_LIBS) $(UNWIND_LIBS)
nq_server_DEPENDENCIES= $(server_libs) $(nq_server_LIB_DEPS) nq_server_DEPENDENCIES= $(server_libs) $(nq_server_LIB_DEPS)

View file

@ -164,6 +164,7 @@ set_entity_model (int ent_ind, int modelindex)
void void
CL_RelinkEntities (void) CL_RelinkEntities (void)
{ {
qfZoneNamedN (re_zzone, "CL_RelinkEntities", true);
entity_t ent; entity_t ent;
entity_state_t *new, *old; entity_state_t *new, *old;
float bobjrotate, frac, f; float bobjrotate, frac, f;

View file

@ -506,6 +506,7 @@ CL_PrintEntities_f (void)
int int
CL_ReadFromServer (void) CL_ReadFromServer (void)
{ {
qfZoneNamedN (rfzzone, "CL_ReadFromServer", true);
int ret; int ret;
TEntContext_t tentCtx = { TEntContext_t tentCtx = {
cl.viewstate.player_origin, cl.viewstate.player_origin,
@ -635,6 +636,7 @@ write_capture (tex_t *tex, void *data)
void void
CL_PreFrame (void) CL_PreFrame (void)
{ {
qfZoneNamedN (pfzone, "CL_PreFrame", true);
IN_ProcessEvents (); IN_ProcessEvents ();
GIB_Thread_Execute (); GIB_Thread_Execute ();
@ -647,6 +649,7 @@ CL_PreFrame (void)
void void
CL_Frame (void) CL_Frame (void)
{ {
qfZoneNamedN (fzone, "CL_Frame", true);
static double time1 = 0, time2 = 0, time3 = 0; static double time1 = 0, time2 = 0, time3 = 0;
int pass1, pass2, pass3; int pass1, pass2, pass3;

View file

@ -718,6 +718,7 @@ CL_SetStat (int stat, int value)
void void
CL_ParseServerMessage (void) CL_ParseServerMessage (void)
{ {
qfZoneNamedN (psm_zone, "CL_ParseServerMessage", true);
int cmd = 0, i, j; int cmd = 0, i, j;
const char *str; const char *str;
static dstring_t *stuffbuf; static dstring_t *stuffbuf;

View file

@ -678,6 +678,7 @@ Host_FilterTime (float time)
static void static void
_Host_Frame (float time) _Host_Frame (float time)
{ {
qfZoneNamedN (hfzone, "_Host_Frame", true);
static int first = 1; static int first = 1;
float sleeptime; float sleeptime;

View file

@ -88,6 +88,7 @@ main (int argc, const char **argv)
oldtime = Sys_DoubleTime () - 0.1; oldtime = Sys_DoubleTime () - 0.1;
while (1) { // Main message loop while (1) { // Main message loop
qfFrameMark;
// find time spent rendering last frame // find time spent rendering last frame
newtime = Sys_DoubleTime (); newtime = Sys_DoubleTime ();
time = newtime - oldtime; time = newtime - oldtime;

View file

@ -117,7 +117,7 @@ qw_client_x11_libs= \
libs/models/libQFmodels.la \ libs/models/libQFmodels.la \
libs/video/targets/libQFx11.la \ libs/video/targets/libQFx11.la \
$(qw_client_LIBS) $(qw_client_LIBS)
qw_client_x11_SOURCES= qw/source/cl_sys_unix.c qw_client_x11_SOURCES= qw/source/cl_sys_unix.c $(tracy_src)
qw_client_x11_LDADD= $(qw_client_x11_libs) \ qw_client_x11_LDADD= $(qw_client_x11_libs) \
$(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_LIBS) \ $(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_LIBS) \
-lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(NET_LIBS) $(LIBCURL_LIBS) \ -lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(NET_LIBS) $(LIBCURL_LIBS) \
@ -133,7 +133,7 @@ qw_client_win_libs= \
libs/models/libQFmodels.la \ libs/models/libQFmodels.la \
libs/video/targets/libQFwin.la \ libs/video/targets/libQFwin.la \
$(qw_client_LIBS) $(qw_client_LIBS)
qw_client_win_SOURCES= qw/source/cl_sys_win.c qw_client_win_SOURCES= qw/source/cl_sys_win.c $(tracy_src)
qw_client_win_LDADD= $(qw_client_win_libs) -lgdi32 -lwinmm $(NET_LIBS) $(LIBCURL_LIBS) qw_client_win_LDADD= $(qw_client_win_libs) -lgdi32 -lwinmm $(NET_LIBS) $(LIBCURL_LIBS)
qw_client_win_LDFLAGS= $(common_ldflags) qw_client_win_LDFLAGS= $(common_ldflags)
qw_client_win_DEPENDENCIES= $(qw_client_win_libs) qw_client_win_DEPENDENCIES= $(qw_client_win_libs)

View file

@ -120,7 +120,7 @@ qwaq_x11_libs= \
ruamoko_qwaq_qwaq_x11_SOURCES= \ ruamoko_qwaq_qwaq_x11_SOURCES= \
ruamoko/qwaq/builtins/main.c \ ruamoko/qwaq/builtins/main.c \
ruamoko/qwaq/builtins/qwaq-graphics.c \ ruamoko/qwaq/builtins/qwaq-graphics.c \
ruamoko/qwaq/builtins/graphics.c ruamoko/qwaq/builtins/graphics.c $(tracy_src)
ruamoko_qwaq_qwaq_x11_LDADD= $(qwaq_x11_libs) $(QWAQ_LIBS) \ ruamoko_qwaq_qwaq_x11_LDADD= $(qwaq_x11_libs) $(QWAQ_LIBS) \
$(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_LIBS) \ $(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_LIBS) \
-lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(PTHREAD_LDFLAGS) $(DL_LIBS) -lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(PTHREAD_LDFLAGS) $(DL_LIBS)

View file

@ -114,6 +114,7 @@ bi_newscene (progs_t *pr, void *_res)
static void static void
bi_refresh (progs_t *pr, void *_res) bi_refresh (progs_t *pr, void *_res)
{ {
qfFrameMark;
con_realtime = Sys_DoubleTime () - basetime; con_realtime = Sys_DoubleTime () - basetime;
con_frametime = con_realtime - old_conrealtime; con_frametime = con_realtime - old_conrealtime;
old_conrealtime = con_realtime; old_conrealtime = con_realtime;