From 926ed12bd6b9841ad94a66dd59b062be452bfeab Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Fri, 16 Jul 2021 01:11:06 -0500 Subject: [PATCH] Added more Rendering and GraphicsDeviceTypes; Disabled ping request count in Synchronize --- .../Iris/Render/GraphicsDeviceType.cs | 16 ++++++++++ .../Iris/Render/Internal/RenderCaps.cs | 3 ++ .../Iris/Render/Protocol/MessagingSession.cs | 2 ++ .../Splash/Rendering/IRenderCapsCallback.cs | 2 +- .../Rendering/LocalRenderCapsCallback.cs | 30 +++++++++---------- UIX.Skia/Microsoft/Iris/Application.cs | 1 + UIX.Skia/Microsoft/Iris/RenderingType.cs | 4 ++- Xune.Uno/Xune.Uno.Shared/MainPage.xaml | 4 ++- Xune.Uno/Xune.Uno.Shared/MainPage.xaml.cs | 2 +- 9 files changed, 45 insertions(+), 19 deletions(-) diff --git a/UIX.RenderApi.Skia/Microsoft/Iris/Render/GraphicsDeviceType.cs b/UIX.RenderApi.Skia/Microsoft/Iris/Render/GraphicsDeviceType.cs index 5178bfa..b4ef7db 100644 --- a/UIX.RenderApi.Skia/Microsoft/Iris/Render/GraphicsDeviceType.cs +++ b/UIX.RenderApi.Skia/Microsoft/Iris/Render/GraphicsDeviceType.cs @@ -8,9 +8,25 @@ namespace Microsoft.Iris.Render { public enum GraphicsDeviceType { + Unknown = -1, + None, Gdi, Direct3D9, XeDirectX9, + + Metal, + OpenGL, + Vulkan, + Dawn, + + /// + /// Skia's GPU backend + /// + Ganesh, + /// + /// Skia's GPU backend + /// + SKGanesh = Ganesh, } } diff --git a/UIX.RenderApi.Skia/Microsoft/Iris/Render/Internal/RenderCaps.cs b/UIX.RenderApi.Skia/Microsoft/Iris/Render/Internal/RenderCaps.cs index 491d8b9..b1ae684 100644 --- a/UIX.RenderApi.Skia/Microsoft/Iris/Render/Internal/RenderCaps.cs +++ b/UIX.RenderApi.Skia/Microsoft/Iris/Render/Internal/RenderCaps.cs @@ -43,6 +43,9 @@ namespace Microsoft.Iris.Render.Internal ++this.m_currentRequestId; this.m_remoteObject.SendCheckCaps(this.m_currentRequestId); this.m_capsPending = true; + + // TODO + ((IRenderCapsCallback)this).OnEndCapsCheck(default, 0); } internal event EventHandler CapsAvailable; diff --git a/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocol/MessagingSession.cs b/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocol/MessagingSession.cs index 222032c..29a2557 100644 --- a/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocol/MessagingSession.cs +++ b/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocol/MessagingSession.cs @@ -240,6 +240,8 @@ namespace Microsoft.Iris.Render.Protocol } if (this.m_isBatchingMessages) this.FlushBatch(); + return; + // TODO: What does this do? while (this.m_pingRequestCount > 0) DoEvents(uint.MaxValue); } diff --git a/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/IRenderCapsCallback.cs b/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/IRenderCapsCallback.cs index ef0f7f7..c51fb15 100644 --- a/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/IRenderCapsCallback.cs +++ b/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/IRenderCapsCallback.cs @@ -11,7 +11,7 @@ namespace Microsoft.Iris.Render.Protocols.Splash.Rendering { internal interface IRenderCapsCallback { - void OnSoundCaps(RENDERHANDLE target, uint nCookie, Microsoft.Iris.Render.Internal.SoundCaps capsInfo); + void OnSoundCaps(RENDERHANDLE target, uint nCookie, Internal.SoundCaps capsInfo); void OnGraphicsCaps(RENDERHANDLE target, uint nCookie, GraphicsCaps capsInfo); diff --git a/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/LocalRenderCapsCallback.cs b/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/LocalRenderCapsCallback.cs index 27cd8c4..449e698 100644 --- a/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/LocalRenderCapsCallback.cs +++ b/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocols/Splash/Rendering/LocalRenderCapsCallback.cs @@ -45,21 +45,21 @@ namespace Microsoft.Iris.Render.Protocols.Splash.Rendering IRenderHandleOwner owner, CallbackMessage* message) { - if (!(owner is IRenderCapsCallback _priv_target)) + if (owner is not IRenderCapsCallback _priv_target) return; switch (message->nMsg) { case 0: - Dispatch_OnSoundCaps(port, _priv_target, (LocalRenderCapsCallback.Msg0_OnSoundCaps*)message); + Dispatch_OnSoundCaps(port, _priv_target, (Msg0_OnSoundCaps*)message); break; case 1: - Dispatch_OnGraphicsCaps(port, _priv_target, (LocalRenderCapsCallback.Msg1_OnGraphicsCaps*)message); + Dispatch_OnGraphicsCaps(port, _priv_target, (Msg1_OnGraphicsCaps*)message); break; case 2: - Dispatch_OnEndCapsCheck(port, _priv_target, (LocalRenderCapsCallback.Msg2_OnEndCapsCheck*)message); + Dispatch_OnEndCapsCheck(port, _priv_target, (Msg2_OnEndCapsCheck*)message); break; case 3: - Dispatch_OnBeginCapsCheck(port, _priv_target, (LocalRenderCapsCallback.Msg3_OnBeginCapsCheck*)message); + Dispatch_OnBeginCapsCheck(port, _priv_target, (Msg3_OnBeginCapsCheck*)message); break; } } @@ -67,23 +67,23 @@ namespace Microsoft.Iris.Render.Protocols.Splash.Rendering private static unsafe void Dispatch_OnSoundCaps( RenderPort _priv_port, IRenderCapsCallback _priv_target, - LocalRenderCapsCallback.Msg0_OnSoundCaps* _priv_pmsg) + Msg0_OnSoundCaps* _priv_pmsg) { if (_priv_port.ForeignByteOrder) - MarshalHelper.SwapByteOrder((byte*)_priv_pmsg, ref s_priv_ByteOrder_Msg0_OnSoundCaps, typeof(LocalRenderCapsCallback.Msg0_OnSoundCaps), sizeof(CallbackMessage), 0); + MarshalHelper.SwapByteOrder((byte*)_priv_pmsg, ref s_priv_ByteOrder_Msg0_OnSoundCaps, typeof(Msg0_OnSoundCaps), sizeof(CallbackMessage), 0); RENDERHANDLE target = _priv_pmsg->target; uint nCookie = _priv_pmsg->nCookie; - Microsoft.Iris.Render.Internal.SoundCaps capsInfo = _priv_pmsg->capsInfo; + Internal.SoundCaps capsInfo = _priv_pmsg->capsInfo; _priv_target.OnSoundCaps(target, nCookie, capsInfo); } private static unsafe void Dispatch_OnGraphicsCaps( RenderPort _priv_port, IRenderCapsCallback _priv_target, - LocalRenderCapsCallback.Msg1_OnGraphicsCaps* _priv_pmsg) + Msg1_OnGraphicsCaps* _priv_pmsg) { if (_priv_port.ForeignByteOrder) - MarshalHelper.SwapByteOrder((byte*)_priv_pmsg, ref s_priv_ByteOrder_Msg1_OnGraphicsCaps, typeof(LocalRenderCapsCallback.Msg1_OnGraphicsCaps), sizeof(CallbackMessage), 0); + MarshalHelper.SwapByteOrder((byte*)_priv_pmsg, ref s_priv_ByteOrder_Msg1_OnGraphicsCaps, typeof(Msg1_OnGraphicsCaps), sizeof(CallbackMessage), 0); RENDERHANDLE target = _priv_pmsg->target; uint nCookie = _priv_pmsg->nCookie; GraphicsCaps capsInfo = _priv_pmsg->capsInfo; @@ -93,10 +93,10 @@ namespace Microsoft.Iris.Render.Protocols.Splash.Rendering private static unsafe void Dispatch_OnEndCapsCheck( RenderPort _priv_port, IRenderCapsCallback _priv_target, - LocalRenderCapsCallback.Msg2_OnEndCapsCheck* _priv_pmsg) + Msg2_OnEndCapsCheck* _priv_pmsg) { if (_priv_port.ForeignByteOrder) - MarshalHelper.SwapByteOrder((byte*)_priv_pmsg, ref s_priv_ByteOrder_Msg2_OnEndCapsCheck, typeof(LocalRenderCapsCallback.Msg2_OnEndCapsCheck), sizeof(CallbackMessage), 0); + MarshalHelper.SwapByteOrder((byte*)_priv_pmsg, ref s_priv_ByteOrder_Msg2_OnEndCapsCheck, typeof(Msg2_OnEndCapsCheck), sizeof(CallbackMessage), 0); RENDERHANDLE target = _priv_pmsg->target; uint nCookie = _priv_pmsg->nCookie; _priv_target.OnEndCapsCheck(target, nCookie); @@ -105,10 +105,10 @@ namespace Microsoft.Iris.Render.Protocols.Splash.Rendering private static unsafe void Dispatch_OnBeginCapsCheck( RenderPort _priv_port, IRenderCapsCallback _priv_target, - LocalRenderCapsCallback.Msg3_OnBeginCapsCheck* _priv_pmsg) + Msg3_OnBeginCapsCheck* _priv_pmsg) { if (_priv_port.ForeignByteOrder) - MarshalHelper.SwapByteOrder((byte*)_priv_pmsg, ref s_priv_ByteOrder_Msg3_OnBeginCapsCheck, typeof(LocalRenderCapsCallback.Msg3_OnBeginCapsCheck), sizeof(CallbackMessage), 0); + MarshalHelper.SwapByteOrder((byte*)_priv_pmsg, ref s_priv_ByteOrder_Msg3_OnBeginCapsCheck, typeof(Msg3_OnBeginCapsCheck), sizeof(CallbackMessage), 0); RENDERHANDLE target = _priv_pmsg->target; uint nCookie = _priv_pmsg->nCookie; _priv_target.OnBeginCapsCheck(target, nCookie); @@ -127,7 +127,7 @@ namespace Microsoft.Iris.Render.Protocols.Splash.Rendering public RENDERHANDLE _priv_idObjectSubject; public RENDERHANDLE target; public uint nCookie; - public Microsoft.Iris.Render.Internal.SoundCaps capsInfo; + public Internal.SoundCaps capsInfo; } [ComVisible(false)] diff --git a/UIX.Skia/Microsoft/Iris/Application.cs b/UIX.Skia/Microsoft/Iris/Application.cs index fee93be..bde41c6 100644 --- a/UIX.Skia/Microsoft/Iris/Application.cs +++ b/UIX.Skia/Microsoft/Iris/Application.cs @@ -467,6 +467,7 @@ namespace Microsoft.Iris graphicsType = GraphicsDeviceType.Direct3D9; break; default: + graphicsType = GraphicsDeviceType.Unknown; throw new ArgumentException(InvariantString.Format("Unknown rendering type {0}", type)); } if (type == RenderingType.Default && !s_session.IsGraphicsDeviceRecommended(graphicsType) || !s_session.IsGraphicsDeviceAvailable(graphicsType)) diff --git a/UIX.Skia/Microsoft/Iris/RenderingType.cs b/UIX.Skia/Microsoft/Iris/RenderingType.cs index 2e80ab6..97eb25d 100644 --- a/UIX.Skia/Microsoft/Iris/RenderingType.cs +++ b/UIX.Skia/Microsoft/Iris/RenderingType.cs @@ -10,6 +10,8 @@ namespace Microsoft.Iris { GDI, DX9, - Default, + Skia, + + Default = -1, } } diff --git a/Xune.Uno/Xune.Uno.Shared/MainPage.xaml b/Xune.Uno/Xune.Uno.Shared/MainPage.xaml index 615887b..323db76 100644 --- a/Xune.Uno/Xune.Uno.Shared/MainPage.xaml +++ b/Xune.Uno/Xune.Uno.Shared/MainPage.xaml @@ -13,7 +13,9 @@ - + + + diff --git a/Xune.Uno/Xune.Uno.Shared/MainPage.xaml.cs b/Xune.Uno/Xune.Uno.Shared/MainPage.xaml.cs index c22265a..77d7984 100644 --- a/Xune.Uno/Xune.Uno.Shared/MainPage.xaml.cs +++ b/Xune.Uno/Xune.Uno.Shared/MainPage.xaml.cs @@ -33,7 +33,7 @@ namespace Xune.Uno public MainPage() { this.InitializeComponent(); - Task.Run(Microsoft.Iris.Application.Initialize); + Microsoft.Iris.Application.Initialize(); Canvas.PaintSurface += Canvas_PaintSurface; timer.Interval = new TimeSpan(17000);