| /* |
| * MVKCommandTypePools.def |
| * |
| * Copyright (c) 2015-2022 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_3_THRESHOLDS(BeginRendering, 1, 2, 4) |
| MVK_CMD_TYPE_POOL(EndRendering) |
| MVK_CMD_TYPE_POOL(SetSampleLocations) |
| 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 |