diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-09-21 11:44:06 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-09-23 11:15:00 -0600 |
| commit | d6217bc20873a7d70537921e7cea9be5572bc34c (patch) | |
| tree | 664d46e71fd454671fb7e68f4603da3c841e0745 | |
| parent | 4cbf78b9e52a0e2dd3e13eccc137bb39ba8000c9 (diff) | |
| download | usermoji-d6217bc20873a7d70537921e7cea9be5572bc34c.tar.xz | |
bug 14365: make separate viewport and scissor cmds
| -rw-r--r-- | demos/cube.c | 3 | ||||
| -rw-r--r-- | demos/tri.c | 3 | ||||
| -rw-r--r-- | icd/nulldrv/nulldrv.c | 7 | ||||
| -rw-r--r-- | include/vk_layer.h | 1 | ||||
| -rw-r--r-- | include/vulkan.h | 11 | ||||
| -rw-r--r-- | layers/device_limits.cpp | 20 | ||||
| -rw-r--r-- | layers/draw_state.cpp | 44 | ||||
| -rw-r--r-- | layers/draw_state.h | 2 | ||||
| -rw-r--r-- | layers/mem_tracker.cpp | 25 | ||||
| -rw-r--r-- | layers/param_checker.cpp | 11 | ||||
| -rw-r--r-- | loader/gpa_helper.h | 2 | ||||
| -rw-r--r-- | loader/table_ops.h | 3 | ||||
| -rw-r--r-- | loader/trampoline.c | 13 | ||||
| -rwxr-xr-x | vulkan.py | 8 |
14 files changed, 126 insertions, 27 deletions
diff --git a/demos/cube.c b/demos/cube.c index 77d27147..aba53488 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -548,6 +548,7 @@ static void demo_draw_build_cmd(struct demo *demo, VkCmdBuffer cmd_buf) viewport.width = (float) demo->width; viewport.minDepth = (float) 0.0f; viewport.maxDepth = (float) 1.0f; + vkCmdSetViewport(cmd_buf, 1, &viewport); VkRect2D scissor; memset(&scissor, 0, sizeof(scissor)); @@ -555,7 +556,7 @@ static void demo_draw_build_cmd(struct demo *demo, VkCmdBuffer cmd_buf) scissor.extent.height = demo->height; scissor.offset.x = 0; scissor.offset.y = 0; - vkCmdSetViewport(cmd_buf, 1, &viewport, &scissor); + vkCmdSetScissor(cmd_buf, 1, &scissor); vkCmdSetLineWidth(cmd_buf, 1.0); vkCmdSetDepthBias(cmd_buf, 0.0f, 0.0f, 0.0f); diff --git a/demos/tri.c b/demos/tri.c index cc13b825..f64c8242 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -391,6 +391,7 @@ static void demo_draw_build_cmd(struct demo *demo) viewport.width = (float) demo->width; viewport.minDepth = (float) 0.0f; viewport.maxDepth = (float) 1.0f; + vkCmdSetViewport(demo->draw_cmd, 1, &viewport); VkRect2D scissor; memset(&scissor, 0, sizeof(scissor)); @@ -398,7 +399,7 @@ static void demo_draw_build_cmd(struct demo *demo) scissor.extent.height = demo->height; scissor.offset.x = 0; scissor.offset.y = 0; - vkCmdSetViewport(demo->draw_cmd, 1, &viewport, &scissor); + vkCmdSetScissor(demo->draw_cmd, 1, &scissor); vkCmdSetLineWidth(demo->draw_cmd, 1.0); vkCmdSetDepthBias(demo->draw_cmd, 0.0f, 0.0f, 0.0f); diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c index f6fbe164..828c4272 100644 --- a/icd/nulldrv/nulldrv.c +++ b/icd/nulldrv/nulldrv.c @@ -1077,7 +1077,12 @@ ICD_EXPORT void VKAPI vkCmdBindPipeline( NULLDRV_LOG_FUNC; } -ICD_EXPORT void VKAPI vkCmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportAndScissorCount, const VkViewport* pViewports, const VkRect2D* pScissors) +ICD_EXPORT void VKAPI vkCmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) +{ + NULLDRV_LOG_FUNC; +} + +ICD_EXPORT void VKAPI vkCmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors) { NULLDRV_LOG_FUNC; } diff --git a/include/vk_layer.h b/include/vk_layer.h index 28e3f788..82b66ffc 100644 --- a/include/vk_layer.h +++ b/include/vk_layer.h @@ -118,6 +118,7 @@ typedef struct VkLayerDispatchTable_ PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers; PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer; PFN_vkCmdSetViewport CmdSetViewport; + PFN_vkCmdSetScissor CmdSetScissor; PFN_vkCmdSetLineWidth CmdSetLineWidth; PFN_vkCmdSetDepthBias CmdSetDepthBias; PFN_vkCmdSetBlendConstants CmdSetBlendConstants; diff --git a/include/vulkan.h b/include/vulkan.h index 5c0052d9..2a1e06d4 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -2158,7 +2158,8 @@ typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCmdBuffer cmdBuffer, const typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCmdBuffer cmdBuffer); typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags); typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); -typedef void (VKAPI *PFN_vkCmdSetViewport)(VkCmdBuffer cmdBuffer, uint32_t viewportAndScissorCount, const VkViewport* pViewports, const VkRect2D* pScissors); +typedef void (VKAPI *PFN_vkCmdSetViewport)(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI *PFN_vkCmdSetScissor)(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors); typedef void (VKAPI *PFN_vkCmdSetLineWidth)(VkCmdBuffer cmdBuffer, float lineWidth); typedef void (VKAPI *PFN_vkCmdSetDepthBias)(VkCmdBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias); typedef void (VKAPI *PFN_vkCmdSetBlendConstants)(VkCmdBuffer cmdBuffer, const float blendConst[4]); @@ -2700,8 +2701,12 @@ void VKAPI vkCmdBindPipeline( void VKAPI vkCmdSetViewport( VkCmdBuffer cmdBuffer, - uint32_t viewportAndScissorCount, - const VkViewport* pViewports, + uint32_t viewportCount, + const VkViewport* pViewports); + +void VKAPI vkCmdSetScissor( + VkCmdBuffer cmdBuffer, + uint32_t scissorCount, const VkRect2D* pScissors); void VKAPI vkCmdSetLineWidth( diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp index 33c4250e..30e57d44 100644 --- a/layers/device_limits.cpp +++ b/layers/device_limits.cpp @@ -299,14 +299,26 @@ VK_LAYER_EXPORT VkResult VKAPI vkGetPhysicalDeviceSparseImageFormatProperties(Vk VK_LAYER_EXPORT void VKAPI vkCmdSetViewport( VkCmdBuffer cmdBuffer, - uint32_t viewportAndScissorCount, - const VkViewport* pViewports, + uint32_t viewportCount, + const VkViewport* pViewports) +{ + VkBool32 skipCall = VK_FALSE; + /* TODO: Verify viewportCount < maxViewports from VkPhysicalDeviceLimits */ + if (VK_FALSE == skipCall) { + get_dispatch_table(device_limits_device_table_map, cmdBuffer)->CmdSetViewport(cmdBuffer, viewportCount, pViewports); + } +} + +VK_LAYER_EXPORT void VKAPI vkCmdSetScissor( + VkCmdBuffer cmdBuffer, + uint32_t scissorCount, const VkRect2D* pScissors) { VkBool32 skipCall = VK_FALSE; - /* TODO: Verify viewportAndScissorCount < maxViewports from VkPhysicalDeviceLimits */ + /* TODO: Verify scissorCount < maxViewports from VkPhysicalDeviceLimits */ + /* TODO: viewportCount and scissorCount must match at draw time */ if (VK_FALSE == skipCall) { - get_dispatch_table(device_limits_device_table_map, cmdBuffer)->CmdSetViewport(cmdBuffer, viewportAndScissorCount, pViewports, pScissors); + get_dispatch_table(device_limits_device_table_map, cmdBuffer)->CmdSetScissor(cmdBuffer, scissorCount, pScissors); } } diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index b5035c0f..f6b6a6d2 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -1969,9 +1969,8 @@ VK_LAYER_EXPORT void VKAPI vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBi VK_LAYER_EXPORT void VKAPI vkCmdSetViewport( VkCmdBuffer cmdBuffer, - uint32_t viewportAndScissorCount, - const VkViewport* pViewports, - const VkRect2D* pScissors) + uint32_t viewportCount, + const VkViewport* pViewports) { VkBool32 skipCall = VK_FALSE; GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer); @@ -1985,17 +1984,43 @@ VK_LAYER_EXPORT void VKAPI vkCmdSetViewport( } loader_platform_thread_lock_mutex(&globalLock); pCB->status |= CBSTATUS_VIEWPORT_SET; - pCB->viewports.resize(viewportAndScissorCount); - memcpy(pCB->viewports.data(), pViewports, viewportAndScissorCount); - pCB->scissors.resize(viewportAndScissorCount); - memcpy(pCB->scissors.data(), pScissors, viewportAndScissorCount); + pCB->viewports.resize(viewportCount); + memcpy(pCB->viewports.data(), pViewports, viewportCount); loader_platform_thread_unlock_mutex(&globalLock); } else { skipCall |= report_error_no_cb_begin(cmdBuffer, "vkCmdSetViewport()"); } } if (VK_FALSE == skipCall) - get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdSetViewport(cmdBuffer, viewportAndScissorCount, pViewports, pScissors); + get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdSetViewport(cmdBuffer, viewportCount, pViewports); +} + +VK_LAYER_EXPORT void VKAPI vkCmdSetScissor( + VkCmdBuffer cmdBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors) +{ + VkBool32 skipCall = VK_FALSE; + GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer); + if (pCB) { + if (pCB->state == CB_UPDATE_ACTIVE) { + updateCBTracking(cmdBuffer); + skipCall |= addCmd(pCB, CMD_SETSCISSORSTATE); + if (!pCB->activeRenderPass) { + skipCall |= log_msg(mdd(pCB->cmdBuffer), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType) 0, 0, 0, DRAWSTATE_NO_ACTIVE_RENDERPASS, "DS", + "Incorrect call to vkCmdSetScissor() without an active RenderPass."); + } + loader_platform_thread_lock_mutex(&globalLock); + pCB->status |= CBSTATUS_SCISSOR_SET; + pCB->scissors.resize(scissorCount); + memcpy(pCB->scissors.data(), pScissors, scissorCount); + loader_platform_thread_unlock_mutex(&globalLock); + } else { + skipCall |= report_error_no_cb_begin(cmdBuffer, "vkCmdSetScissor()"); + } + } + if (VK_FALSE == skipCall) + get_dispatch_table(draw_state_device_table_map, cmdBuffer)->CmdSetScissor(cmdBuffer, scissorCount, pScissors); } VK_LAYER_EXPORT void VKAPI vkCmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth) @@ -2307,6 +2332,7 @@ VK_LAYER_EXPORT void VKAPI vkCmdDraw(VkCmdBuffer cmdBuffer, uint32_t firstVertex if (pCB->state == CB_UPDATE_ACTIVE) { pCB->drawCount[DRAW]++; skipCall |= validate_draw_state(pCB, VK_FALSE); + /* TODO: Check that scissor and viewport counts are the same */ // TODO : Need to pass cmdBuffer as srcObj here skipCall |= log_msg(mdd(cmdBuffer), VK_DBG_REPORT_INFO_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, 0, 0, DRAWSTATE_NONE, "DS", "vkCmdDraw() call #%lu, reporting DS state:", g_drawCount[DRAW]++); @@ -3179,6 +3205,8 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(VkDevice dev, const return (PFN_vkVoidFunction) vkCmdBindPipeline; if (!strcmp(funcName, "vkCmdSetViewport")) return (PFN_vkVoidFunction) vkCmdSetViewport; + if (!strcmp(funcName, "vkCmdSetScissor")) + return (PFN_vkVoidFunction) vkCmdSetScissor; if (!strcmp(funcName, "vkCmdSetLineWidth")) return (PFN_vkVoidFunction) vkCmdSetLineWidth; if (!strcmp(funcName, "vkCmdSetDepthBias")) diff --git a/layers/draw_state.h b/layers/draw_state.h index 4edea80f..ecd9486b 100644 --- a/layers/draw_state.h +++ b/layers/draw_state.h @@ -167,6 +167,7 @@ typedef enum _CMD_TYPE CMD_BINDPIPELINE, CMD_BINDPIPELINEDELTA, CMD_SETVIEWPORTSTATE, + CMD_SETSCISSORSTATE, CMD_SETLINEWIDTHSTATE, CMD_SETDEPTHBIASSTATE, CMD_SETBLENDSTATE, @@ -243,6 +244,7 @@ typedef enum _CBStatusFlagBits CBSTATUS_STENCIL_WRITE_MASK_SET = 0x00000200, // Stencil write mask has been set CBSTATUS_STENCIL_REFERENCE_SET = 0x00000400, // Stencil reference has been set CBSTATUS_INDEX_BUFFER_BOUND = 0x00000800, // Index buffer has been set + CBSTATUS_SCISSOR_SET = 0x00001000, // Scissor has been set } CBStatusFlagBits; typedef struct stencil_data { diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index 80df8387..36574f60 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -2237,8 +2237,25 @@ VK_LAYER_EXPORT void VKAPI vkCmdBindPipeline( VK_LAYER_EXPORT void VKAPI vkCmdSetViewport( VkCmdBuffer cmdBuffer, - uint32_t viewportAndScissorCount, - const VkViewport* pViewports, + uint32_t viewportCount, + const VkViewport* pViewports) +{ + VkBool32 skipCall = VK_FALSE; + loader_platform_thread_lock_mutex(&globalLock); + MT_CB_INFO *pCmdBuf = get_cmd_buf_info(cmdBuffer); + if (!pCmdBuf) { + skipCall = log_msg(mdd(cmdBuffer), VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_COMMAND_BUFFER, (uint64_t)cmdBuffer, 0, + MEMTRACK_INVALID_CB, "MEM", "Unable to find command buffer object %p, was it ever created?", (void*)cmdBuffer); + } + loader_platform_thread_unlock_mutex(&globalLock); + if (VK_FALSE == skipCall) { + get_dispatch_table(mem_tracker_device_table_map, cmdBuffer)->CmdSetViewport(cmdBuffer, viewportCount, pViewports); + } +} + +VK_LAYER_EXPORT void VKAPI vkCmdSetScissor( + VkCmdBuffer cmdBuffer, + uint32_t scissorCount, const VkRect2D* pScissors) { VkBool32 skipCall = VK_FALSE; @@ -2250,7 +2267,7 @@ VK_LAYER_EXPORT void VKAPI vkCmdSetViewport( } loader_platform_thread_unlock_mutex(&globalLock); if (VK_FALSE == skipCall) { - get_dispatch_table(mem_tracker_device_table_map, cmdBuffer)->CmdSetViewport(cmdBuffer, viewportAndScissorCount, pViewports, pScissors); + get_dispatch_table(mem_tracker_device_table_map, cmdBuffer)->CmdSetScissor(cmdBuffer, scissorCount, pScissors); } } @@ -2949,6 +2966,8 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr( return (PFN_vkVoidFunction) vkCmdBindPipeline; if (!strcmp(funcName, "vkCmdSetViewport")) return (PFN_vkVoidFunction) vkCmdSetViewport; + if (!strcmp(funcName, "vkCmdSetScissor")) + return (PFN_vkVoidFunction) vkCmdSetScissor; if (!strcmp(funcName, "vkCmdSetLineWidth")) return (PFN_vkVoidFunction) vkCmdSetLineWidth; if (!strcmp(funcName, "vkCmdSetDepthBias")) diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 029d085f..2ffeefa6 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -5497,9 +5497,14 @@ VK_LAYER_EXPORT void VKAPI vkCmdBindPipeline( PostCmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline); } -VK_LAYER_EXPORT void VKAPI vkCmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportAndScissorCount, const VkViewport* pViewports, const VkRect2D* pScissors) +VK_LAYER_EXPORT void VKAPI vkCmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) { - get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetViewport(cmdBuffer, viewportAndScissorCount, pViewports, pScissors); + get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetViewport(cmdBuffer, viewportCount, pViewports); +} + +VK_LAYER_EXPORT void VKAPI vkCmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors) +{ + get_dispatch_table(pc_device_table_map, cmdBuffer)->CmdSetScissor(cmdBuffer, scissorCount, pScissors); } VK_LAYER_EXPORT void VKAPI vkCmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth) @@ -6982,6 +6987,8 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(VkDevice device, co return (PFN_vkVoidFunction) vkAllocDescriptorSets; if (!strcmp(funcName, "vkCmdSetViewport")) return (PFN_vkVoidFunction) vkCmdSetViewport; + if (!strcmp(funcName, "vkCmdSetScissor")) + return (PFN_vkVoidFunction) vkCmdSetScissor; if (!strcmp(funcName, "vkCmdSetLineWidth")) return (PFN_vkVoidFunction) vkCmdSetLineWidth; if (!strcmp(funcName, "vkCmdSetDepthBias")) diff --git a/loader/gpa_helper.h b/loader/gpa_helper.h index 212e93ea..bc5c7b60 100644 --- a/loader/gpa_helper.h +++ b/loader/gpa_helper.h @@ -235,6 +235,8 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkCmdBindPipeline; if (!strcmp(name, "CmdSetViewport")) return (void*) vkCmdSetViewport; + if (!strcmp(name, "CmdSetScissor")) + return (void*) vkCmdSetScissor; if (!strcmp(name, "CmdSetLineWidth")) return (void*) vkCmdSetLineWidth; if (!strcmp(name, "CmdSetDepthBias")) diff --git a/loader/table_ops.h b/loader/table_ops.h index 7024532f..6c732d0a 100644 --- a/loader/table_ops.h +++ b/loader/table_ops.h @@ -123,6 +123,7 @@ static inline void loader_init_device_dispatch_table(VkLayerDispatchTable *table table->ResetCommandBuffer = (PFN_vkResetCommandBuffer) gpa(dev, "vkResetCommandBuffer"); table->CmdBindPipeline = (PFN_vkCmdBindPipeline) gpa(dev, "vkCmdBindPipeline"); table->CmdSetViewport = (PFN_vkCmdSetViewport) gpa(dev, "vkCmdSetViewport"); + table->CmdSetScissor = (PFN_vkCmdSetScissor) gpa(dev, "vkCmdSetScissor"); table->CmdSetLineWidth = (PFN_vkCmdSetLineWidth) gpa(dev, "vkCmdSetLineWidth"); table->CmdSetDepthBias = (PFN_vkCmdSetDepthBias) gpa(dev, "vkCmdSetDepthBias"); table->CmdSetBlendConstants = (PFN_vkCmdSetBlendConstants) gpa(dev, "vkCmdSetBlendConstants"); @@ -360,6 +361,8 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->CmdBindPipeline; if (!strcmp(name, "CmdSetViewport")) return (void *) table->CmdSetViewport; + if (!strcmp(name, "CmdSetScissor")) + return (void *) table->CmdSetScissor; if (!strcmp(name, "CmdSetLineWidth")) return (void *) table->CmdSetLineWidth; if (!strcmp(name, "CmdSetDepthBias")) diff --git a/loader/trampoline.c b/loader/trampoline.c index bd6f43b8..5074f3b2 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -1112,13 +1112,22 @@ LOADER_EXPORT void VKAPI vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBind disp->CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline); } -LOADER_EXPORT void VKAPI vkCmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportAndScissorCount, const VkViewport* pViewports, const VkRect2D* pScissors) +LOADER_EXPORT void VKAPI vkCmdSetViewport(VkCmdBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(cmdBuffer); - disp->CmdSetViewport(cmdBuffer, viewportAndScissorCount, pViewports, pScissors); + disp->CmdSetViewport(cmdBuffer, viewportCount, pViewports); +} + +LOADER_EXPORT void VKAPI vkCmdSetScissor(VkCmdBuffer cmdBuffer, uint32_t scissorCount, const VkRect2D* pScissors) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(cmdBuffer); + + disp->CmdSetScissor(cmdBuffer, scissorCount, pScissors); } LOADER_EXPORT void VKAPI vkCmdSetLineWidth(VkCmdBuffer cmdBuffer, float lineWidth) @@ -953,8 +953,12 @@ core = Extension( Proto("void", "CmdSetViewport", [Param("VkCmdBuffer", "cmdBuffer"), - Param("uint32_t", "viewportAndScissorCount"), - Param("const VkViewport*", "pViewports"), + Param("uint32_t", "viewportCount"), + Param("const VkViewport*", "pViewports")]), + + Proto("void", "CmdSetScissor", + [Param("VkCmdBuffer", "cmdBuffer"), + Param("uint32_t", "scissorCount"), Param("const VkRect2D*", "pScissors")]), Proto("void", "CmdSetLineWidth", |
