blob: a6966f428cc086376164aa7c6fed19a4b0f51426 [file] [log] [blame]
/*
* MVKCommandTypePools.def
*
* Copyright (c) 2015-2021 The Brenwill Workshop Ltd. (http://www.brenwill.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// To use this file, define a macro MVK_CMD_TYPE_POOL(cmdType), then #include this file.
// If the last entry needs to be different (for example to avoid a dangling ',' at the
// end of an initializer list, also define a macro MVK_CMD_TYPE_POOL_LAST(cmdType).
// MVK_TMPLT_DECL is used to support adding a "template<>" prefix when this file is used
// to define function implementations for a concrete implementation of a class template
// To add a new command type, simply add an MVK_CMD_TYPE_POOL() line below.
// The last line in the list must be MVK_CMD_TYPE_POOL_LAST().
// If the command is a concrete implementation of a template class, include the
// MVK_TMPLT_DECL prefix.
#ifndef MVK_TMPLT_DECL
# define MVK_TMPLT_DECL
#endif
#ifndef MVK_CMD_TYPE_POOL
# error MVK_CMD_TYPE_POOL must be defined before including this file
#endif
#ifndef MVK_CMD_TYPE_POOL_LAST
# define MVK_CMD_TYPE_POOL_LAST(cmdType) MVK_CMD_TYPE_POOL(cmdType)
#endif
#define MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(cmdType, threshold) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##threshold) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##Multi)
#define MVK_CMD_TYPE_POOLS_FROM_2_THRESHOLDS(cmdType, threshold1, threshold2) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##threshold1) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##threshold2) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##Multi)
#define MVK_CMD_TYPE_POOLS_FROM_3_THRESHOLDS(cmdType, threshold1, threshold2, threshold3) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##threshold1) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##threshold2) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##threshold3) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##Multi)
#define MVK_CMD_TYPE_POOLS_FROM_5_THRESHOLDS(cmdType, \
arg1Threshold1, arg1Threshold2, \
arg2Threshold1, arg2Threshold2, arg2Threshold3) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##arg1Threshold1 ##arg2Threshold1) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##arg1Threshold1 ##arg2Threshold2) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##arg1Threshold1 ##arg2Threshold3) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##arg1Threshold1 ##Multi) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##arg1Threshold2 ##arg2Threshold1) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##arg1Threshold2 ##arg2Threshold2) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##arg1Threshold2 ##arg2Threshold3) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##arg1Threshold2 ##Multi) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##Multi ##arg2Threshold1) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##Multi ##arg2Threshold2) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##Multi ##arg2Threshold3) \
MVK_TMPLT_DECL MVK_CMD_TYPE_POOL(cmdType ##Multi ##Multi)
MVK_CMD_TYPE_POOLS_FROM_2_THRESHOLDS(PipelineBarrier, 1, 4)
MVK_CMD_TYPE_POOL(BindGraphicsPipeline)
MVK_CMD_TYPE_POOL(BindComputePipeline)
MVK_CMD_TYPE_POOLS_FROM_5_THRESHOLDS(BeginRenderPass, 1, 2, 0, 1, 2)
MVK_CMD_TYPE_POOL(NextSubpass)
MVK_CMD_TYPE_POOL(EndRenderPass)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(ExecuteCommands, 1)
MVK_CMD_TYPE_POOLS_FROM_2_THRESHOLDS(BindDescriptorSetsStatic, 1, 4)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(BindDescriptorSetsDynamic, 4)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(SetViewport, 1)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(SetScissor, 1)
MVK_CMD_TYPE_POOL(SetLineWidth)
MVK_CMD_TYPE_POOL(SetDepthBias)
MVK_CMD_TYPE_POOL(SetBlendConstants)
MVK_CMD_TYPE_POOL(SetDepthBounds)
MVK_CMD_TYPE_POOL(SetStencilCompareMask)
MVK_CMD_TYPE_POOL(SetStencilWriteMask)
MVK_CMD_TYPE_POOL(SetStencilReference)
MVK_CMD_TYPE_POOLS_FROM_2_THRESHOLDS(BindVertexBuffers, 1, 2)
MVK_CMD_TYPE_POOL(BindIndexBuffer)
MVK_CMD_TYPE_POOL(Draw)
MVK_CMD_TYPE_POOL(DrawIndexed)
MVK_CMD_TYPE_POOL(DrawIndirect)
MVK_CMD_TYPE_POOL(DrawIndexedIndirect)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(CopyImage, 1)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(BlitImage, 1)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(ResolveImage, 1)
MVK_CMD_TYPE_POOL(FillBuffer)
MVK_CMD_TYPE_POOL(UpdateBuffer)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(CopyBuffer, 1)
MVK_CMD_TYPE_POOLS_FROM_3_THRESHOLDS(BufferImageCopy, 1, 4, 8)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(ClearSingleAttachment, 1)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(ClearMultiAttachments, 1)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(ClearColorImage, 1)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(ClearDepthStencilImage, 1)
MVK_CMD_TYPE_POOL(BeginQuery)
MVK_CMD_TYPE_POOL(EndQuery)
MVK_CMD_TYPE_POOL(WriteTimestamp)
MVK_CMD_TYPE_POOL(ResetQueryPool)
MVK_CMD_TYPE_POOL(CopyQueryPoolResults)
MVK_CMD_TYPE_POOLS_FROM_2_THRESHOLDS(PushConstants, 64, 128)
MVK_CMD_TYPE_POOL(Dispatch)
MVK_CMD_TYPE_POOL(DispatchIndirect)
MVK_CMD_TYPE_POOL(PushDescriptorSet)
MVK_CMD_TYPE_POOL(PushDescriptorSetWithTemplate)
MVK_CMD_TYPE_POOL(DebugMarkerBegin)
MVK_CMD_TYPE_POOL(DebugMarkerEnd)
MVK_CMD_TYPE_POOL(DebugMarkerInsert)
MVK_CMD_TYPE_POOLS_FROM_THRESHOLD(WaitEvents, 1)
MVK_CMD_TYPE_POOL(SetEvent)
MVK_CMD_TYPE_POOL_LAST(ResetEvent)
#undef MVK_CMD_TYPE_POOL
#undef MVK_CMD_TYPE_POOL_LAST
#undef MVK_TMPLT_DECL