gfxstream: guest: add VK_EXT_color_write_enable
Zink uses this extension.
BUG=349122558
TEST=run zink
Change-Id: I25de9d8eccf738f0c0687ca6e8ce829860ed5084
diff --git a/host/vulkan/VkSubDecoder.cpp b/host/vulkan/VkSubDecoder.cpp
index 215fc80..b204f42 100644
--- a/host/vulkan/VkSubDecoder.cpp
+++ b/host/vulkan/VkSubDecoder.cpp
@@ -3137,6 +3137,29 @@
break;
}
#endif
+#ifdef VK_EXT_color_write_enable
+ case OP_vkCmdSetColorWriteEnableEXT: {
+ android::base::beginTrace("vkCmdSetColorWriteEnableEXT subdecode");
+ uint32_t attachmentCount;
+ const VkBool32* pColorWriteEnables;
+ VkBool32 stack_pColorWriteEnables[MAX_STACK_ITEMS];
+ memcpy((uint32_t*)&attachmentCount, *readStreamPtrPtr, sizeof(uint32_t));
+ *readStreamPtrPtr += sizeof(uint32_t);
+ if (((attachmentCount)) <= MAX_STACK_ITEMS) {
+ pColorWriteEnables = (VkBool32*)stack_pColorWriteEnables;
+ } else {
+ readStream->alloc((void**)&pColorWriteEnables,
+ ((attachmentCount)) * sizeof(const VkBool32));
+ }
+ memcpy((VkBool32*)pColorWriteEnables, *readStreamPtrPtr,
+ ((attachmentCount)) * sizeof(const VkBool32));
+ *readStreamPtrPtr += ((attachmentCount)) * sizeof(const VkBool32);
+ vk->vkCmdSetColorWriteEnableEXT((VkCommandBuffer)dispatchHandle, attachmentCount,
+ pColorWriteEnables);
+ android::base::endTrace();
+ break;
+ }
+#endif
#ifdef VK_GOOGLE_gfxstream
case OP_vkBeginCommandBufferAsyncGOOGLE: {
android::base::beginTrace("vkBeginCommandBufferAsyncGOOGLE subdecode");