aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCourtney Goeltzenleuchter <courtney@LunarG.com>2015-09-21 11:44:06 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-09-23 11:15:00 -0600
commitd6217bc20873a7d70537921e7cea9be5572bc34c (patch)
tree664d46e71fd454671fb7e68f4603da3c841e0745
parent4cbf78b9e52a0e2dd3e13eccc137bb39ba8000c9 (diff)
downloadusermoji-d6217bc20873a7d70537921e7cea9be5572bc34c.tar.xz
bug 14365: make separate viewport and scissor cmds
-rw-r--r--demos/cube.c3
-rw-r--r--demos/tri.c3
-rw-r--r--icd/nulldrv/nulldrv.c7
-rw-r--r--include/vk_layer.h1
-rw-r--r--include/vulkan.h11
-rw-r--r--layers/device_limits.cpp20
-rw-r--r--layers/draw_state.cpp44
-rw-r--r--layers/draw_state.h2
-rw-r--r--layers/mem_tracker.cpp25
-rw-r--r--layers/param_checker.cpp11
-rw-r--r--loader/gpa_helper.h2
-rw-r--r--loader/table_ops.h3
-rw-r--r--loader/trampoline.c13
-rwxr-xr-xvulkan.py8
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)
diff --git a/vulkan.py b/vulkan.py
index e508d01a..880a1079 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -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",