[Visualization] Disable visualization if no Metal

If the system has no working Metal devices, disable the visualization.

The legacy visualization was also too slow for said systems to handle
reasonably anyway, so I guess it's safe to say that they shouldn't have
to handle any visualizers at all. At least have working audio playback,
of course, since that is the primary function of the application. Too
bad that the OpenGL renderers don't work on my scene, it would be nice
to have a fallback there. GL 4.1 crashes on an M1, and both GL 4.1 and
3.2 crash with SIGFPE division by zero error on Intel Macs without Metal
devices. Meh.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
swiftingly
Christopher Snowhill 2022-05-30 00:15:49 -07:00
parent 539a8c79eb
commit 8c2df13f3b
2 changed files with 6 additions and 0 deletions

View File

@ -29,6 +29,7 @@
if(!self.spectrumView) {
self.spectrumView = [[SpectrumView alloc] initWithFrame:[[self window] frame]];
[[self window] setContentView:self.spectrumView];
if(!self.spectrumView) return;
[self.spectrumView enableCameraControl];
}

View File

@ -45,8 +45,13 @@ extern NSString *CogPlaybackDidStopNotficiation;
@synthesize isListening;
- (id)initWithFrame:(NSRect)frame {
id<MTLDevice> device = MTLCreateSystemDefaultDevice();
if(!device) return nil;
NSDictionary *sceneOptions = @{
SCNPreferredRenderingAPIKey: @(SCNRenderingAPIMetal),
SCNPreferredDeviceKey: device,
SCNPreferLowPowerDeviceKey: @(NO)
};