dotnet / dotnet/macios

Can't share or open `IOSurface` cross process

Open
#18,389 3 comments 0 reactions 0 assignees View on GitHub
help wanted missing-api-bindings
Dominant language
C#
Stars
2.9k
Forks
576
Avg merge
2d 12h
Merged PRs (30d)
123

Description

### Steps to Reproduce

1. Try to use any function to share an `IOSurface` cross-process on macOS

### Expected Behavior

The functions to share and lookup `IOSurface` should be exported; e.g.

[IOSurfaceCreateMachPort](https://developer.apple.com/documentation/iosurface/1419486-iosurfacecreatemachport?language=objc)
[IOSurfaceCreateXPCObject](https://developer.apple.com/documentation/iosurface/1419429-iosurfacecreatexpcobject?language=objc)
[IOSurfaceLookupFromMachPort](https://developer.apple.com/documentation/iosurface/1419480-iosurfacelookupfrommachport?language=objc)
[IOSurfaceLookupFromXPCObject](https://developer.apple.com/documentation/iosurface/1419449-iosurfacelookupfromxpcobject?language=objc)

Ideally, I'd also expect to be able to call the deprecated function [IOSurfaceLookup](https://developer.apple.com/documentation/iosurface/1419361-iosurfacelookup?language=objc). I can manually use `IOSurfaceIsGlobal` and `IOSurfaceGetID`, but how do I call the lookup? P/invoking it with a return type of `IntPtr` isn't helpful when I need an `IOSurface` to pass to other functions.

### Actual Behavior

The functions are not available.

### Environment

Visual Studio Professional 2022 for Mac
Version 17.5.3 (build 15)
Installation UUID: 4693e2b8-e552-4d2a-9994-cef0d37548ad

Runtime
.NET 7.0.1 (64-bit)
Architecture: Arm64
Microsoft.macOS.Sdk 12.3.2372; git-rev-head:754abbf6a3563f6267e5717ae832b4ac25b1f2fb; git-branch:release/7.0.1xx-xcode13.3

Roslyn (Language Service)
4.5.0-3.23056.2+97881342e427ff5cdcba8f12b12ff8e6f3564431

NuGet
Version: 6.4.0.117

.NET SDK (Arm64)
SDK: /usr/local/share/dotnet/sdk/7.0.202/Sdks
SDK Versions:
7.0.202
7.0.200
7.0.102
7.0.101
7.0.100
6.0.407
6.0.406
6.0.405
6.0.404
6.0.403
6.0.402
6.0.401
6.0.302
6.0.300
6.0.101
MSBuild SDKs: /Applications/Visual Studio.app/Contents/MonoBundle/MSBuild/Current/bin/Sdks

.NET SDK (x64)
SDK Versions:
6.0.407
6.0.406
6.0.405
6.0.404
6.0.403
6.0.402
6.0.401
6.0.302
6.0.105
6.0.102
6.0.101
5.0.408
5.0.405
5.0.404
3.1.426
3.1.425
3.1.424
3.1.423
3.1.421
3.1.419
3.1.416

.NET Runtime (Arm64)
Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.0.15
6.0.14
6.0.13
6.0.12
6.0.11
6.0.10
6.0.9
6.0.7
6.0.5
6.0.1

.NET Runtime (x64)
Runtime: /usr/local/share/dotnet/x64/dotnet
Runtime Versions:
6.0.15
6.0.14
6.0.13
6.0.12
6.0.11
6.0.10
6.0.9
6.0.7
6.0.5
6.0.2
6.0.1
5.0.17
5.0.14
5.0.13
3.1.32
3.1.31
3.1.30
3.1.29
3.1.27
3.1.25
3.1.22

Xamarin.Profiler
Version: 1.8.0.49
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

Updater
Version: 11

Apple Developer Tools
Xcode: 14.2 21534
Build: 14C18

Xamarin.Mac
Version: 9.1.0.5 Visual Studio Professional
Hash: 7738c90c9
Branch: xcode14.2
Build date: 2023-01-25 15:56:14-0500

Xamarin.iOS
Version: 16.2.0.5 Visual Studio Professional
Hash: 7738c90c9
Branch: xcode14.2
Build date: 2023-01-25 15:56:15-0500

Xamarin Designer
Version: 17.5.3.47
Hash: e8b5d371c3
Branch: remotes/origin/d17-5
Build date: 2023-03-23 18:30:22 UTC

Xamarin.Android
Version: 13.2.0.0 (Visual Studio Professional)
Commit: xamarin-android/d17-5/797e2e1
Android SDK: /Users/rmarkiewicz/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
12.0 (API level 31)
11.0 (API level 30)
10.0 (API level 29)
9.0 (API level 28)
13.0 (API level 33)

SDK Command-line Tools Version: 7.0
SDK Platform Tools Version: 33.0.2
SDK Build Tools Version: 32.0.0

Build Information:
Mono: 6dd9def
Java.Interop: xamarin/java.interop/main@149d70fe
SQLite: xamarin/sqlite/3.40.0@fdc1e34
Xamarin.Android Tools: xamarin/xamarin-android-tools/main@9f02d77

Microsoft Build of OpenJDK
Java SDK: /Library/Java/JavaVirtualMachines/microsoft-11.jdk
11.0.16.1
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

Eclipse Temurin JDK
Java SDK: /Library/Java/JavaVirtualMachines/temurin-8.jdk
1.8.0.302
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

Android SDK Manager
Version: 17.5.0.33
Hash: f0c0c52
Branch: remotes/origin/d17-5~2
Build date: 2023-03-23 18:30:27 UTC

Android Device Manager
Version: 0.0.0.1245
Hash: 7f8a990
Branch: 7f8a990
Build date: 2023-03-23 18:30:27 UTC

Build Information
Release ID: 1705030015
Git revision: c7ec3826dd11045a53fa7f2c08ddbd6bd475c05b
Build date: 2023-03-23 18:28:33+00
Build branch: release-17.5
Build lane: release-17.5

Operating System
Mac OS X 13.4.0
Darwin 22.5.0 Darwin Kernel Version 22.5.0
Mon Apr 24 20:52:24 PDT 2023
root:xnu-8796.121.2~5/RELEASE_ARM64_T6000 arm64

Enabled user installed extensions
Project System Tools 0.12

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating the existing IOSurface binding entry points and compare them with the four named functions: IOSurfaceCreateMachPort, IOSurfaceCreateXPCObject, IOSurfaceLookupFromMachPort, and IOSurfaceLookupFromXPCObject. Done means the sharing and lookup functions, including the requested deprecated IOSurfaceLookup if supported, are available for use from .NET.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, macos
Domain
api, desktop-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.