Has anyone successfully used ANGLE for getting GLES3 support on XBOX One S?

291 views
Skip to first unread message

Anton Kolosov

unread,
Jun 11, 2020, 10:00:09 AM6/11/20
to angleproject
Hello all.

I've tried to use ANGLE to create UWP app for XBOX One S. The corresponding app for desktop used GLES3 (it is Godot engine game).
Created UWP app successfully worked on my Windows 10 laptop, but when starting on XBOX One, it crashes, because GL context cannot be created.
I've managed to get it work on XBOX by using EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE during display creation, but software renderer works awfully slow :(
Has anyone succeded with running GLES3 UWP app on XBOX One S, or its hardware does not allow GLES3 context creation?

Best regards,
Anton

Geoff Lang

unread,
Jun 11, 2020, 11:25:14 AM6/11/20
to anto...@gmail.com, angleproject
I suspect the D3D11 device is failing to be initialized, possibly due to some XBox-specific parameters being incorrect/missing.  If you're compiling ANGLE yourself, try adding logging around here

--
You received this message because you are subscribed to the Google Groups "angleproject" group.
To unsubscribe from this group and stop receiving emails from it, send an email to angleproject...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/angleproject/87cb5f6b-8258-4187-a393-a5f8c3c570bco%40googlegroups.com.

Anton Kolosov

unread,
Jun 11, 2020, 12:09:58 PM6/11/20
to angleproject
Geoff, thanks! I'll check it out and try to add the logging at the places you've mentioned.
Yes, I am compiling ANGLE myself, using instructions provided here: https://github.com/google/angle/blob/master/doc/DevSetup.md
I've tried a couple of binaries compiled by another users too, without luck :( For example, I've tried compiled libEGL.dll and libGLESv2.dll from this distro: https://retroarch.com/?page=platforms , they have UWP version for XBOX.

четверг, 11 июня 2020 г., 21:25:14 UTC+6 пользователь Geoff Lang написал:
I suspect the D3D11 device is failing to be initialized, possibly due to some XBox-specific parameters being incorrect/missing.  If you're compiling ANGLE yourself, try adding logging around here

On Thu, Jun 11, 2020 at 10:00 AM Anton Kolosov <anto...@gmail.com> wrote:
Hello all.

I've tried to use ANGLE to create UWP app for XBOX One S. The corresponding app for desktop used GLES3 (it is Godot engine game).
Created UWP app successfully worked on my Windows 10 laptop, but when starting on XBOX One, it crashes, because GL context cannot be created.
I've managed to get it work on XBOX by using EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE during display creation, but software renderer works awfully slow :(
Has anyone succeded with running GLES3 UWP app on XBOX One S, or its hardware does not allow GLES3 context creation?

Best regards,
Anton

--
You received this message because you are subscribed to the Google Groups "angleproject" group.
To unsubscribe from this group and stop receiving emails from it, send an email to anglep...@googlegroups.com.

Austin Kinross

unread,
Jun 11, 2020, 12:16:40 PM6/11/20
to angleproject

Xbox One only supports DirectX 11 Feature Level 10 in UWPs: https://docs.microsoft.com/en-us/windows/uwp/xbox-apps/system-resource-allocation

 

I think you need Feature Level 10.1+ to use GLES3 in ANGLE: https://github.com/google/angle/blob/7a5814e211801b66f39b1fb07fe93aeba298a669/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp#L1236

 

Perhaps you could try modifying ANGLE to allow GLES3 on Feature Level 10. You could also maybe try using Direct3D11On12 (since D3D12 supports higher feature levels in Xbox UWPs). I haven’t tried either of these suggestions myself though.

 

Austin


(resending because my original reply had issues posting to angleproject, apologies for any noise)

Anton Kolosov

unread,
Jun 11, 2020, 2:19:06 PM6/11/20
to angleproject
Austin, thanks!

