protonscr

UE4 five original 4.0 launch tech demos all fail

dxvkclosed feature set
doitsujin/dxvk#79 · opened 2018-02-15 by oscarbg · updated 2018-02-19 · 7 comments · github
Ooscarbg 2018-02-15 github

Hi see:
just seeing commits and pull requests related to fixing UE4 games I tested:
https://www.techpowerup.com/download/unreal-engine-4-five-tech-demos/
they are interesting because they are five UE4 launch tech demos were compiled just shortly following UE4.0 open source release in March 2014..
all create a window and load a few seconds before closing the window

Software information

Effects Cave: Lets you walk through a cave with water and lighting effects.
Realistic Rendering: Renders an indoor scene with almost photorealistic quality.
Reflections: Shows off how to get the most of Unreal Engine 4's Real-time reflection system in a realistic, dark, and grungy environment.
Shooter Game: Serves as a basic template to a Quake 4 style multi player game.
Temple Mobile: Walkthrough in a temple.

System information

  • GPU: Vega
  • Driver: latest
  • Wine version: none native
  • DXVK version: latest as today

Log files

so briefly only "Effects Cave" seems to need tesselation..
the others no and all seem to fail because some other reason:
err: DxbcCompiler: Unhandled PS SV input: DxbcSystemValue::RenderTargetId

Effects_dxgi.log
Effects_d3d11.log
Reflections_d3d11.log
Reflections_dxgi.log
RealisticRendering_d3d11.log
RealisticRendering_dxgi.log
ShooterGame_d3d11.log
ShooterGame_dxgi.log
Mobile_d3d11.log
Mobile_dxgi.log

Ddoitsujin maintainer 2018-02-15 github

With the exception of the Effects demo, they should run with 8ebffc1018173903b4bfaf41561fb9bd2b006f74.

Note that there are some graphical artifacts remaining though.

ZZeroFault 2018-02-16 github

@doitsujin

I found some shaders from another UE4 game called Squad that didn't validate with spirv-val.

CS_056fcc794fcb69bc83f1d4fda577f30274e2299e.spv
error: 1842: MemoryBarrier: Vulkan specification requires Memory Semantics to have one of the following bits set: Acquire, Release, AcquireRelease or SequentiallyConsistent

CS_145564786ca7c2c7d2976020ba54038865859b65.spv
error: 4547: MemoryBarrier: Vulkan specification requires Memory Semantics to have one of the following bits set: Acquire, Release, AcquireRelease or SequentiallyConsistent

CS_7308590e5e5ceb3be763b9a0e72e06a44e67dd3b.spv
error: 2123: MemoryBarrier: Vulkan specification requires Memory Semantics to have one of the following bits set: Acquire, Release, AcquireRelease or SequentiallyConsistent

PS_5a0612814fc8d5d721117409a6c07160d3bb173c.spv
error: 64: Operand 3 of Decorate requires one of these capabilities: Geometry

PS_bcc08154106bc4eb71350660a7ad6f7fa359aea8.spv
error: 48: Operand 3 of Decorate requires one of these capabilities: Geometry

invalidshaders.zip

Ddoitsujin maintainer 2018-02-16 github

error: 1842: MemoryBarrier: Vulkan specification requires Memory Semantics to have one of the following bits set: Acquire, Release, AcquireRelease or SequentiallyConsistent

I don't get that error (which version of spirv-tools are you running?), but I'll take a look.

error: 48: Operand 3 of Decorate requires one of these capabilities: Geometry

This doesn't even make any sense because the Layer builtin can be used as an input variable to fragment shaders, but the Geometry capability can only be used for geometry shaders. Either the capability requirement is a specification bug, or the documentation of the Geometry capability is wrong.

ZZeroFault 2018-02-16 github

I am using the latest release that's SPIRV-tools GitHub page.

You can get the memory barrier error by setting --target-env vulkan1.0 argument to spiv-val.

As for the Geometry capabilities thing, According to the specifications for spirv1.0. The Geometry capability doesn't depend on Geometry execution mode. The Geometry execution mode instead depends on the Geometry capability. The only thing Geometry capability needs is the Shader capability and that is actually implicitly included. That's how I understand it.

Refer to page 15 and 64 in spirv-specs

Ddoitsujin maintainer 2018-02-16 github

Page 64 says:

Geometry
Uses the Geometry Execution Model

glslang-validator adds the capability as well though, so I should probably to the same thing. But in that case, the part I quoted from the specs is incorrect, or at least poorly worded.

ZZeroFault 2018-02-17 github

Looks like Squad is getting there, main menu isn't rendering for me correctly on a Nvidia gtx 1080.

Here are logs for the UE4 game Squad
Squad_d3d11.log
Squad_dxgi.log

Here is an apitrace from Squad
Squad.trace

Ddoitsujin maintainer 2018-02-19 github

Except for the one demo that requires tessellation, they all should run now, although they won't render correctly. For tessellation, see #93.

@ZeroFault will take a look at the trace, thanks for that.

Nothing extracted yet.