mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-04-04 08:25:34 +00:00
[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:
parent
cba1866360
commit
010c658653
41 changed files with 206 additions and 10 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -44,6 +44,7 @@ core
|
|||
/quakeforge-config
|
||||
/quakeforge.lsm
|
||||
/test-driver
|
||||
/tracy
|
||||
/ylwrap
|
||||
|
||||
# /RPM/
|
||||
|
|
11
Makefile.am
11
Makefile.am
|
@ -25,8 +25,9 @@ NOCONV_DIST= \
|
|||
$(distdir)/include/win32/resources/icon1XP.ico
|
||||
|
||||
BUILT_SOURCES = $(top_srcdir)/.version
|
||||
#AM_CFLAGS= @PREFER_NON_PIC@
|
||||
AM_CPPFLAGS= -I$(top_srcdir)/include $(PTHREAD_CFLAGS) $(FNM_FLAGS) $(NCURSES_CFLAGS) $(FREETYPE_CFLAGS) $(HARFBUZZ_CFLAGS) $(VULKAN_CPPFLAGS) $(LIBCURL_CFLAGS)
|
||||
AM_CFLAGS= $(TRACY_CFLAGS) -funwind-tables -include qftracy.h
|
||||
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@
|
||||
|
||||
|
@ -60,6 +61,12 @@ YFLAGS = -v -d -Wno-yacc -Werror
|
|||
PTHREAD_LDFLAGS=@PTHREAD_LDFLAGS@
|
||||
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) \
|
||||
-rpath $(libdir) -no-undefined
|
||||
plugin_ldflags= @plugin_ldflags@ -avoid-version -module -rpath $(plugindir)
|
||||
|
|
|
@ -64,7 +64,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|||
#include <winsock.h>
|
||||
]], [[
|
||||
connect(0, NULL, 42);
|
||||
]])],[NET_LIBS="$NET_LIBS -lwsock32 -lwinmm"
|
||||
]])],[NET_LIBS="$NET_LIBS -lwsock32"
|
||||
ac_cv_func_connect=yes
|
||||
ac_cv_func_gethostbyname=yes
|
||||
HAVE_WSOCK=yes
|
||||
|
@ -72,6 +72,21 @@ connect(0, NULL, 42);
|
|||
])
|
||||
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)
|
||||
if test "x$ac_cv_func_connect" = "xyes" -a "x$ac_cv_func_gethostbyname" = "xyes"; then
|
||||
HAVE_UDP=yes
|
||||
|
|
|
@ -4,6 +4,7 @@ dnl ==================================================================
|
|||
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CPP
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_RANLIB
|
||||
|
|
35
config.d/tracy.m4
Normal file
35
config.d/tracy.m4
Normal 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
|
|
@ -140,6 +140,7 @@ m4_include(config.d/paths.m4)
|
|||
|
||||
m4_include(config.d/build_control.m4)
|
||||
m4_include(config.d/qfcc.m4)
|
||||
m4_include(config.d/tracy.m4)
|
||||
|
||||
AC_ARG_ENABLE(static-doc,
|
||||
AS_HELP_STRING([--enable-static-doc],
|
||||
|
|
50
include/qftracy.h
Normal file
50
include/qftracy.h
Normal 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
|
|
@ -169,6 +169,7 @@ SCR_CShift (view_pos_t abs, view_pos_t len)
|
|||
static void
|
||||
scr_draw_views (void)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
if (scr_showturtle) {
|
||||
static int count;
|
||||
if (r_data->frametime < 0.1) {
|
||||
|
@ -325,6 +326,7 @@ CL_Init_Screen (void)
|
|||
void
|
||||
CL_UpdateScreen (viewstate_t *vs)
|
||||
{
|
||||
qfZoneNamedN (us_zone, "CL_UpdateScreen", true);
|
||||
_vs = vs;
|
||||
|
||||
//FIXME not every time
|
||||
|
|
|
@ -666,6 +666,7 @@ CL_UpdateExplosions (double time, TEntContext_t *ctx)
|
|||
void
|
||||
CL_UpdateTEnts (double time, TEntContext_t *ctx)
|
||||
{
|
||||
qfZoneNamedN (ut_zone, "CL_UpdateTEnts", true);
|
||||
free_stale_entities ();
|
||||
CL_UpdateBeams (time, ctx);
|
||||
CL_UpdateExplosions (time, ctx);
|
||||
|
|
|
@ -632,6 +632,7 @@ V_DropCShift (cshift_t *cs, double time, float droprate)
|
|||
void
|
||||
V_PrepBlend (viewstate_t *vs)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
int i, j;
|
||||
|
||||
if (cl_cshift_powerup
|
||||
|
@ -931,6 +932,7 @@ DropPunchAngle (viewstate_t *vs)
|
|||
void
|
||||
V_RenderView (viewstate_t *vs)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
if (!vs->active) {
|
||||
if (Transform_Valid (vs->camera_transform)) {
|
||||
vec4f_t base = { 0, 0, 0, 1 };
|
||||
|
|
|
@ -1754,6 +1754,7 @@ Sbar_DrawCenterPrint (void)
|
|||
void
|
||||
Sbar_Update (double time)
|
||||
{
|
||||
qfZoneNamedN (sbu_zone, "Sbar_Update", true);
|
||||
fps_count++;
|
||||
sbar_time = time;
|
||||
if (!sbar_active) {
|
||||
|
|
|
@ -791,6 +791,7 @@ setup_console (void)
|
|||
static void
|
||||
C_DrawConsole (void)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
if (con_debug) {
|
||||
Con_Debug_Draw ();
|
||||
}
|
||||
|
|
|
@ -167,6 +167,7 @@ typedef void (*canvas_sysfunc_f) (canvas_system_t *canvas_sys,
|
|||
static void
|
||||
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 };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
ecs_system_t viewsys = { canvas_sys->reg, canvas_sys->view_base };
|
||||
uint32_t count = range.end - 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
|
||||
draw_glyphs (canvas_system_t *canvas_sys, ecs_pool_t *pool, ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto reg = canvas_sys->reg;
|
||||
uint32_t glyphs = canvas_sys->text_base + text_glyphs;
|
||||
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,
|
||||
ecs_range_t range)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto reg = canvas_sys->reg;
|
||||
uint32_t glyphs = canvas_sys->text_base + text_glyphs;
|
||||
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
|
||||
Canvas_Draw (canvas_system_t canvas_sys)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
static canvas_sysfunc_f draw_func[canvas_comp_count] = {
|
||||
[canvas_update] = draw_update,
|
||||
[canvas_updateonce] = draw_update,
|
||||
|
|
|
@ -288,6 +288,7 @@ SCR_UpdateScreen_legacy (SCR_Func *scr_funcs)
|
|||
void
|
||||
SCR_UpdateScreen (transform_t camera, double realtime, SCR_Func *scr_funcs)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
R_RunParticles (r_data->frametime);
|
||||
|
||||
if (scr_skipupdate || !scr_initialized) {
|
||||
|
|
|
@ -345,6 +345,7 @@ vulkan_set_2d (int scaled)
|
|||
static void
|
||||
vulkan_UpdateScreen (SCR_Func *scr_funcs)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
vulkan_set_2d (1);//FIXME
|
||||
Vulkan_SetScrFuncs (scr_funcs, vulkan_ctx);
|
||||
QFV_RunRenderJob (vulkan_ctx);
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
static void
|
||||
capture_initiate (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
|
||||
|
@ -158,6 +159,7 @@ is_bgr (VkFormat format)
|
|||
static void
|
||||
capture_finalize (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ static void
|
|||
mousepick_initiate (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
|
||||
|
@ -86,6 +87,7 @@ static void
|
|||
mousepick_finalize (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
|
||||
|
|
|
@ -152,6 +152,9 @@ run_subpass (qfv_subpass_t *sp, qfv_taskctx_t *taskctx)
|
|||
static void
|
||||
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_devfuncs_t *dfunc = device->funcs;
|
||||
__auto_type rctx = ctx->render_context;
|
||||
|
@ -223,6 +226,9 @@ run_compute_pipeline (qfv_pipeline_t *pipeline, VkCommandBuffer cmd,
|
|||
static void
|
||||
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_devfuncs_t *dfunc = device->funcs;
|
||||
__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
|
||||
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 = {
|
||||
.ctx = ctx,
|
||||
};
|
||||
|
@ -261,6 +270,7 @@ void
|
|||
QFV_RunRenderPass (vulkan_ctx_t *ctx, qfv_renderpass_t *renderpass,
|
||||
uint32_t width, uint32_t height, void *data)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
qfv_output_t output = {
|
||||
.extent = {
|
||||
.width = width,
|
||||
|
@ -274,6 +284,7 @@ QFV_RunRenderPass (vulkan_ctx_t *ctx, qfv_renderpass_t *renderpass,
|
|||
void
|
||||
QFV_RunRenderJob (vulkan_ctx_t *ctx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto rctx = ctx->render_context;
|
||||
auto job = rctx->job;
|
||||
int64_t start = Sys_LongTime ();
|
||||
|
@ -426,6 +437,7 @@ QFV_CreateFramebuffer (vulkan_ctx_t *ctx, qfv_renderpass_t *rp,
|
|||
static void
|
||||
wait_on_fence (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -445,6 +457,7 @@ static void
|
|||
update_framebuffer (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto job = ctx->render_context->job;
|
||||
|
|
|
@ -227,6 +227,7 @@ acquire_space (qfv_packet_t *packet, size_t size)
|
|||
qfv_packet_t *
|
||||
QFV_PacketAcquire (qfv_stagebuf_t *stage)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
qfv_device_t *device = stage->device;
|
||||
qfv_devfuncs_t *dfunc = device->funcs;
|
||||
|
||||
|
@ -234,8 +235,10 @@ QFV_PacketAcquire (qfv_stagebuf_t *stage)
|
|||
if (!RB_SPACE_AVAILABLE (stage->packets)) {
|
||||
// need to wait for a packet to become available
|
||||
packet = RB_PEEK_DATA (stage->packets, 0);
|
||||
qfMessageL ("waiting on fence");
|
||||
dfunc->vkWaitForFences (device->dev, 1, &packet->fence, VK_TRUE,
|
||||
~0ull);
|
||||
qfMessageL ("got fence");
|
||||
release_space (stage, packet->offset, packet->length);
|
||||
RB_RELEASE (stage->packets, 1);
|
||||
}
|
||||
|
|
|
@ -258,6 +258,7 @@ alias_draw_ent (qfv_taskctx_t *taskctx, entity_t ent, bool pass,
|
|||
static void
|
||||
alias_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto pass = *(int *) params[0]->value;
|
||||
auto stage = *(int *) params[1]->value;
|
||||
|
|
|
@ -1177,6 +1177,7 @@ create_notexture (vulkan_ctx_t *ctx)
|
|||
static void
|
||||
bsp_reset_queues (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto bctx = ctx->bsp_context;
|
||||
|
@ -1191,6 +1192,7 @@ bsp_reset_queues (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
|||
static void
|
||||
bsp_draw_queue (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -1259,6 +1261,7 @@ bsp_draw_queue (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
|||
static void
|
||||
bsp_visit_world (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto bctx = ctx->bsp_context;
|
||||
|
|
|
@ -71,6 +71,7 @@ static VkWriteDescriptorSet base_image_write = {
|
|||
static void
|
||||
compose_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
|
|
@ -524,6 +524,7 @@ static uint32_t
|
|||
create_quad (int x, int y, int w, int h, qpic_t *pic, uint32_t *vertex_index,
|
||||
VkBuffer buffer, vulkan_ctx_t *ctx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
__auto_type pd = (picdata_t *) pic->data;
|
||||
|
||||
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
|
||||
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;
|
||||
drawframe_t *frame = &dctx->frames.a[ctx->curFrame];
|
||||
|
||||
|
@ -916,6 +918,7 @@ draw_lines (qfv_taskctx_t *taskctx)
|
|||
static void
|
||||
flush_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
flush_draw_scrap (ctx);
|
||||
|
@ -924,6 +927,7 @@ flush_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
|||
static void
|
||||
slice_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -959,6 +963,7 @@ slice_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
|||
static void
|
||||
line_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -990,6 +995,7 @@ line_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
|||
static void
|
||||
draw_scr_funcs (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
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,
|
||||
vulkan_ctx_t *ctx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
drawctx_t *dctx = ctx->draw_context;
|
||||
drawframe_t *frame = &dctx->frames.a[ctx->curFrame];
|
||||
|
||||
|
|
|
@ -270,6 +270,7 @@ iqm_draw_ent (qfv_taskctx_t *taskctx, entity_t ent, bool pass)
|
|||
static void
|
||||
iqm_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
int pass = *(int *) params[0]->value;
|
||||
|
||||
|
|
|
@ -160,6 +160,7 @@ static void
|
|||
lighting_setup_shadow (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto lctx = ctx->lighting_context;
|
||||
|
@ -287,6 +288,7 @@ static void
|
|||
lighting_draw_shadow_maps (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto lctx = ctx->lighting_context;
|
||||
|
@ -457,6 +459,7 @@ static void
|
|||
lighting_update_lights (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto lctx = ctx->lighting_context;
|
||||
|
@ -619,6 +622,7 @@ static void
|
|||
lighting_update_descriptors (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -676,6 +680,7 @@ static void
|
|||
lighting_bind_descriptors (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -728,6 +733,7 @@ static void
|
|||
lighting_draw_splats (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -751,6 +757,7 @@ static void
|
|||
lighting_draw_lights (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
|
|
@ -129,6 +129,7 @@ Vulkan_SetSkyMatrix (vulkan_ctx_t *ctx, mat4f_t sky)
|
|||
static void
|
||||
update_matrices (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
static void
|
||||
acquire_output (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -135,6 +136,7 @@ acquire_output (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
|||
static void
|
||||
update_input (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -165,6 +167,7 @@ static void
|
|||
output_select_pipeline (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
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,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto main = QFV_GetStep (params[0], ctx->render_context->job);
|
||||
|
@ -234,6 +238,7 @@ output_draw (qfv_taskctx_t *taskctx,
|
|||
static void
|
||||
output_draw_flat (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
output_draw (taskctx, 0, 0);
|
||||
}
|
||||
|
@ -241,6 +246,7 @@ output_draw_flat (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
|||
static void
|
||||
output_draw_waterwarp (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
float time = vr_data.realtime;
|
||||
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
|
||||
output_draw_fisheye (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
float width = r_refdef.vrect.width;
|
||||
float height = r_refdef.vrect.height;
|
||||
|
|
|
@ -163,6 +163,7 @@ create_buffers (vulkan_ctx_t *ctx)
|
|||
static void
|
||||
particles_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -198,6 +199,7 @@ particles_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
|||
static void
|
||||
update_particles (const exprval_t **p, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -332,6 +334,7 @@ wait_on_event (VkBuffer states, VkBuffer params, VkBuffer system,
|
|||
static void
|
||||
particle_physics (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
@ -373,6 +376,7 @@ static void
|
|||
particle_wait_physics (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
|
|
@ -90,6 +90,7 @@ make_plane (vec4f_t s, vec4f_t t, vec4f_t scolor, vec4f_t tcolor)
|
|||
static void
|
||||
debug_planes_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
|
|
@ -145,6 +145,7 @@ static void
|
|||
scene_draw_viewmodel (const exprval_t **params, exprval_t *result,
|
||||
exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
entity_t ent = vr_data.view_model;
|
||||
if (!Entity_Valid (ent)) {
|
||||
return;
|
||||
|
|
|
@ -182,6 +182,7 @@ sprite_draw_ent (qfv_taskctx_t *taskctx, entity_t ent)
|
|||
static void
|
||||
sprite_draw (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
|
|
@ -131,6 +131,7 @@ trans_create_buffers (vulkan_ctx_t *ctx)
|
|||
static void
|
||||
clear_translucent (const exprval_t **params, exprval_t *result, exprctx_t *ectx)
|
||||
{
|
||||
qfZoneNamed (zone, true);
|
||||
auto taskctx = (qfv_taskctx_t *) ectx;
|
||||
auto ctx = taskctx->ctx;
|
||||
auto device = ctx->device;
|
||||
|
|
|
@ -91,7 +91,7 @@ nq_x11_libs= \
|
|||
libs/models/libQFmodels.la \
|
||||
libs/video/targets/libQFx11.la \
|
||||
$(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) \
|
||||
$(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_LIBS) \
|
||||
-lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(NET_LIBS) $(DL_LIBS)
|
||||
|
@ -106,7 +106,7 @@ nq_win_libs= \
|
|||
libs/models/libQFmodels.la \
|
||||
libs/video/targets/libQFwin.la \
|
||||
$(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_LDFLAGS= $(common_ldflags)
|
||||
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
|
||||
|
||||
nq_server_LDFLAGS= $(common_ldflags)
|
||||
nq_server_SOURCES= $(ded_sources)
|
||||
nq_server_LDADD= $(server_libs) $(nq_server_LIBS)
|
||||
nq_server_SOURCES= $(ded_sources) $(tracy_src)
|
||||
nq_server_LDADD= $(server_libs) $(nq_server_LIBS) $(UNWIND_LIBS)
|
||||
nq_server_DEPENDENCIES= $(server_libs) $(nq_server_LIB_DEPS)
|
||||
|
|
|
@ -164,6 +164,7 @@ set_entity_model (int ent_ind, int modelindex)
|
|||
void
|
||||
CL_RelinkEntities (void)
|
||||
{
|
||||
qfZoneNamedN (re_zzone, "CL_RelinkEntities", true);
|
||||
entity_t ent;
|
||||
entity_state_t *new, *old;
|
||||
float bobjrotate, frac, f;
|
||||
|
|
|
@ -506,6 +506,7 @@ CL_PrintEntities_f (void)
|
|||
int
|
||||
CL_ReadFromServer (void)
|
||||
{
|
||||
qfZoneNamedN (rfzzone, "CL_ReadFromServer", true);
|
||||
int ret;
|
||||
TEntContext_t tentCtx = {
|
||||
cl.viewstate.player_origin,
|
||||
|
@ -635,6 +636,7 @@ write_capture (tex_t *tex, void *data)
|
|||
void
|
||||
CL_PreFrame (void)
|
||||
{
|
||||
qfZoneNamedN (pfzone, "CL_PreFrame", true);
|
||||
IN_ProcessEvents ();
|
||||
|
||||
GIB_Thread_Execute ();
|
||||
|
@ -647,6 +649,7 @@ CL_PreFrame (void)
|
|||
void
|
||||
CL_Frame (void)
|
||||
{
|
||||
qfZoneNamedN (fzone, "CL_Frame", true);
|
||||
static double time1 = 0, time2 = 0, time3 = 0;
|
||||
int pass1, pass2, pass3;
|
||||
|
||||
|
|
|
@ -718,6 +718,7 @@ CL_SetStat (int stat, int value)
|
|||
void
|
||||
CL_ParseServerMessage (void)
|
||||
{
|
||||
qfZoneNamedN (psm_zone, "CL_ParseServerMessage", true);
|
||||
int cmd = 0, i, j;
|
||||
const char *str;
|
||||
static dstring_t *stuffbuf;
|
||||
|
|
|
@ -678,6 +678,7 @@ Host_FilterTime (float time)
|
|||
static void
|
||||
_Host_Frame (float time)
|
||||
{
|
||||
qfZoneNamedN (hfzone, "_Host_Frame", true);
|
||||
static int first = 1;
|
||||
float sleeptime;
|
||||
|
||||
|
|
|
@ -88,6 +88,7 @@ main (int argc, const char **argv)
|
|||
|
||||
oldtime = Sys_DoubleTime () - 0.1;
|
||||
while (1) { // Main message loop
|
||||
qfFrameMark;
|
||||
// find time spent rendering last frame
|
||||
newtime = Sys_DoubleTime ();
|
||||
time = newtime - oldtime;
|
||||
|
|
|
@ -117,7 +117,7 @@ qw_client_x11_libs= \
|
|||
libs/models/libQFmodels.la \
|
||||
libs/video/targets/libQFx11.la \
|
||||
$(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) \
|
||||
$(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_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/video/targets/libQFwin.la \
|
||||
$(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_LDFLAGS= $(common_ldflags)
|
||||
qw_client_win_DEPENDENCIES= $(qw_client_win_libs)
|
||||
|
|
|
@ -120,7 +120,7 @@ qwaq_x11_libs= \
|
|||
ruamoko_qwaq_qwaq_x11_SOURCES= \
|
||||
ruamoko/qwaq/builtins/main.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) \
|
||||
$(VIDMODE_LIBS) $(DGA_LIBS) ${XFIXES_LIBS} $(XI2_LIBS) $(X_LIBS) \
|
||||
-lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(PTHREAD_LDFLAGS) $(DL_LIBS)
|
||||
|
|
|
@ -114,6 +114,7 @@ bi_newscene (progs_t *pr, void *_res)
|
|||
static void
|
||||
bi_refresh (progs_t *pr, void *_res)
|
||||
{
|
||||
qfFrameMark;
|
||||
con_realtime = Sys_DoubleTime () - basetime;
|
||||
con_frametime = con_realtime - old_conrealtime;
|
||||
old_conrealtime = con_realtime;
|
||||
|
|
Loading…
Reference in a new issue