diff options
| author | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2026-03-31 01:30:36 +0200 |
|---|---|---|
| committer | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2026-03-31 01:30:36 +0200 |
| commit | 8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8 (patch) | |
| tree | 925fa596210d1a1f01e00e0743a643f4552e7a7a /tools/Vulkan-Tools/vulkaninfo/macOS | |
| parent | 1f17b4df127bd280e50d93a46ae93df704adc2b0 (diff) | |
| parent | 90bf5bc4fd8bea0d300f6564af256a51a34124b8 (diff) | |
| download | usermoji-8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8.tar.xz | |
add tools/Vulkan-Tools
Diffstat (limited to 'tools/Vulkan-Tools/vulkaninfo/macOS')
| -rw-r--r-- | tools/Vulkan-Tools/vulkaninfo/macOS/vulkaninfo/metal_view.h | 30 | ||||
| -rw-r--r-- | tools/Vulkan-Tools/vulkaninfo/macOS/vulkaninfo/metal_view.mm | 53 |
2 files changed, 83 insertions, 0 deletions
diff --git a/tools/Vulkan-Tools/vulkaninfo/macOS/vulkaninfo/metal_view.h b/tools/Vulkan-Tools/vulkaninfo/macOS/vulkaninfo/metal_view.h new file mode 100644 index 00000000..31429d41 --- /dev/null +++ b/tools/Vulkan-Tools/vulkaninfo/macOS/vulkaninfo/metal_view.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2018 The Khronos Group Inc. + * Copyright (c) 2018 Valve Corporation + * Copyright (c) 2018 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Author: Jeremy Kniager <jeremyk@lunarg.com> + */ + +#ifndef metal_view_h +#define metal_view_h + +void* CreateMetalView(uint32_t width, uint32_t height); + +void DestroyMetalView(void* view); + +void* GetCAMetalLayerFromMetalView(void* view); + +#endif /* metal_view_h */ diff --git a/tools/Vulkan-Tools/vulkaninfo/macOS/vulkaninfo/metal_view.mm b/tools/Vulkan-Tools/vulkaninfo/macOS/vulkaninfo/metal_view.mm new file mode 100644 index 00000000..90bff4c5 --- /dev/null +++ b/tools/Vulkan-Tools/vulkaninfo/macOS/vulkaninfo/metal_view.mm @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2018 The Khronos Group Inc. + * Copyright (c) 2018 Valve Corporation + * Copyright (c) 2018 LunarG, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Author: Jeremy Kniager <jeremyk@lunarg.com> + */ + +#import <AppKit/AppKit.h> +#import <QuartzCore/QuartzCore.h> + +@interface NativeMetalView : NSView +@end + +@implementation NativeMetalView +- (id)initWithFrame:(NSRect)frame { + if (self = [super initWithFrame:frame]) { + self.wantsLayer = YES; + } + return self; +} + ++ (Class)layerClass { + return [CAMetalLayer class]; +} + +- (CALayer*)makeBackingLayer { + CALayer* layer = [self.class.layerClass layer]; + CGSize viewScale = [self convertSizeToBacking:CGSizeMake(1.0, 1.0)]; + layer.contentsScale = MIN(viewScale.width, viewScale.height); + return layer; +} +@end + +void* CreateMetalView(uint32_t width, uint32_t height) { + return [[NativeMetalView alloc] initWithFrame:NSMakeRect(0, 0, width, height)]; +} + +void DestroyMetalView(void* view) { [(NativeMetalView*)view dealloc]; } + +void* GetCAMetalLayerFromMetalView(void* view) { return ((NativeMetalView*)view).layer; } |
