Commit: f1521591017faac334ff78c291ad66bdaf327661 Author: Jason Fielder Date: Tue Feb 7 00:51:06 2023 +0100 Branches: master https://developer.blender.org/rBf1521591017faac334ff78c291ad66bdaf327661
Metal: Guard advanced command buffer debugging behind OS version flag. Authored by Apple: Michael Parkin-White Ref T96261 Reviewed By: fclem Maniphest Tasks: T96261 Differential Revision: https://developer.blender.org/D17181 =================================================================== M source/blender/gpu/metal/mtl_command_buffer.mm =================================================================== diff --git a/source/blender/gpu/metal/mtl_command_buffer.mm b/source/blender/gpu/metal/mtl_command_buffer.mm index 61b8edda93e..8d295bb0c05 100644 --- a/source/blender/gpu/metal/mtl_command_buffer.mm +++ b/source/blender/gpu/metal/mtl_command_buffer.mm @@ -57,17 +57,22 @@ id<MTLCommandBuffer> MTLCommandBufferManager::ensure_begin() BLI_assert(MTLCommandBufferManager::num_active_cmd_bufs < GHOST_ContextCGL::max_command_buffer_count); - if (G.debug & G_DEBUG_GPU) { - /* Debug: Enable Advanced Errors for GPU work execution. */ - MTLCommandBufferDescriptor *desc = [[MTLCommandBufferDescriptor alloc] init]; - desc.errorOptions = MTLCommandBufferErrorOptionEncoderExecutionStatus; - desc.retainedReferences = YES; - BLI_assert(context_.queue != nil); - active_command_buffer_ = [context_.queue commandBufferWithDescriptor:desc]; + if (@available(macos 11.0, *)) { + if (G.debug & G_DEBUG_GPU) { + /* Debug: Enable Advanced Errors for GPU work execution. */ + MTLCommandBufferDescriptor *desc = [[MTLCommandBufferDescriptor alloc] init]; + desc.errorOptions = MTLCommandBufferErrorOptionEncoderExecutionStatus; + desc.retainedReferences = YES; + BLI_assert(context_.queue != nil); + active_command_buffer_ = [context_.queue commandBufferWithDescriptor:desc]; + } } - else { + + /* Ensure command buffer is created if debug command buffer unavailable. */ + if (active_command_buffer_ == nil) { active_command_buffer_ = [context_.queue commandBuffer]; } + [active_command_buffer_ retain]; MTLCommandBufferManager::num_active_cmd_bufs++; @@ -164,20 +169,22 @@ bool MTLCommandBufferManager::submit(bool wait) /* Command buffer execution debugging can return an error message if * execution has failed or encountered GPU-side errors. */ - if (G.debug & G_DEBUG_GPU) { + if (@available(macos 11.0, *)) { + if (G.debug & G_DEBUG_GPU) { - NSError *error = [active_command_buffer_ error]; - if (error != nil) { - NSLog(@"%@", error); - BLI_assert(false); + NSError *error = [active_command_buffer_ error]; + if (error != nil) { + NSLog(@"%@", error); + BLI_assert(false); - @autoreleasepool { - const char *stringAsChar = [[NSString stringWithFormat:@"%@", error] UTF8String]; + @autoreleasepool { + const char *stringAsChar = [[NSString stringWithFormat:@"%@", error] UTF8String]; - std::ofstream outfile; - outfile.open("command_buffer_error.txt", std::fstream::out | std::fstream::app); - outfile << stringAsChar; - outfile.close(); + std::ofstream outfile; + outfile.open("command_buffer_error.txt", std::fstream::out | std::fstream::app); + outfile << stringAsChar; + outfile.close(); + } } } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs