VMware as OpenGL vendor causes Assertion failed: GRHIVendorId != 0

Hi all,

When trying to run my Unreal Project (C++, Blank Template) using Unreal 4.17.2 on Linux Ubuntu 16.04.3 I’m having the error on the method IsRHIDeviceIntel when checking check(GRHIVendorId != 0);.

I already went through the links provided on the related question but nothing helped.

If I run gxlinfo| grep OpenGL i have the following output:

OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 4.0, 256 bits)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 17.0.7
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 17.0.7
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 17.0.7
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

Running glxinfo| grep version I have the following:

server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
    Max core profile version: 3.3
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL core profile version string: 3.3 (Core Profile) Mesa 17.0.7
OpenGL core profile shading language version string: 3.30
OpenGL version string: 3.0 Mesa 17.0.7
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 17.0.7
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00

I’m using EC2 Instances from AWS (if this info helps).


EDIT - added callstack

The error stack is:

[2017.11.15-10.07.26:302][  0]LogMaterial: Missing cached shader map for material LevelGridMaterial2, compiling. 
[2017.11.15-10.07.26:591][  0]LogRenderer: Reallocating scene render targets to support 856x324 Format 10 NumSamples 1 (Frame:1).
Assertion failed: GRHIVendorId != 0 [File:/UnrealEngine/Engine/Source/Runtime/RHI/Private/RHI.cpp] [Line: 547] 
[Callstack]  00  0x00007f24513862df  FLinuxPlatformStackWalk::CaptureStackBackTrace(unsigned long long*, unsigned int, void*)
[Callstack]  01  0x00007f24512137c5  FGenericPlatformStackWalk::StackWalkAndDump(char*, unsigned long, int, void*)
[Callstack]  02  0x00007f245138619b  FLinuxPlatformStackWalk::StackWalkAndDump(char*, unsigned long, int, void*)
[Callstack]  03  0x00007f24513caf0a  FDebug::LogAssertFailedMessage(char const*, char const*, int, wchar_t const*, ...)
[Callstack]  04  0x00007f244a4e6199  IsRHIDeviceIntel()
[Callstack]  05  0x00007f24320d318a  FDeferredShadingSceneRenderer::ShouldPrepareDistanceFieldScene() const
[Callstack]  06  0x00007f24320c54b3  FDeferredShadingSceneRenderer::Render(FRHICommandListImmediate&)
[Callstack]  07  0x00007f243264a23a  /UnrealEngine/Engine/Binaries/Linux/libUE4Editor-Renderer.so(+0xbc423a) [0x7f243264a23a]
[Callstack]  08  0x00007f24326734a5  /UnrealEngine/Engine/Binaries/Linux/libUE4Editor-Renderer.so(+0xbed4a5) [0x7f24326734a5]
[Callstack]  09  0x00007f245123f117  FNamedTaskThread::ProcessTasksNamedThread(int, bool)
[Callstack]  10  0x00007f245123e573  FNamedTaskThread::ProcessTasksUntilQuit(int)
[Callstack]  11  0x00007f244a78085a  RenderingThreadMain(FEvent*)
[Callstack]  12  0x00007f244a795902  FRenderingThread::Run()
[Callstack]  13  0x00007f2451280e67  FRunnableThreadPThread::Run()
[Callstack]  14  0x00007f2451257fc6  FRunnableThreadPThread::_ThreadProc(void*)
[Callstack]  15  0x00007f2457d8a6ba  /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f2457d8a6ba]
[Callstack]  16  0x00007f24443873dd  /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f24443873dd]

Any of you have an idea about how to solve this?

Do you have the crash log of the engine? (Project directory/Saved/Logs)

Also why are you running this in AWS? Are you just building the project there?(You can compile for Linux from Windows if you need to). If you need to do it from the command line I can provide you the command to do it without the GUI(on Linux).

Hi @aknarts ,
I have added the callstack on the question.

I have to use Linux because I’m integrating a library that works specifically on Linux, and I’m using AWS because on my i7 things go really slow…

You can hardcode GRHIVendorId to some non-zero value to avoid the crash. In 4.19 and above the engine will do that itself (after showing the messagebox about unsupported drivers).

I’ve hard-coded the value to 1 with "uint32 GRHIVendorId = 1;" and it worked.

Thank you very much.

Where do I change it?