novum / vkquake Goto Github PK
View Code? Open in Web Editor NEWVulkan Quake port based on QuakeSpasm
License: GNU General Public License v2.0
Vulkan Quake port based on QuakeSpasm
License: GNU General Public License v2.0
~/vkQuake/Quake$ make cc -DNDEBUG -c -Wall -Wno-trigraphs -O2 -std=gnu99 -fweb -frename-registers -I/include -DLINUX -DVK_USE_PLATFORM_XCB_KHR -DUSE_SDL2 -DUSE_CODEC_WAVE -DUSE_CODEC_VORBIS -DUSE_CODEC_MP3 -I/usr/include/SDL2 -D_REENTRANT -o gl_vidsdl.o gl_vidsdl.c In file included from /usr/include/string.h:630:0, from q_stdinc.h:69, from quakedef.h:49, from gl_vidsdl.c:26: gl_vidsdl.c: In function ‘GL_InitDevice’: gl_vidsdl.c:685:15: error: ‘VK_EXT_DEBUG_MARKER_EXTENSION_NAME’ undeclared (first use in this function) if (strcmp(VK_EXT_DEBUG_MARKER_EXTENSION_NAME, device_extensions[i].extensio ^ gl_vidsdl.c:685:15: note: each undeclared identifier is reported only once for each function it appears in gl_vidsdl.c:667:11: warning: variable ‘found_debug_marker_extension’ set but not used [-Wunused-but-set-variable] qboolean found_debug_marker_extension = false; ^ gl_vidsdl.c: At top level: gl_vidsdl.c:245:17: warning: ‘VID_GetVSync’ defined but not used [-Wunused-function] static qboolean VID_GetVSync (void) ^ Makefile:197: recipe for target 'gl_vidsdl.o' failed make: *** [gl_vidsdl.o] Error 1
Please consider uploading precompiled Windows binaries, nobody wants to compile stuff on Windows, especially if it involves installing Visual Studio
The debug extension addition seems to have introduced errors when making Linux binaries. The following error is thrown:
gl_vidsdl.c:674:15: error: ‘VK_EXT_DEBUG_MARKER_EXTENSION_NAME’ undeclared (first use in this function)
if (strcmp(VK_EXT_DEBUG_MARKER_EXTENSION_NAME, device_extensions[i].extensionName) == 0)
^
Steps to reproduce:
sudo apt-get install git make gcc libsdl2-dev libvulkan-dev libvorbis-dev libmad0-dev
git clone https://github.com/Novum/vkQuake/
cd vkQuake/QUake
make
Would you be willing to add Debian Jessie or Ubuntu-based binaries? I have been building this for several revisions, and can tell you it runs quite well. I''ll fix up some of the Lintian messages.
Current binaries and source:
http://packages.libregeek.org/steamos-tools/pool/games/v/vkquake/
I have no problem maintaining these .
I got the latest code (yesterday-ish) and even though both directions of the mouse scroll work in the menu, while assigning the mouse scroll to the next and prev weapon. During gameplay only one direction of the scroll works.
I was debugging vkquake on radv, and I think I spotted a race condition with the staging upload and main command buffers, for the lightmaps.
R_UploadLightmap allocates a staging buffer and uploads to it,
that gets called
R_DrawTextureChains
R_DrawWorld
R_RenderScene
R_RenderView
V_RenderView
SCR_UpdateScreen
SCR_UpdateScreen calls GL_BeginRendering which calls R_SubmitStagingBuffers
before all of that.
So the lightmap gets updated but not submitted.
Let me know if I've missed something, I'm not overly familiar with the codebase.
CDAudio disabled at compile time
Do I have to compile vkQuake manually to enable CD Audio support?
Code changes should be minor, but I don't have a machine to test this. Needs support for VK_KHR_wayland_surface
When starting a new game (Single Player -> New Game) with validation layers enabled, the following error appears on the commandline:
ObjectTracker(ERROR): object: 0x2b type: 17 location: 348 msgCode: 994: Invalid Pipeline Layout Object 0x2b. For more information refer to Vulkan Spec Section '13.2.6. Push Constant Updates' which states 'layout must be a valid VkPipelineLayout handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCmdPushConstants)
The release doesn't contain vkquake binary.
Gun models don't seem to respond very well to FOVs >= 120.
Original Quakespasm does not have this issue.
I get this error when trying to run the binary (either by itself or using a vkquake-launch.sh wrapper):
error while loading shared libraries: libvulkan.so.1: cannot open shared object file: No such file or directory
I googled the error. Most answers say I must have VulkanSDK installed. Is that correct? I thought that a Vulkan-supported videocard w/ updated drivers are enough to run the game.
When r_shadows is set to 1 in vkQuake, it has no effect at all. Bug or something related to Vulkan?
Hey - I figure this is probably on the 'todo' list at some point later, but I wanted to have a go at benchmarking this for fun.
Yes, I know it's incomplete - yes, I know it's buggy, but I actually managed to get it to work on my Linux machine just by changing:
swapchain_create_info.presentMode = VK_PRESENT_MODE_FIFO_KHR;
to:
swapchain_create_info.presentMode = VK_PRESENT_MODE_IMMEDIATE_KHR;
in gl_vidsdl.c
(tl;dr, ~720 fps for timedemo demo1 on 'normal' OpenGL Quakespasm, ~780fps on vkQuake currently :) )
There's some other fun modes apparently that Vulkan exposes, at least from what I'm reading at: https://gist.github.com/graphitemaster/e162a24e57379af840d4
So it'd be neat to be able to test all four modes through the options GUI at some point as an enhancement if possible! My coding is completely horrid, though, or I'd try my hand at a PR :/
Compiled from code cloned today
Command line: ./vkquake
Found SDL version 2.0.4
Detected 6 CPUs.
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.92.0 (c) Ozkan Sezer, Eric Wasylishen & others
vkQuake 0.70.0 (c) Axel Gneiting
Host_Init
Playing shareware version.
Console initialized.
UDP Initialized
Server using protocol 666 (FitzQuake)
Exe: 18:02:57 Aug 29 2016
256.0 megabyte heap
Vulkan Initialization
Vendor: AMD
Device: AMD Radeon (TM) R7 300 Series
Creating command buffers
Creating swap chain
Using IMMEDIATE present mode
ERROR-OUT BEGIN
QUAKE ERROR: Couldn't create swap chain
Needs to be reimplemented
This happens when I try to start a game or run a demo.
Running very recent Mesa git i965 drivers on Skylake on Linux (git-126bd15 according to glxinfo). These drivers are compiled with --enable-debug
.
Vulkan does work in general.
Using the registered version of the files as available on Steam.
Attempting to build a proper debug build results in an error during compilation so I may have to update my headers at some stage.
Relevant backtrace:
(gdb) bt
#0 0x00007ffff6554207 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007ffff655568a in __GI_abort () at abort.c:89
#2 0x00007ffff654d1ed in __assert_fail_base (fmt=0x7ffff6689390 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7fffe02e73c6 "level < surf->levels",
file=file@entry=0x7fffe02e7240 "isl.c", line=line@entry=1516, function=function@entry=0x7fffe02e7b50 <__PRETTY_FUNCTION__.3574> "isl_surf_get_image_offset_el") at assert.c:92
#3 0x00007ffff654d2a2 in __GI___assert_fail (assertion=assertion@entry=0x7fffe02e73c6 "level < surf->levels", file=file@entry=0x7fffe02e7240 "isl.c", line=line@entry=1516,
function=function@entry=0x7fffe02e7b50 <__PRETTY_FUNCTION__.3574> "isl_surf_get_image_offset_el") at assert.c:101
#4 0x00007fffe016533d in isl_surf_get_image_offset_el (surf=surf@entry=0x20cbba0, level=7, logical_array_layer=<optimized out>, logical_z_offset_px=logical_z_offset_px@entry=0,
x_offset_el=x_offset_el@entry=0x7fffffffa468, y_offset_el=y_offset_el@entry=0x7fffffffa46c) at isl.c:1516
#5 0x00007fffdea20724 in meta_copy_buffer_to_image (cmd_buffer=0x1edac00, buffer=0x1df85c0, image=0x20cbb50, regionCount=<optimized out>, pRegions=<optimized out>, forward=true) at anv_meta_copy.c:189
#6 0x000000000041849c in TexMgr_LoadImage32 (glt=glt@entry=0x7fffe112cca0, data=<optimized out>) at gl_texmgr.c:1095
#7 0x0000000000418656 in TexMgr_LoadImage8 (glt=glt@entry=0x7fffe112cca0, data=<optimized out>,
data@entry=0x7fffe1a51d78 "\022\022\022q\022\023\002\022q\002\002$\002q\022qq\021q$\002q\002\023\022\002\002q\002\002\023\022qq\002\022q\023$\022\022\022q$\002$\002\022\022\022q$\022\022\"$\022qq\022\022\022\023\021\002\002qq\002\002%q\002qq\002\023##\002\002\022\022\002$q$\002\022\002\023#\023\023#qs\025\023#\022\002$\022#\023\022#\023#$#\002\002\022##\002$\002\022\002\002\002\022q\021q5\002\002\022\065\023\026\026$\023\023\024\026\003\023\025\025\025\002\024\026\022\025$\024\024\025\025\025\024\002\002\002\003\025$5\022#\024\024\002\024r\025\025\026\025\025'\002\022\004\022\025\026\025\025\025$\023\024\022\021\021\002\024#\025#\022\023"...) at gl_texmgr.c:1196
#8 0x000000000041939b in TexMgr_LoadImage (owner=<optimized out>, name=name@entry=0x7fffffffae80 "maps/start.bsp:dem4_1", width=64, height=128, format=format@entry=SRC_INDEXED,
data=data@entry=0x7fffe1a51d78 "\022\022\022q\022\023\002\022q\002\002$\002q\022qq\021q$\002q\002\023\022\002\002q\002\002\023\022qq\002\022q\023$\022\022\022q$\002$\002\022\022\022q$\022\022\"$\022qq\022\022\022\023\021\002\002qq\002\002%q\002qq\002\023##\002\002\022\022\002$q$\002\022\002\023#\023\023#qs\025\023#\022\002$\022#\023\022#\023#$#\002\002\022##\002$\002\022\002\002\002\022q\021q5\002\002\022\065\023\026\026$\023\023\024\026\003\023\025\025\025\002\024\026\022\025$\024\024\025\025\025\024\002\002\002\003\025$5\022#\024\024\002\024r\025\025\026\025\025'\002\022\004\022\025\026\025\025\025$\023\024\022\021\021\002\024#\025#\022\023"..., source_file=0x1799b00 <mod_known> "maps/start.bsp", source_offset=924352, flags=1) at gl_texmgr.c:1268
#9 0x000000000041e82c in Mod_LoadTextures (l=l@entry=0x7ffff0ac9f54) at gl_model.c:558
#10 0x0000000000421274 in Mod_LoadBrushModel (mod=mod@entry=0x1799b00 <mod_known>, buffer=buffer@entry=0x7ffff0ac9f40) at gl_model.c:2008
#11 0x0000000000422a83 in Mod_LoadModel (mod=0x1799b00 <mod_known>, crash=false) at gl_model.c:336
#12 0x00000000004524cb in SV_SpawnServer (server=server@entry=0x7fffffffe430 "start") at sv_main.c:1364
#13 0x00000000004458ab in Host_Map_f () at host_cmd.c:791
#14 0x000000000043fafc in Cbuf_Execute () at cmd.c:193
#15 0x0000000000444e4d in _Host_Frame (time=0.00100000005) at host.c:699
#16 0x0000000000445101 in Host_Frame (time=<optimized out>) at host.c:780
#17 0x0000000000404ba0 in main (argc=<optimized out>, argv=<optimized out>) at main_sdl.c:156
Can't change resolution and option in the menu but is working if change manually option in config.cfg
I.e change vid_height and vid_width or others options vid_fullscreen
Linux Archlinux 64bits
Ivy bridge mesa3d driver 12.1
Thread 1 "quakespasm" received signal SIGSEGV, Segmentation fault.
0x00007ffff4d4a78a in xcb_wait_for_special_event () from /usr/lib/libxcb.so.1
ldd
linux-vdso.so.1 (0x00007ffcc8571000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f1b7319e000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f1b72f2b000)
libvulkan.so.1 => /usr/lib/libvulkan.so.1 (0x00007f1b72d02000)
libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007f1b72b00000)
libvorbisfile.so.3 => /usr/lib/libvorbisfile.so.3 (0x00007f1b728f7000)
libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007f1b726ca000)
libogg.so.0 => /usr/lib/libogg.so.0 (0x00007f1b724c3000)
libmad.so.0 => /usr/lib/libmad.so.0 (0x00007f1b722a3000)
libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007f1b71f95000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f1b71bf4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1b734a2000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f1b719ca000)
libxcb-dri3.so.0 => /usr/lib/libxcb-dri3.so.0 (0x00007f1b717c7000)
libxcb-present.so.0 => /usr/lib/libxcb-present.so.0 (0x00007f1b715c4000)
libxcb-sync.so.1 => /usr/lib/libxcb-sync.so.1 (0x00007f1b713bd000)
libxshmfence.so.1 => /usr/lib/libxshmfence.so.1 (0x00007f1b711ba000)
libglapi.so.0 => /usr/lib/libglapi.so.0 (0x00007f1b70f8b000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f1b70d79000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007f1b70b76000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007f1b70970000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f1b7062e000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f1b70405000)
libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0x00007f1b701e9000)
libxcb-dri2.so.0 => /usr/lib/libxcb-dri2.so.0 (0x00007f1b6ffe4000)
libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x00007f1b6fdde000)
libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00007f1b6fbcf000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f1b6f9b2000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f1b6f7ae000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f1b6f5a6000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f1b6f3a2000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f1b6f19c000)
The latest Makefile swaps out a shader object, but if you don't pass "make" alone, you will get the below error. The object file is not found within the directory as the others. Seems it was not uploaded to the Shaders dir.
make: *** No rule to make target 'screen_warp_comp.o', needed by 'vkquake'. Stop.
make: *** Waiting for unfinished jobs....
make: Leaving directory '/home/desktop/package-builds/build-vkquake-tmp/vkquake-0.90.0/Quake'
make: Entering directory '/home/desktop/package-builds/build-vkquake-tmp/vkquake-0.90.0/Misc/vq_pak'
./mkpak.sh gfx/conback.lmp maps/e1m1.ent maps/e1m2.ent maps/e1m4.ent maps/e2m2.ent maps/e2m3.ent maps/e2m7.ent default.cfg > vkquake.pak
make: Leaving directory '/home/desktop/package-builds/build-vkquake-tmp/vkquake-0.90.0/Misc/vq_pak'
I'm getting this error with the 0.60+ series with my Nvidia GTX 970 running Ubuntu 16.04. I'm running the 370 drivers from https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa
Here's what I am getting in the terminal when starting a new single player game:
Command line: /usr/games/vkquake -basedir /usr/share/quake
Found SDL version 2.0.4
Detected 8 CPUs.
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.92.0 (c) Ozkan Sezer, Eric Wasylishen & others
vkQuake 0.60.0 (c) Axel Gneiting
Host_Init
Playing registered version.
Console initialized.
UDP Initialized
Server using protocol 666 (FitzQuake)
Exe: 13:09:31 Aug 19 2016
256.0 megabyte heap
Vulkan Initialization
Vendor: NVIDIA
Device: GTX 970
Creating command buffers
Creating swap chain
Creating render passes
Creating color buffer
Creating depth buffer
Creating frame buffers
Initializing staging
Creating descriptor set layouts
Initializing dynamic vertex buffers
Initializing dynamic index buffers
Initializing dynamic uniform buffers
Initializing samplers
Creating pipeline layouts
Creating pipelines
Sound Initialization
SDL audio spec : 44100 Hz, 512 samples, 2 channels
SDL audio driver: pulseaudio - GM204 High Definition Audio Controller Digital Stereo (HDMI 2), 32768 bytes buffer
Audio: 16 bit, stereo, 44100 Hz
CDAudio disabled at compile time
========= Quake Initialized =========
execing quake.rc
execing default.cfg
execing config.cfg
Initializing samplers
execing autoexec.cfg
Unknown command "gl_texturemode"
Unknown command "gl_texture_anisotropy"
Unknown command "r_oldwater"
Unknown command "r_quadparticles"
3 demo(s) in loop
�
FITZQUAKE 0.85 SERVER (24778 CRC)
��������������������������������������
�Introduction
Using protocol 666
Shutting down SDL sound
QUAKE ERROR: vkWaitForFences failed
The game freezes at the end of E1M6 (entering the last portal)
The game shows the level completions status screen and freezes before loading the next map.
Map E1M7 works in a multiplier match.
I used the latest git code and the latest vulkan sdk 1.0.21.1
OS: Fedora 24
CPU: AMD 8 cores
GPU: NVIDIA (latest proprietary drivers)
RAM: 16G
There is no console output during the crash.
This is the console output after the game starts:
./run.sh
Command line: ./vkquake
Found SDL version 2.0.4
Detected 8 CPUs.
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.92.0 (c) Ozkan Sezer, Eric Wasylishen & others
vkQuake 0.30.0 (c) Axel Gneiting
Host_Init
Playing registered version.
Console initialized.
UDP Initialized
Server using protocol 666 (FitzQuake)
Exe: 19:15:46 Jul 31 2016
256.0 megabyte heap
Vulkan Initialization
Vendor: NVIDIA
Device: GTX 960
Creating command buffers
Creating swap chain
Creating render passes
Creating depth buffer
Creating frame buffers
Initializing staging
Creating descriptor set layouts
Initializing dynamic vertex buffers
Initializing dynamic index buffers
Initializing dynamic uniform buffers
Initializing samplers
Creating pipeline layouts
Creating pipelines
Warning: joystick missing controller mappings: MAD CATZ ,Ltd. Mad Catz Game Controller
Sound Initialization
SDL audio spec : 44100 Hz, 512 samples, 2 channels
SDL audio driver: pulseaudio - HDA NVidia Digital Stereo (HDMI), 32768 bytes buffer
Audio: 16 bit, stereo, 44100 Hz
CDAudio disabled at compile time
========= Quake Initialized =========
execing quake.rc
execing default.cfg
execing config.cfg
couldn't exec autoexec.cfg
3 demo(s) in loop
Loading game from /media/data/games/quake/vkQuake/Quake/id1/s0.sav...
FITZQUAKE 0.85 SERVER (51103 CRC)
The Door To Chthon
Using protocol 666
Couldn't find a cdrip for track 4
player exited the level
Couldn't find a cdrip for track 3
FITZQUAKE 0.85 SERVER (51103 CRC)
The House of Chthon
Using protocol 666
Couldn't find a cdrip for track 7
Hi,
I've got amdgpu-pro running on Arch Linux and have the following error:
QUAKE ERROR: vkWaitForFences failed
Here is my vulkaninfo:
vkinfo.txt
Would you be willing to add Travis CI automated build tests? If you have not used this service before, see: https://travis-ci.org/.
Example:
https://github.com/ProfessorKaos64/vkQuake
This will build on each commit. If this isn't ideal, issue will be closed. Windows support on Travis is not yet implemented. I believe this may be doable by running a secondary build pass with mingw compilation.
I am trying to build the code on fedora 24.
I got all the dependencies set up:
But now make fails with the following error:
gl_vidsdl.c: In function ‘GL_InitInstance’:
gl_vidsdl.c:546:32: error: ‘VK_API_VERSION_1_0’ undeclared (first use in this function)
application_info.apiVersion = VK_API_VERSION_1_0;
Any idea?
Thanks
According to the validation layers, there are a bunch of missing image transitions, including the swapchain images.
validation.txt
The archive is broken
https://github.com/Novum/vkQuake/releases/download/0.72/vkquake-0.72.0_linux_64.tar.gz
Says "Unexpected end of data vkquake-0.72.0_linux_64.tar".
tar -xf vkquake-0.72.0_linux_64.tar.gz
gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
I'm currenlty looking into this. But somehow, vs. quakespasm, the basedir isn't quite set correctly or linked to the right expected directory of /usr/share/quake.
Steps
To make it work
cd /usr/share/quake
(where id1 is placed)vkwuake
The "base directory" is the path to the directory holding the quake.exe and all
game directories. The sys_* files pass this to host_init in quakeparms_t->basedir.
This can be overridden with the "-basedir" command line parm to allow code
debugging in a different directory. The base directory is only used during
filesystem initialization. I
There should be a way to pass some defaults or search paths. In comparison FTE Quake functions this way. Also, this is how quakespasm works, so I don't believe it was any code committed here thus far. believe FTE does this in fs.c
My workaround in situations like this, is a simple launcher/wrapper.
I couldn't build it on Arch Linux, here is the fix I had to apply:
$ git diff
diff --git a/Quake/Makefile b/Quake/Makefile
index 1d5b2fb..5f152f0 100644
--- a/Quake/Makefile
+++ b/Quake/Makefile
@@ -181,7 +181,7 @@ ifeq ($(USE_CODEC_UMX),1)
CFLAGS+= -DUSE_CODEC_UMX
endif
-COMMON_LIBS:= -lm -lGL -l:libvulkan.so.1 -lX11-xcb
+COMMON_LIBS:= -lm -l:libvulkan.so.1 -lX11-xcb
LIBS :=
Running the 0.50 Linux binaries on Arch Linux w/ Nvidia 367.35 - the game runs fine from ./vkquake but there is no visible HUD. The main menu and pause menus work fine, and I do get status message for pickups, but there's no health, weapon, ammo, etc.
Unfortunately not seeing any errors in the terminal.
I just git cloned vkquake and compiled it on Ubuntu and I can't run it because it couldn't load "gfx.wad" is it missing or did something go wrong? nothing in the make logs show any errors.
I know you do not mainly deal with Arch Linux, so this likely is a "help wanted" tag/issue. The window flashes for a moment, then dumps back to the CLI. I was sure how to use the new debug extension either.
I tried to trace it, but the CLI just hangs:
vktrace -p vkquake -o vkquake.vktrace -w ${PWD}
Steps to reproduce on Arch Linux
git clone https://github.com/Novum/vkQuake
cd vkQuake/Quake
make
cp ../id1 ${PWD}
./vkquake
Hi,
This may seem like a dumb question but I just can't figure this out. Once you start vkQuake.exe it detaches and there's no stdout whatsoever.
There's -condebug but it only redirects Con_Printf output.
I can't use Con_Printf either because there's no console at the time this runs - I guess.
Also, I can't use Linux because this is the Windows part :)
Any ideas, guys?
compiled from code cloned today:
I use Ubuntu 16.04 latests padoka ppa
vkQuake 0.30.0 (c) Axel Gneiting
Host_Init
Playing shareware version.
Console initialized.
UDP Initialized
Server using protocol 666 (FitzQuake)
Exe: 19:46:13 Aug 1 2016
256.0 megabyte heap
Vulkan Initialization
Vendor: Intel
Device: Intel(R) HD Graphics 530 (Skylake GT2)
Creating command buffers
Creating swap chain
ERROR-OUT BEGIN
QUAKE ERROR: Couldn't get swap chain images
Just what it says in the title. The setting always resets to "Classic" when restarting the game.
Also, if I try to "Test changes" after changing it, nothing will happen (as if no setting was changed).
what are it's dependencies?
Nvidia is supposedly releasing drivers that will allow Vulkan without the use of X.org. I would love to try out vkQuake on Wayland when it's released. I normally use QuakeSpasm svn on Arch Linux. I just do svn pulls very often. I was wondering if you could make it possible at compile time to pull from the QuakeSpasm svn everytime you do a git pull of vkQuake. Is this possible? I always use the latest development version of source ports when I can.
Checking with RenderDoc shows G channel to be completely white. Haven't investigated further yet.
Getting to Creating Pipelines stage and then segfaults (running Arch Linux with latest updates at this time, DRI3 enabled).
Starting program: /home/jonny/qw/vkquake -window [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". Command line: /home/jonny/qw/vkquake -window Found SDL version 2.0.4 Detected 4 CPUs. Quake 1.09 (c) id Software GLQuake 1.00 (c) id Software FitzQuake 0.85 (c) John Fitzgibbons FitzQuake SDL port (c) SleepwalkR, Baker QuakeSpasm 0.92.0 (c) Ozkan Sezer, Eric Wasylishen & others vkQuake 0.50.0 (c) Axel Gneiting Host_Init Playing registered version. Console initialized. UDP Initialized Server using protocol 666 (FitzQuake) Exe: 23:47:17 Aug 8 2016 256.0 megabyte heap Vulkan Initialization WARNING: Ivy Bridge Vulkan support is incomplete Vendor: Intel Device: Intel(R) Ivybridge Mobile gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO gen7_pipeline.c:213: FINISHME: VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO Creating command buffers Creating swap chain Creating render passes [Validation ERROR]: Cannot clear attachment 0 with invalid first layout VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL. Creating color buffer Creating depth buffer Creating frame buffers Initializing staging Creating descriptor set layouts Initializing dynamic vertex buffers Initializing dynamic index buffers Initializing dynamic uniform buffers Initializing samplers Creating pipeline layouts Creating pipelines Program received signal SIGSEGV, Segmentation fault. 0x00007fffe0004e05 in anv_nir_apply_pipeline_layout () from /usr/lib/libvulkan_intel.so`
And backtrace:
(gdb) bt #0 0x00007fffe0004e05 in anv_nir_apply_pipeline_layout () from /usr/lib/libvulkan_intel.so #1 0x00007fffe0006a34 in ?? () from /usr/lib/libvulkan_intel.so #2 0x00007fffe00073d0 in ?? () from /usr/lib/libvulkan_intel.so #3 0x00007fffe00084e7 in anv_pipeline_init () from /usr/lib/libvulkan_intel.so #4 0x00007fffe016f595 in gen7_graphics_pipeline_create () from /usr/lib/libvulkan_intel.so #5 0x00007fffe00088fe in anv_CreateGraphicsPipelines () from /usr/lib/libvulkan_intel.so #6 0x00007fffdf75fe68 in unique_objects::explicit_CreateGraphicsPipelines(VkDevice_T*, VkPipelineCache_T*, unsigned int, VkGraphicsPipelineCreateInfo const*, VkAllocationCallbacks const*, VkPipeline_T**) () from /usr/lib/libVkLayer_unique_objects.so #7 0x00007fffdf0448fe in core_validation::CreateGraphicsPipelines(VkDevice_T*, VkPipelineCache_T*, unsigned int, VkGraphicsPipelineCreateInfo const*, VkAllocationCallbacks const*, VkPipeline_T**) () from /usr/lib/libVkLayer_core_validation.so #8 0x00007fffde9ca608 in object_tracker::explicit_CreateGraphicsPipelines(VkDevice_T*, VkPipelineCache_T*, unsigned int, VkGraphicsPipelineCreateInfo const*, VkAllocationCallbacks const*, VkPipeline_T**) () from /usr/lib/libVkLayer_object_tracker.so #9 0x00007fffde790a2e in parameter_validation::CreateGraphicsPipelines(VkDevice_T*, VkPipelineCache_T*, unsigned int, VkGraphicsPipelineCreateInfo const*, VkAllocationCallbacks const*, VkPipeline_T**) () from /usr/lib/libVkLayer_parameter_validation.so #10 0x00007fffde53771b in threading::CreateGraphicsPipelines(VkDevice_T*, VkPipelineCache_T*, unsigned int, VkGraphicsPipelineCreateInfo const*, VkAllocationCallbacks const*, VkPipeline_T**) () from /usr/lib/libVkLayer_threading.so #11 0x000000000040c630 in R_CreatePipelines () at gl_rmisc.c:1465 #12 0x000000000041a724 in VID_Init () at gl_vidsdl.c:1708 #13 0x000000000045bcc6 in Host_Init () at host.c:862 #14 0x0000000000478e3b in main (argc=2, argv=0x7fffffffe9d8) at main_sdl.c:114`
Not sure if it's your fault or if its the Intel drivers that currently suck for Ivy Bridge.
Any clue?
Hi,
awesome work! One thing though: If you don't have Visual Studio installed, the Redistributable is required. Otherwise "vcruntime140.dll" is missing.
Maybe you could include the download link in the README?
https://www.microsoft.com/en-us/download/details.aspx?id=48145
~/vkq/vkQuake/Quake$ ./vkquake
Command line: ./vkquake
Found SDL version 2.0.4
Detected 4 CPUs.
Quake 1.09 (c) id Software
GLQuake 1.00 (c) id Software
FitzQuake 0.85 (c) John Fitzgibbons
FitzQuake SDL port (c) SleepwalkR, Baker
QuakeSpasm 0.92.0 (c) Ozkan Sezer, Eric Wasylishen & others
vkQuake 0.60.0 (c) Axel Gneiting
Host_Init
Playing shareware version.
Console initialized.
UDP Initialized
Server using protocol 666 (FitzQuake)
Exe: 18:17:07 Aug 16 2016
256.0 megabyte heap
Vulkan Initialization
Vendor: NVIDIA
Device: GTX 970
Creating command buffers
Creating swap chain
Creating render passes
Creating color buffer
Creating depth buffer
Creating frame buffers
Initializing staging
Creating descriptor set layouts
Initializing dynamic vertex buffers
Initializing dynamic index buffers
Initializing dynamic uniform buffers
Initializing samplers
Creating pipeline layouts
Creating pipelines
detected controller: PS4 Controller
Sound Initialization
SDL audio spec : 44100 Hz, 512 samples, 2 channels
SDL audio driver: pulseaudio - GM204 High Definition Audio Controller Digital Stereo (HDMI 2), 32768 bytes buffer
Audio: 16 bit, stereo, 44100 Hz
CDAudio disabled at compile time
========= Quake Initialized =========
LTRIGGER is unbound, hit F4 to set.
RTRIGGER is unbound, hit F4 to set.
execing quake.rc
execing default.cfg
execing config.cfg
Unknown command "gl_texture_anisotropy"
Initializing samplers
couldn't exec autoexec.cfg
ERROR-OUT BEGIN
Shutting down SDL sound
QUAKE ERROR: vkWaitForFences failed
We currently have two open source vulkan drivers, one better known is in mainline mesa for intel GPUs. The other is radv from Dave Airlie for Radeon Tonga and Fiji (http://airlied.livejournal.com/81460.html). They share some common infrastructure.
The Intel one worked good on vkQuake prior to the commit cb1f468
and Radeon one did too (except for the weapons not being show for some reason, but that's another issue). With the mentioned commit parts of the game render black like this
I know this is a driver issue, but I'm hoping someone could shed light on why it breaks like this so we can maybe get the drivers fixed.
(the latest versions break because there is no support for InputAttachment in the open source vulkan code, but that's another issue too)
Performance is of course great. I have screen tearing on Nvidia hardware / SteamOS. Running a GTX 1080 with driver release 367.27.
I noticed that even though many directories and files were renamed from quakespasm to vkquake. The dotfile (~/.quakespasm) is not renamed.
Hi, just attempted to recompile with the lastest HEAD, failing with undefined references in gl_rmisc.c now (Ubuntu 16.04 64-bit). Digging through the history for that file, though, this doesn't look like it's been touched specifically for a while. I'll see if I can dig out a specific commit.
cc strlcat.o strlcpy.o gl_refrag.o gl_rlight.o gl_rmain.o gl_fog.o gl_rmisc.o r_part.o r_world.o gl_screen.o gl_sky.o gl_warp.o gl_vidsdl.o gl_draw.o image.o gl_texmgr.o gl_mesh.o r_sprite.o r_alias.o r_brush.o gl_model.o in_sdl.o snd_dma.o snd_mix.o snd_mem.o bgmusic.o snd_codec.o snd_flac.o snd_wave.o snd_vorbis.o snd_opus.o snd_mp3.o snd_mikmod.o snd_modplug.o snd_umx.o snd_sdl.o cd_sdl.o net_bsd.o net_udp.o net_dgrm.o net_loop.o net_main.o chase.o cl_demo.o cl_input.o cl_main.o cl_parse.o cl_tent.o console.o keys.o menu.o sbar.o view.o wad.o cmd.o common.o crc.o cvar.o cfgfile.o host.o host_cmd.o mathlib.o pr_cmds.o pr_edict.o pr_exec.o sv_main.o sv_move.o sv_phys.o sv_user.o world.o zone.o pl_linux.o sys_sdl_unix.o main_sdl.o ../Shaders/Compiled/alias_frag.c ../Shaders/Compiled/alias_vert.c ../Shaders/Compiled/basic_alphatest_frag.c ../Shaders/Compiled/basic_frag.c ../Shaders/Compiled/basic_notex_frag.c ../Shaders/Compiled/basic_vert.c ../Shaders/Compiled/sky_layer_frag.c ../Shaders/Compiled/sky_layer_vert.c ../Shaders/Compiled/world_frag.c ../Shaders/Compiled/world_vert.c -L/lib -lm -l:libvulkan.so.1 -lX11-xcb -lvorbisfile -lvorbis -logg -lmad -L/usr/lib/x86_64-linux-gnu -lSDL2 -o vkquake
gl_rmisc.o: In function R_CreatePipelines': gl_rmisc.c:(.text+0x1bcb): undefined reference to
postprocess_vert_spv_size'
gl_rmisc.c:(.text+0x1bd0): undefined reference to postprocess_vert_spv' gl_rmisc.c:(.text+0x1be0): undefined reference to
postprocess_frag_spv_size'
gl_rmisc.c:(.text+0x1be5): undefined reference to `postprocess_frag_spv'
collect2: error: ld returned 1 exit status
Makefile:307: recipe for target 'vkquake' failed
make: *** [vkquake] Error 1
If the git ref tags follow n.nn
, the releases do not follow the same notation. Can we either change the release files going forward, or start tagging n.nn.n
?
Please, allow setting different MSAA values.
8x is too high for a laptop equipped w/ Ivy Bridge integrated videocard (FPS < 15). Either that or the algorithm is not implemented properly :)
Hi,
trying to build vkquake 0.90 on Ubuntu 16.10 there is this compilation error:
cc -DNDEBUG -c -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -fstack-protector-strong -Wformat -Werror=format-security -O2 -std=gnu99 -fweb -frename-registers -I/include -DLINUX -DVK_USE_PLATFORM_XCB_KHR -DUSE_SDL2 -DUSE_CODEC_WAVE -DUSE_CODEC_VORBIS -DUSE_CODEC_MP3 -I/usr/include/SDL2 -D_REENTRANT -o basic_alphatest_frag.o ../Shaders/Compiled/basic_alphatest_frag.c
make[1]: *** No rule to make target 'screen_warp_comp.o', needed by 'vkquake'. Stop.
This is the complete build log:
http://zulu309.server4you.de/build/logs/vkquake_0.90-1~getdeb1-i386-20161205-2246
Can someone please have a look?
Any plans on that?
On a side note: @mdeguzis, are you still maintaining your PPA?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.