Rename mvkAreFlagsEnabled() & mvkAreOnlyAnyFlagsEnabled()
functions for consistency with similar functions.
This commit is contained in:
parent
74e38659aa
commit
423944d01e
@ -209,7 +209,7 @@ void MVKCmdPushConstants::encode(MVKCommandEncoder* cmdEncoder) {
|
||||
VK_SHADER_STAGE_COMPUTE_BIT
|
||||
};
|
||||
for (auto stage : stages) {
|
||||
if (mvkAreFlagsEnabled(_stageFlags, stage)) {
|
||||
if (mvkAreAllFlagsEnabled(_stageFlags, stage)) {
|
||||
cmdEncoder->getPushConstants(stage)->setPushConstants(_offset, _pushConstants);
|
||||
}
|
||||
}
|
||||
|
@ -683,8 +683,8 @@ void MVKCmdBufferImageCopy::encode(MVKCommandEncoder* cmdEncoder) {
|
||||
MTLBlitOption blitOptions = MTLBlitOptionNone;
|
||||
if (mvkMTLPixelFormatIsDepthFormat(mtlPixFmt) && mvkMTLPixelFormatIsStencilFormat(mtlPixFmt)) {
|
||||
VkImageAspectFlags imgFlags = cpyRgn.imageSubresource.aspectMask;
|
||||
bool wantDepth = mvkAreFlagsEnabled(imgFlags, VK_IMAGE_ASPECT_DEPTH_BIT);
|
||||
bool wantStencil = mvkAreFlagsEnabled(imgFlags, VK_IMAGE_ASPECT_STENCIL_BIT);
|
||||
bool wantDepth = mvkAreAllFlagsEnabled(imgFlags, VK_IMAGE_ASPECT_DEPTH_BIT);
|
||||
bool wantStencil = mvkAreAllFlagsEnabled(imgFlags, VK_IMAGE_ASPECT_STENCIL_BIT);
|
||||
|
||||
// The stencil component is always 1 byte per pixel.
|
||||
// Don't reduce depths of 32-bit depth/stencil formats.
|
||||
|
@ -42,14 +42,14 @@ VkResult MVKCommandBuffer::begin(const VkCommandBufferBeginInfo* pBeginInfo) {
|
||||
_canAcceptCommands = true;
|
||||
|
||||
VkCommandBufferUsageFlags usage = pBeginInfo->flags;
|
||||
_isReusable = !mvkAreFlagsEnabled(usage, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
|
||||
_supportsConcurrentExecution = mvkAreFlagsEnabled(usage, VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT);
|
||||
_isReusable = !mvkAreAllFlagsEnabled(usage, VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT);
|
||||
_supportsConcurrentExecution = mvkAreAllFlagsEnabled(usage, VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT);
|
||||
|
||||
// If this is a secondary command buffer, and contains inheritance info, set the inheritance info and determine
|
||||
// whether it contains render pass continuation info. Otherwise, clear the inheritance info, and ignore it.
|
||||
const VkCommandBufferInheritanceInfo* pInheritInfo = (_isSecondary ? pBeginInfo->pInheritanceInfo : NULL);
|
||||
bool hasInheritInfo = mvkSetOrClear(&_secondaryInheritanceInfo, pInheritInfo);
|
||||
_doesContinueRenderPass = mvkAreFlagsEnabled(usage, VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) && hasInheritInfo;
|
||||
_doesContinueRenderPass = mvkAreAllFlagsEnabled(usage, VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) && hasInheritInfo;
|
||||
|
||||
return getConfigurationResult();
|
||||
}
|
||||
@ -76,7 +76,7 @@ VkResult MVKCommandBuffer::reset(VkCommandBufferResetFlags flags) {
|
||||
_initialVisibilityResultMTLBuffer = nil; // not retained
|
||||
setConfigurationResult(VK_NOT_READY);
|
||||
|
||||
if (mvkAreFlagsEnabled(flags, VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(flags, VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT)) {
|
||||
// TODO: what are we releasing or returning here?
|
||||
}
|
||||
|
||||
|
@ -272,10 +272,10 @@ void MVKDepthStencilCommandEncoderState::setStencilCompareMask(VkStencilFaceFlag
|
||||
if ( !(_cmdEncoder->supportsDynamicState(VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK) &&
|
||||
mvkIsAnyFlagEnabled(faceMask, VK_STENCIL_FRONT_AND_BACK)) ) { return; }
|
||||
|
||||
if (mvkAreFlagsEnabled(faceMask, VK_STENCIL_FACE_FRONT_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(faceMask, VK_STENCIL_FACE_FRONT_BIT)) {
|
||||
_depthStencilData.frontFaceStencilData.readMask = stencilCompareMask;
|
||||
}
|
||||
if (mvkAreFlagsEnabled(faceMask, VK_STENCIL_FACE_BACK_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(faceMask, VK_STENCIL_FACE_BACK_BIT)) {
|
||||
_depthStencilData.backFaceStencilData.readMask = stencilCompareMask;
|
||||
}
|
||||
|
||||
@ -289,10 +289,10 @@ void MVKDepthStencilCommandEncoderState::setStencilWriteMask(VkStencilFaceFlags
|
||||
if ( !(_cmdEncoder->supportsDynamicState(VK_DYNAMIC_STATE_STENCIL_WRITE_MASK) &&
|
||||
mvkIsAnyFlagEnabled(faceMask, VK_STENCIL_FRONT_AND_BACK)) ) { return; }
|
||||
|
||||
if (mvkAreFlagsEnabled(faceMask, VK_STENCIL_FACE_FRONT_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(faceMask, VK_STENCIL_FACE_FRONT_BIT)) {
|
||||
_depthStencilData.frontFaceStencilData.writeMask = stencilWriteMask;
|
||||
}
|
||||
if (mvkAreFlagsEnabled(faceMask, VK_STENCIL_FACE_BACK_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(faceMask, VK_STENCIL_FACE_BACK_BIT)) {
|
||||
_depthStencilData.backFaceStencilData.writeMask = stencilWriteMask;
|
||||
}
|
||||
|
||||
@ -342,10 +342,10 @@ void MVKStencilReferenceValueCommandEncoderState::setReferenceValues(VkStencilFa
|
||||
if ( !(_cmdEncoder->supportsDynamicState(VK_DYNAMIC_STATE_STENCIL_REFERENCE) &&
|
||||
mvkIsAnyFlagEnabled(faceMask, VK_STENCIL_FRONT_AND_BACK)) ) { return; }
|
||||
|
||||
if (mvkAreFlagsEnabled(faceMask, VK_STENCIL_FACE_FRONT_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(faceMask, VK_STENCIL_FACE_FRONT_BIT)) {
|
||||
_frontFaceValue = stencilReference;
|
||||
}
|
||||
if (mvkAreFlagsEnabled(faceMask, VK_STENCIL_FACE_BACK_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(faceMask, VK_STENCIL_FACE_BACK_BIT)) {
|
||||
_backFaceValue = stencilReference;
|
||||
}
|
||||
|
||||
@ -793,7 +793,7 @@ void MVKOcclusionQueryCommandEncoderState::beginOcclusionQuery(MVKOcclusionQuery
|
||||
NSUInteger offset = pQueryPool->getVisibilityResultOffset(query);
|
||||
NSUInteger maxOffset = _cmdEncoder->_pDeviceMetalFeatures->maxQueryBufferSize - kMVKQuerySlotSizeInBytes;
|
||||
|
||||
bool shouldCount = _cmdEncoder->_pDeviceFeatures->occlusionQueryPrecise && mvkAreFlagsEnabled(flags, VK_QUERY_CONTROL_PRECISE_BIT);
|
||||
bool shouldCount = _cmdEncoder->_pDeviceFeatures->occlusionQueryPrecise && mvkAreAllFlagsEnabled(flags, VK_QUERY_CONTROL_PRECISE_BIT);
|
||||
_mtlVisibilityResultMode = shouldCount ? MTLVisibilityResultModeCounting : MTLVisibilityResultModeBoolean;
|
||||
_mtlVisibilityResultOffset = min(offset, maxOffset);
|
||||
|
||||
|
@ -33,7 +33,7 @@ using namespace std;
|
||||
|
||||
// Reset all of the command buffers
|
||||
VkResult MVKCommandPool::reset(VkCommandPoolResetFlags flags) {
|
||||
bool releaseRez = mvkAreFlagsEnabled(flags, VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT);
|
||||
bool releaseRez = mvkAreAllFlagsEnabled(flags, VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT);
|
||||
|
||||
VkCommandBufferResetFlags cmdBuffFlags = releaseRez ? VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT : 0;
|
||||
|
||||
|
@ -409,7 +409,7 @@ MVKDescriptorSetLayoutBinding::MVKDescriptorSetLayoutBinding(MVKDevice* device,
|
||||
|
||||
for (uint32_t i = kMVKShaderStageVertex; i < kMVKShaderStageMax; i++) {
|
||||
// Determine if this binding is used by this shader stage
|
||||
_applyToStage[i] = mvkAreFlagsEnabled(pBinding->stageFlags, mvkVkShaderStageFlagBitsFromMVKShaderStage(MVKShaderStage(i)));
|
||||
_applyToStage[i] = mvkAreAllFlagsEnabled(pBinding->stageFlags, mvkVkShaderStageFlagBitsFromMVKShaderStage(MVKShaderStage(i)));
|
||||
// If this binding is used by the shader, set the Metal resource index
|
||||
if (_applyToStage[i]) {
|
||||
initMetalResourceIndexOffsets(&_mtlResourceIndexOffsets.stages[i],
|
||||
|
@ -1814,7 +1814,7 @@ VkResult MVKDevice::createPipelines(VkPipelineCache pipelineCache,
|
||||
// See if this pipeline has a parent. This can come either directly
|
||||
// via basePipelineHandle or indirectly via basePipelineIndex.
|
||||
MVKPipeline* parentPL = VK_NULL_HANDLE;
|
||||
if ( mvkAreFlagsEnabled(pCreateInfo->flags, VK_PIPELINE_CREATE_DERIVATIVE_BIT) ) {
|
||||
if ( mvkAreAllFlagsEnabled(pCreateInfo->flags, VK_PIPELINE_CREATE_DERIVATIVE_BIT) ) {
|
||||
VkPipeline vkParentPL = pCreateInfo->basePipelineHandle;
|
||||
int32_t parentPLIdx = pCreateInfo->basePipelineIndex;
|
||||
if ( !vkParentPL && (parentPLIdx >= 0)) { vkParentPL = pPipelines[parentPLIdx]; }
|
||||
|
@ -163,7 +163,7 @@ VkResult MVKImage::getMemoryRequirements(VkMemoryRequirements* pMemoryRequiremen
|
||||
#endif
|
||||
#if MVK_IOS
|
||||
// Only transient attachments may use memoryless storage
|
||||
if (!mvkAreFlagsEnabled(_usage, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) ) {
|
||||
if (!mvkAreAllFlagsEnabled(_usage, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) ) {
|
||||
mvkDisableFlag(pMemoryRequirements->memoryTypeBits, _device->getPhysicalDevice()->getLazilyAllocatedMemoryTypes());
|
||||
}
|
||||
#endif
|
||||
@ -373,7 +373,7 @@ VkResult MVKImage::useIOSurface(IOSurfaceRef ioSurface) {
|
||||
}
|
||||
|
||||
MTLTextureUsage MVKImage::getMTLTextureUsage() {
|
||||
|
||||
|
||||
MTLTextureUsage usage = mvkMTLTextureUsageFromVkImageUsageFlags(_usage);
|
||||
|
||||
// Remove view usage from D/S if Metal doesn't support it
|
||||
@ -389,7 +389,7 @@ MTLTextureUsage MVKImage::getMTLTextureUsage() {
|
||||
// MTLTextureUsageRenderTarget.
|
||||
VkFormatProperties props;
|
||||
_device->getPhysicalDevice()->getFormatProperties(getVkFormat(), &props);
|
||||
if (!mvkAreFlagsEnabled(_isLinear ? props.linearTilingFeatures : props.optimalTilingFeatures, VK_FORMAT_FEATURE_BLIT_DST_BIT) &&
|
||||
if (!mvkAreAllFlagsEnabled(_isLinear ? props.linearTilingFeatures : props.optimalTilingFeatures, VK_FORMAT_FEATURE_BLIT_DST_BIT) &&
|
||||
!mvkIsAnyFlagEnabled(_usage, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT|VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)) {
|
||||
mvkDisableFlag(usage, MTLTextureUsageRenderTarget);
|
||||
}
|
||||
@ -578,8 +578,8 @@ MVKImage::MVKImage(MVKDevice* device, const VkImageCreateInfo* pCreateInfo) : MV
|
||||
_usage = pCreateInfo->usage;
|
||||
|
||||
_is3DCompressed = (pCreateInfo->imageType == VK_IMAGE_TYPE_3D) && (mvkFormatTypeFromVkFormat(pCreateInfo->format) == kMVKFormatCompressed);
|
||||
_isDepthStencilAttachment = (mvkAreFlagsEnabled(pCreateInfo->usage, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) ||
|
||||
mvkAreFlagsEnabled(mvkVkFormatProperties(pCreateInfo->format).optimalTilingFeatures, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT));
|
||||
_isDepthStencilAttachment = (mvkAreAllFlagsEnabled(pCreateInfo->usage, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) ||
|
||||
mvkAreAllFlagsEnabled(mvkVkFormatProperties(pCreateInfo->format).optimalTilingFeatures, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT));
|
||||
_canSupportMTLTextureView = !_isDepthStencilAttachment || _device->_pMetalFeatures->stencilViews;
|
||||
_hasExpectedTexelSize = (mvkMTLPixelFormatBytesPerBlock(_mtlPixelFormat) == mvkVkFormatBytesPerBlock(pCreateInfo->format));
|
||||
|
||||
@ -889,7 +889,7 @@ void MVKImageView::validateImageViewConfig(const VkImageViewCreateInfo* pCreateI
|
||||
if (pCreateInfo->subresourceRange.layerCount != image->_extent.depth) {
|
||||
reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImageView(): Metal does not fully support views on a subset of a 3D texture.");
|
||||
}
|
||||
if (!mvkAreFlagsEnabled(_usage, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)) {
|
||||
if (!mvkAreAllFlagsEnabled(_usage, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)) {
|
||||
setConfigurationResult(reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImageView(): 2D views on 3D images are only supported for color attachments."));
|
||||
} else if (mvkIsAnyFlagEnabled(_usage, ~VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)) {
|
||||
reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImageView(): 2D views on 3D images are only supported for color attachments.");
|
||||
|
@ -1309,7 +1309,7 @@ MVKComputePipeline::MVKComputePipeline(MVKDevice* device,
|
||||
MVKMTLFunction MVKComputePipeline::getMTLFunction(const VkComputePipelineCreateInfo* pCreateInfo) {
|
||||
|
||||
const VkPipelineShaderStageCreateInfo* pSS = &pCreateInfo->stage;
|
||||
if ( !mvkAreFlagsEnabled(pSS->stage, VK_SHADER_STAGE_COMPUTE_BIT) ) { return MVKMTLFunctionNull; }
|
||||
if ( !mvkAreAllFlagsEnabled(pSS->stage, VK_SHADER_STAGE_COMPUTE_BIT) ) { return MVKMTLFunctionNull; }
|
||||
|
||||
SPIRVToMSLConversionConfiguration shaderContext;
|
||||
shaderContext.options.entryPointName = pCreateInfo->stage.pName;
|
||||
|
@ -71,7 +71,7 @@ VkResult MVKQueryPool::getResults(uint32_t firstQuery,
|
||||
|
||||
uint32_t endQuery = firstQuery + queryCount;
|
||||
|
||||
if (mvkAreFlagsEnabled(flags, VK_QUERY_RESULT_WAIT_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(flags, VK_QUERY_RESULT_WAIT_BIT)) {
|
||||
_availabilityBlocker.wait(lock, [this, firstQuery, endQuery]{
|
||||
return areQueriesHostAvailable(firstQuery, endQuery);
|
||||
});
|
||||
@ -104,14 +104,14 @@ bool MVKQueryPool::areQueriesHostAvailable(uint32_t firstQuery, uint32_t endQuer
|
||||
VkResult MVKQueryPool::getResult(uint32_t query, void* pQryData, VkQueryResultFlags flags) {
|
||||
|
||||
bool isAvailable = _availability[query] == Available;
|
||||
bool shouldOutput = (isAvailable || mvkAreFlagsEnabled(flags, VK_QUERY_RESULT_PARTIAL_BIT));
|
||||
bool shouldOutput64Bit = mvkAreFlagsEnabled(flags, VK_QUERY_RESULT_64_BIT);
|
||||
bool shouldOutput = (isAvailable || mvkAreAllFlagsEnabled(flags, VK_QUERY_RESULT_PARTIAL_BIT));
|
||||
bool shouldOutput64Bit = mvkAreAllFlagsEnabled(flags, VK_QUERY_RESULT_64_BIT);
|
||||
|
||||
// Output the results of this query
|
||||
if (shouldOutput) { getResult(query, pQryData, shouldOutput64Bit); }
|
||||
|
||||
// If requested, output the availability bit
|
||||
if (mvkAreFlagsEnabled(flags, VK_QUERY_RESULT_WITH_AVAILABILITY_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(flags, VK_QUERY_RESULT_WITH_AVAILABILITY_BIT)) {
|
||||
if (shouldOutput64Bit) {
|
||||
uintptr_t pAvailability = (uintptr_t)pQryData + (_queryElementCount * sizeof(uint64_t));
|
||||
*(uint64_t*)pAvailability = isAvailable;
|
||||
|
@ -268,7 +268,7 @@ void MVKSwapchain::initSurfaceImages(const VkSwapchainCreateInfoKHR* pCreateInfo
|
||||
.flags = 0,
|
||||
};
|
||||
|
||||
if (mvkAreFlagsEnabled(pCreateInfo->flags, VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR)) {
|
||||
if (mvkAreAllFlagsEnabled(pCreateInfo->flags, VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR)) {
|
||||
mvkEnableFlag(imgInfo.flags, VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT);
|
||||
}
|
||||
|
||||
|
@ -197,7 +197,7 @@ public:
|
||||
#pragma mark Construction
|
||||
|
||||
MVKFence(MVKDevice* device, const VkFenceCreateInfo* pCreateInfo) :
|
||||
MVKVulkanAPIDeviceObject(device), _isSignaled(mvkAreFlagsEnabled(pCreateInfo->flags, VK_FENCE_CREATE_SIGNALED_BIT)) {}
|
||||
MVKVulkanAPIDeviceObject(device), _isSignaled(mvkAreAllFlagsEnabled(pCreateInfo->flags, VK_FENCE_CREATE_SIGNALED_BIT)) {}
|
||||
|
||||
protected:
|
||||
void propogateDebugName() override {}
|
||||
|
@ -472,19 +472,19 @@ void mvkEnableFlag(T1& value, const T2 bitMask) { value |= bitMask; }
|
||||
template<typename T1, typename T2>
|
||||
void mvkDisableFlag(T1& value, const T2 bitMask) { value &= ~bitMask; }
|
||||
|
||||
/** Returns whether the specified value has ALL of the flags specified in bitMask enabled (set to 1). */
|
||||
template<typename T1, typename T2>
|
||||
bool mvkAreFlagsEnabled(T1 value, const T2 bitMask) { return ((value & bitMask) == bitMask); }
|
||||
|
||||
/** Returns whether the specified value has ANY of the flags specified in bitMask enabled (set to 1). */
|
||||
template<typename T1, typename T2>
|
||||
bool mvkIsAnyFlagEnabled(T1 value, const T2 bitMask) { return !!(value & bitMask); }
|
||||
|
||||
/** Returns whether the specified value has ALL of the flags specified in bitMask enabled (set to 1). */
|
||||
template<typename T1, typename T2>
|
||||
bool mvkAreAllFlagsEnabled(T1 value, const T2 bitMask) { return ((value & bitMask) == bitMask); }
|
||||
|
||||
/** Returns whether the specified value has ONLY one or more of the flags specified in bitMask enabled (set to 1), and none others. */
|
||||
template<typename T1, typename T2>
|
||||
bool mvkIsOnlyAnyFlagEnabled(T1 value, const T2 bitMask) { return (mvkIsAnyFlagEnabled(value, bitMask) && ((value | bitMask) == bitMask)); }
|
||||
|
||||
/** Returns whether the specified value has ONLY ALL of the flags specified in bitMask enabled (set to 1), and none others. */
|
||||
template<typename T1, typename T2>
|
||||
bool mvkAreOnlyAllFlagsEnabled(T1 value, const T2 bitMask) { return (value == bitMask); }
|
||||
|
||||
/** Returns whether the specified value has ONLY one or more of the flags specified in bitMask enabled (set to 1), and none others. */
|
||||
template<typename T1, typename T2>
|
||||
bool mvkAreOnlyAnyFlagsEnabled(T1 value, const T2 bitMask) { return (mvkIsAnyFlagEnabled(value, bitMask) && ((value | bitMask) == bitMask)); }
|
||||
|
||||
|
@ -876,12 +876,12 @@ MVK_PUBLIC_SYMBOL MTLTextureUsage mvkMTLTextureUsageFromVkImageUsageFlags(VkImag
|
||||
MVK_PUBLIC_SYMBOL VkImageUsageFlags mvkVkImageUsageFlagsFromMTLTextureUsage(MTLTextureUsage mtlUsage, MTLPixelFormat mtlFormat) {
|
||||
VkImageUsageFlags vkImageUsageFlags = 0;
|
||||
|
||||
if ( mvkAreFlagsEnabled(mtlUsage, MTLTextureUsageShaderRead) ) {
|
||||
if ( mvkAreAllFlagsEnabled(mtlUsage, MTLTextureUsageShaderRead) ) {
|
||||
mvkEnableFlag(vkImageUsageFlags, VK_IMAGE_USAGE_TRANSFER_SRC_BIT);
|
||||
mvkEnableFlag(vkImageUsageFlags, VK_IMAGE_USAGE_SAMPLED_BIT);
|
||||
mvkEnableFlag(vkImageUsageFlags, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT);
|
||||
}
|
||||
if ( mvkAreFlagsEnabled(mtlUsage, MTLTextureUsageRenderTarget) ) {
|
||||
if ( mvkAreAllFlagsEnabled(mtlUsage, MTLTextureUsageRenderTarget) ) {
|
||||
mvkEnableFlag(vkImageUsageFlags, VK_IMAGE_USAGE_TRANSFER_DST_BIT);
|
||||
if (mvkMTLPixelFormatIsDepthFormat(mtlFormat) || mvkMTLPixelFormatIsStencilFormat(mtlFormat)) {
|
||||
mvkEnableFlag(vkImageUsageFlags, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT);
|
||||
@ -889,7 +889,7 @@ MVK_PUBLIC_SYMBOL VkImageUsageFlags mvkVkImageUsageFlagsFromMTLTextureUsage(MTLT
|
||||
mvkEnableFlag(vkImageUsageFlags, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
|
||||
}
|
||||
}
|
||||
if ( mvkAreFlagsEnabled(mtlUsage, MTLTextureUsageShaderWrite) ) {
|
||||
if ( mvkAreAllFlagsEnabled(mtlUsage, MTLTextureUsageShaderWrite) ) {
|
||||
mvkEnableFlag(vkImageUsageFlags, VK_IMAGE_USAGE_STORAGE_BIT);
|
||||
}
|
||||
|
||||
@ -1005,10 +1005,10 @@ MVK_PUBLIC_SYMBOL MTLSamplerMipFilter mvkMTLSamplerMipFilterFromVkSamplerMipmapM
|
||||
|
||||
MVK_PUBLIC_SYMBOL MTLColorWriteMask mvkMTLColorWriteMaskFromVkChannelFlags(VkColorComponentFlags vkWriteFlags) {
|
||||
MTLColorWriteMask mtlWriteMask = MTLColorWriteMaskNone;
|
||||
if (mvkAreFlagsEnabled(vkWriteFlags, VK_COLOR_COMPONENT_R_BIT)) { mvkEnableFlag(mtlWriteMask, MTLColorWriteMaskRed); }
|
||||
if (mvkAreFlagsEnabled(vkWriteFlags, VK_COLOR_COMPONENT_G_BIT)) { mvkEnableFlag(mtlWriteMask, MTLColorWriteMaskGreen); }
|
||||
if (mvkAreFlagsEnabled(vkWriteFlags, VK_COLOR_COMPONENT_B_BIT)) { mvkEnableFlag(mtlWriteMask, MTLColorWriteMaskBlue); }
|
||||
if (mvkAreFlagsEnabled(vkWriteFlags, VK_COLOR_COMPONENT_A_BIT)) { mvkEnableFlag(mtlWriteMask, MTLColorWriteMaskAlpha); }
|
||||
if (mvkAreAllFlagsEnabled(vkWriteFlags, VK_COLOR_COMPONENT_R_BIT)) { mvkEnableFlag(mtlWriteMask, MTLColorWriteMaskRed); }
|
||||
if (mvkAreAllFlagsEnabled(vkWriteFlags, VK_COLOR_COMPONENT_G_BIT)) { mvkEnableFlag(mtlWriteMask, MTLColorWriteMaskGreen); }
|
||||
if (mvkAreAllFlagsEnabled(vkWriteFlags, VK_COLOR_COMPONENT_B_BIT)) { mvkEnableFlag(mtlWriteMask, MTLColorWriteMaskBlue); }
|
||||
if (mvkAreAllFlagsEnabled(vkWriteFlags, VK_COLOR_COMPONENT_A_BIT)) { mvkEnableFlag(mtlWriteMask, MTLColorWriteMaskAlpha); }
|
||||
return mtlWriteMask;
|
||||
}
|
||||
|
||||
@ -1327,14 +1327,14 @@ MVK_PUBLIC_SYMBOL MTLRenderStages mvkMTLRenderStagesFromVkPipelineStageFlags(VkP
|
||||
// barrier is to be placed before the render stages, it should come before the vertex stage, otherwise
|
||||
// if the barrier is to be placed after the render stages, it should come after the fragment stage.
|
||||
if (placeBarrierBefore) {
|
||||
bool placeBeforeFragment = mvkAreOnlyAnyFlagsEnabled(vkStages, (VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT |
|
||||
bool placeBeforeFragment = mvkIsOnlyAnyFlagEnabled(vkStages, (VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT |
|
||||
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT |
|
||||
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT |
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT |
|
||||
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT));
|
||||
return placeBeforeFragment ? MTLRenderStageFragment : MTLRenderStageVertex;
|
||||
} else {
|
||||
bool placeAfterVertex = mvkAreOnlyAnyFlagsEnabled(vkStages, (VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT |
|
||||
bool placeAfterVertex = mvkIsOnlyAnyFlagEnabled(vkStages, (VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT |
|
||||
VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT |
|
||||
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT |
|
||||
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT |
|
||||
@ -1367,10 +1367,10 @@ MVK_PUBLIC_SYMBOL MTLBarrierScope mvkMTLBarrierScopeFromVkAccessFlags(VkAccessFl
|
||||
MVK_PUBLIC_SYMBOL MTLStorageMode mvkMTLStorageModeFromVkMemoryPropertyFlags(VkMemoryPropertyFlags vkFlags) {
|
||||
|
||||
// If not visible to the host: Private
|
||||
if ( !mvkAreFlagsEnabled(vkFlags, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) ) {
|
||||
if ( !mvkAreAllFlagsEnabled(vkFlags, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) ) {
|
||||
#if MVK_IOS
|
||||
// iOS: If lazily allocated, Memoryless
|
||||
if (mvkAreFlagsEnabled(vkFlags, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(vkFlags, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)) {
|
||||
return MTLStorageModeMemoryless;
|
||||
}
|
||||
#endif
|
||||
@ -1378,7 +1378,7 @@ MVK_PUBLIC_SYMBOL MTLStorageMode mvkMTLStorageModeFromVkMemoryPropertyFlags(VkMe
|
||||
}
|
||||
|
||||
// If visible to the host and coherent: Shared
|
||||
if (mvkAreFlagsEnabled(vkFlags, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) {
|
||||
if (mvkAreAllFlagsEnabled(vkFlags, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) {
|
||||
return MTLStorageModeShared;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user