What mesa version are you running exactly? The texture error indicates that something goes wrong on the Lavapipe side of things rather than WSI, and DXVK does occationally hit some edge cases that are required by D3D11 but not supported on Lavapipe, but this is just a plain old multisampled RGBA8 texture with Render Target usage, which isn't all that special and works fine on my end with 24.0.1.
This should really just work unless this is running on a rather outdated mesa version.
Does the docker container work for you?
Or did you just run the triangle program with your dxvk setup?
Mesa 22.3.6 is that too old?
I will try to build it from source...
❯ docker run --rm -it --entrypoint /bin/bash dxvk_test
root@778e039a32da:/# Xvfb :0 -screen 0 1024x768x24 -ac +extension GLX +extension RANDR +extension RENDER +render -noreset &
export DISPLAY=:0
[1] 75
root@778e039a32da:/# vulkaninfo --summary
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
==========
VULKANINFO
==========
Vulkan Instance Version: 1.3.239
Instance Extensions: count = 20
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
Instance Layers: count = 3
--------------------------
VK_LAYER_INTEL_nullhw INTEL NULL HW 1.1.73 version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.3.211 version 1
VK_LAYER_MESA_overlay Mesa Overlay layer 1.3.211 version 1
Devices:
========
GPU0:
apiVersion = 1.3.230
driverVersion = 0.0.1
vendorID = 0x10005
deviceID = 0x0000
deviceType = PHYSICAL_DEVICE_TYPE_CPU
deviceName = llvmpipe (LLVM 15.0.6, 256 bits)
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 22.3.6 (LLVM 15.0.6)
conformanceVersion = 1.3.1.1
deviceUUID = 6d657361-3232-2e33-2e36-000000000000
driverUUID = 6c6c766d-7069-7065-5555-494400000000
root@778e039a32da:/# glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Mesa/X.org (0xffffffff)
Device: llvmpipe (LLVM 15.0.6, 256 bits) (0xffffffff)
Version: 22.3.6
Accelerated: no
Video memory: 193278MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.5
Max compat profile version: 4.5
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 15.0.6, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 22.3.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.5 (Compatibility Profile) Mesa 22.3.6
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
Or did you just run the triangle program with your dxvk setup?
Yeah I just ran it on my local desktop.
Mesa 22.3 is indeed quite old in the context of Lavapipe specifically, you'll definitely want to run something more up to date since it was missing quite a few features at the time.
That said, apps that don't use MSAA or esoteric combinations of texture format + usage flags might just work, it's just that d3d11-triangle uses 8xMSAA.
I switched the container to archlinux.
I now have mesa Mesa 24.0.2-arch1.1.
Still the same error.
warn: DXVK: No state cache file found
info: DXVK: Graphics pipeline libraries supported
err: D3D11: Cannot create texture:
err: Format: 29
err: Extent: 1024x600x1
err: Samples: 8
err: Layers: 1
err: Levels: 1
err: Usage: 20
err: Flags: 0
err: DXGI: CreateSwapChainForHwnd: Failed to create swap chain, hr -2147467259
Failed to create DXGI swap chain
llvmpipe (LLVM 16.0.6, 256 bits)
What should I check next?
Do you have an even simpler test program I can use?
Does vkcube even work?
@raldone01 I just looked at the code, current d3d11-triangle.exe doesn't use MSAA actually which is why it works here. Sorry for the confusion, I forgot I changed that at some point.
You can find the current set of test apps here: https://github.com/doitsujin/dxvk-tests
WINEARCH=win64x1 2024-03WINEPREFIXx1 2024-03WINEPREFIX=/root/.wine64x1 2024-03
I tried to setup a headless docker container that can run dxvk programs ideally 64bit and 32bit without any gpu.
I don't think this is an issue with dxvk but I didn't know where else to ask for help.
Software information
I created a minimal reproducible example
627467028ba5be425d127248d46979cc3f1209c7.I could not get
xorgorxvfbto work.dxvkalways fails to create a texture.My guess is that some library is missing but I don't know which.
Dockerfile
entrypoint.sh
xorg.conf
System information
llvmpipe (LLVM 15.0.6, 256 bits)llvmpipe 0.0.1wine-9.0v2.3Log files
Excerpt:
docker run --rm -it dxvk_test xvfb > xvfb.log 2>&1xvfb.log
docker run --rm -it dxvk_test xorg > xorg.log 2>&1xorg.log
Thank you for your time.