mono / SkiaSharp

SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.
MIT License
4.14k stars 522 forks source link

[FEATURE] Support Direct3D #2817

Open Kation opened 1 month ago

Kation commented 1 month ago

Is your feature request related to a problem?

  1. Some GPU or its driver doesn't support Vulkan. For example, Intel Xe Graphics currently driver will return null ptr when get procedure address for some name. Then GRContext.CreateVulkan will return null.
  2. Some environment only support OpenGL 1.1. For example, Virtual Machine without GPU. Or remote control without RDP with Intel Xe Graphics. Then GRContext.CreateGl will return null.

Without Vulkan and OpenGL, we can only use CPU to render images.

Describe the solution you would like

Add D3D support with Windows os.

Describe alternatives you have considered

Add define SK_Direct3D when compile native skia so that I can use it with pinvoke and reflection.

Additional context

No response

Code of Conduct

Kation commented 1 month ago

I have tried to use SharpDX to create backend. But I found there is no api define in libSkiaSharp because compile without define SK_Direct3D.

996666925 commented 1 month ago

👍👍👍

Shunfeng88 commented 1 month ago

The code demonstrates a deep understanding of the domain, incorporating relevant design patterns and domain-specific optimizations that reflect your expertise and intimate familiarity with the subject matter

Kation commented 1 month ago

@mgood7123

Skia have define D3D functions: https://github.com/mono/skia/blob/a0008792c861228872a0a21f5f3422c4c8824720/include/gpu/GrDirectContext.h#L105-L112

But our SkiaSharp does not add those define: https://github.com/mono/skia/blob/a0008792c861228872a0a21f5f3422c4c8824720/include/c/gr_context.h#L28-L33