-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
Currently EmbedderConfigBuilder, EmbedderTest, EmbedderTestCompositor, EmbedderTestBackingStoreProducer, etc. handle software, OpenGL, Metal, and Vulkan all together in the same implementation, which allows for several nonsensical operations such as creating a EmbedderTestContext with a Metal compositor then calling SetRenderTargetType(RenderTargetType::kVulkan) on it.
Further, this mixing prevents us from using Objective-C types in Metal-related headers, since they're included in translation units that need to be pure C++ since they need to compile for all backends on all platforms. This then requires a lot of manual ARC bridging for memory management of Objective-C types.
Almost all of the backend-specific code is easily separable into separate implementations. We should do that.