Don't use MTLCommandBuffer push/popDebugGroup if not available.
Log use of MTLEvent for semaphores.
This commit is contained in:
parent
bb3cdd7af4
commit
937813f48e
@ -40,6 +40,7 @@ Released TBD
|
||||
- `VkPhysicalDevicePortabilitySubsetFeaturesEXTX::events` set to `true`.
|
||||
- Always submit surface presentations using `MTLCommandBuffer`.
|
||||
`MVKConfiguration::presentWithCommandBuffer` is now obsolete.
|
||||
- Don't use `MTLCommandBuffer push/popDebugGroup` if not available.
|
||||
- Add ability to automatically cause an *Xcode* GPU capture without developer intervention.
|
||||
|
||||
|
||||
|
@ -95,3 +95,11 @@ void mvkCmdEndDebugUtilsLabel(MVKCommandBuffer* cmdBuff);
|
||||
|
||||
void mvkCmdInsertDebugUtilsLabel(MVKCommandBuffer* cmdBuff, const VkDebugUtilsLabelEXT* pLabelInfo);
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Support functions
|
||||
|
||||
void mvkPushDebugGroup(id<MTLCommandBuffer> mtlCmdBuffer, NSString* name);
|
||||
|
||||
void mvkPopDebugGroup(id<MTLCommandBuffer> mtlCmdBuffer);
|
||||
|
||||
|
@ -47,7 +47,7 @@ void MVKCmdDebugMarkerBegin::encode(MVKCommandEncoder* cmdEncoder) {
|
||||
if (mtlCmdEnc) {
|
||||
[mtlCmdEnc pushDebugGroup: _markerName];
|
||||
} else {
|
||||
[cmdEncoder->_mtlCmdBuffer pushDebugGroup: _markerName];
|
||||
mvkPushDebugGroup(cmdEncoder->_mtlCmdBuffer, _markerName);
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ void MVKCmdDebugMarkerEnd::encode(MVKCommandEncoder* cmdEncoder) {
|
||||
if (mtlCmdEnc) {
|
||||
[mtlCmdEnc popDebugGroup];
|
||||
} else {
|
||||
[cmdEncoder->_mtlCmdBuffer popDebugGroup];
|
||||
mvkPopDebugGroup(cmdEncoder->_mtlCmdBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,3 +121,18 @@ void mvkCmdInsertDebugUtilsLabel(MVKCommandBuffer* cmdBuff, const VkDebugUtilsLa
|
||||
cmdBuff->addCommand(cmd);
|
||||
}
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Support functions
|
||||
|
||||
void mvkPushDebugGroup(id<MTLCommandBuffer> mtlCmdBuffer, NSString* name) {
|
||||
if ([mtlCmdBuffer respondsToSelector: @selector(pushDebugGroup:)]) {
|
||||
[mtlCmdBuffer pushDebugGroup: name];
|
||||
}
|
||||
}
|
||||
|
||||
void mvkPopDebugGroup(id<MTLCommandBuffer> mtlCmdBuffer) {
|
||||
if ([mtlCmdBuffer respondsToSelector: @selector(popDebugGroup)]) {
|
||||
[mtlCmdBuffer popDebugGroup];
|
||||
}
|
||||
}
|
||||
|
@ -2359,6 +2359,7 @@ void MVKDevice::initPhysicalDevice(MVKPhysicalDevice* physicalDevice, const VkDe
|
||||
if (_pMetalFeatures->events) {
|
||||
MVK_SET_FROM_ENV_OR_BUILD_BOOL(_useMTLEventsForSemaphores, MVK_ALLOW_METAL_EVENTS);
|
||||
}
|
||||
MVKLogInfo("%s MTLEvent for semaphores.", _useMTLEventsForSemaphores ? "Using" : "NOT using");
|
||||
|
||||
#if MVK_MACOS
|
||||
// If we have selected a high-power GPU and want to force the window system
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "MVKQueue.h"
|
||||
#include "MVKSwapchain.h"
|
||||
#include "MVKCommandBuffer.h"
|
||||
#include "MVKCmdDebug.h"
|
||||
#include "mvk_datatypes.hpp"
|
||||
#include "MVKFoundation.h"
|
||||
#include "MVKLogging.h"
|
||||
@ -1279,9 +1280,9 @@ void MVKSwapchainImage::presentCAMetalDrawable(id<MTLCommandBuffer> mtlCmdBuff)
|
||||
_swapchain->willPresentSurface(getMTLTexture(), mtlCmdBuff);
|
||||
|
||||
NSString* scName = _swapchain->getDebugName();
|
||||
if (scName) { [mtlCmdBuff pushDebugGroup: scName]; }
|
||||
if (scName) { mvkPushDebugGroup(mtlCmdBuff, scName); }
|
||||
[mtlCmdBuff presentDrawable: getCAMetalDrawable()];
|
||||
if (scName) { [mtlCmdBuff popDebugGroup]; }
|
||||
if (scName) { mvkPopDebugGroup(mtlCmdBuff); }
|
||||
|
||||
resetMetalSurface();
|
||||
_swapchain->signalPresentationSemaphore(_swapchainIndex, mtlCmdBuff);
|
||||
|
Loading…
x
Reference in New Issue
Block a user