I tried to add EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE, EGL_TRUE when creating the display with eglGetPlatformDisplayEXT(). but it does not help.
Display and surface are created successfully, then I use eglChooseConfig() for the following config attributes:
EGLint configAttribList[] = {
EGL_RED_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_BLUE_SIZE, 8,
EGL_ALPHA_SIZE, 8,
EGL_DEPTH_SIZE, 8,
EGL_STENCIL_SIZE, 8,
EGL_SAMPLE_BUFFERS, 0,
EGL_NONE
};
and it returns 10 matched configs, but when I try to use any of these configs to create the context via eglCreateContext() is fails.
Probably modifying ANGLE to allow GLES3 on Feature Level 10 could help, I'll check it out, thanks!

четверг, 11 июня 2020 г., 22:16:40 UTC+6 пользователь Austin Kinross написал:

Anton Kolosov

unread,
Jun 12, 2020, 3:49:41 AM6/12/20
to angleproject
Well, we've almost there :)

After changing GetMaximumClientVersion(D3D_FEATURE_LEVEL featureLevel) so that gl::Version(3, 0) is allowed at Feature Level 10, I've got the following log on the XBox One:

Godot Engine v3.1.2.stable.custom_build.ebc76d6 - https://godotengine.org
Successfully initialized EGL 1.5
Total configs count = 200
Matched configs count = 10
OpenGL ES 3.0 Renderer: ANGLE (SraKmd Direct3D11 vs_4_0 ps_4_0)

In fact, the game starts successfully now, but unfortunately all materials are rendered in white. There are also errors in log indicating problems with shaders
The log on my laptop, where this UWP works just fine, is the following:

Godot Engine v3.1.2.stable.custom_build.ebc76d6 - https://godotengine.org
Successfully initialized EGL 1.5
Total configs count = 200
Matched configs count = 10
OpenGL ES 3.0 Renderer: ANGLE (NVIDIA GeForce 940M Direct3D11 vs_5_0 ps_5_0)

Obvious difference here is  vs_5_0 ps_5_0 compared with vs_4_0 ps_4_0 on XBox One. Maybe we could somehow magically allow vs_5_0 ps_5_0 on XBox with a single line hack too? :) Maybe we could trick ANGLE into thinking that we have feature level 10.1 or something like that?

пятница, 12 июня 2020 г., 0:19:06 UTC+6 пользователь Anton Kolosov написал:

Geoff Lang

unread,
Jun 12, 2020, 10:53:58 AM6/12/20
to anto...@gmail.com, angleproject
ANGLE requests the highest feature level that the device supports.  You can verify the contents of mAvailableFeatureLevels here, I suspect it contains 11.0.

To unsubscribe from this group and stop receiving emails from it, send an email to angleproject...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/angleproject/c7517647-0e05-4ff2-b7f6-f673407f715do%40googlegroups.com.

Anton Kolosov

unread,
Jun 12, 2020, 11:46:08 AM6/12/20
to angleproject
Yeah, thanks, I'll take a look.
Probably, I should hack the engine itself, too. The game starts successfully now, after all, only the shaders are broken.
It is very strange, still. I understand that XBox One is not a new thing, but I think that its GPU should be at least on par with my laptop's GPU. There are even phones nowadays that are able to run GLES3 code...

пятница, 12 июня 2020 г., 20:53:58 UTC+6 пользователь Geoff Lang написал:

Trevisan Games & Apps

unread,
Feb 6, 2021, 4:52:08 PM2/6/21
to angleproject
Did you use corewindows or Swapchainpanel? I'm not able to run with swapchainpanel on xbox, on the computer it works perfectly, if you could, can you share your copilation?

Anton Kolosov

unread,
Feb 6, 2021, 5:38:55 PM2/6/21
to angleproject
As far as I can understand, it is corewindows

Unfortunately, the compiled application cannot work properly under GLES3. I can run some simple game under GLES3, like a cube with a default material, but when I try to run my own game, it crashes.

As for my compilation, here it is: https://nlbproject.com/files/uwp_x64.zip

I still really hope that the ANGLE team will make it possible to correctly run GLES3 under XBox :)

Trevisan Games & Apps

unread,
Feb 6, 2021, 6:40:38 PM2/6/21
to angleproject
Thanks buddy, for weeks trying it seems that the xbox doesn't accept shaders, and my texture has the coordinates defined in the shaders, I will test your copilation
Reply all
Reply to author
Forward
0 new messages