Snap for 11031605 from 8a6c7d4f79add19167d8ea37e85ec09678738f19 to mainline-os-statsd-release
Change-Id: Iaffe3c692ae83103848e1dce5aa4b1fdca43c464
diff --git a/stream-servers/vulkan/VkDecoder.cpp b/stream-servers/vulkan/VkDecoder.cpp
index f8e0427..4cc483e 100644
--- a/stream-servers/vulkan/VkDecoder.cpp
+++ b/stream-servers/vulkan/VkDecoder.cpp
@@ -35862,6 +35862,186 @@
android::base::endTrace();
break;
}
+ case OP_vkUpdateDescriptorSetWithTemplateSized2GOOGLE: {
+ android::base::beginTrace("vkUpdateDescriptorSetWithTemplateSized2GOOGLE decode");
+ VkDevice device;
+ VkDescriptorSet descriptorSet;
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate;
+ uint32_t imageInfoCount;
+ uint32_t bufferInfoCount;
+ uint32_t bufferViewCount;
+ uint32_t inlineUniformBlockCount;
+ const uint32_t* pImageInfoEntryIndices;
+ const uint32_t* pBufferInfoEntryIndices;
+ const uint32_t* pBufferViewEntryIndices;
+ const VkDescriptorImageInfo* pImageInfos;
+ const VkDescriptorBufferInfo* pBufferInfos;
+ const VkBufferView* pBufferViews;
+ const uint8_t* pInlineUniformBlockData;
+ // Begin global wrapped dispatchable handle unboxing for device;
+ uint64_t cgen_var_0;
+ memcpy((uint64_t*)&cgen_var_0, *readStreamPtrPtr, 1 * 8);
+ *readStreamPtrPtr += 1 * 8;
+ *(VkDevice*)&device = (VkDevice)(VkDevice)((VkDevice)(*&cgen_var_0));
+ uint64_t cgen_var_1;
+ memcpy((uint64_t*)&cgen_var_1, *readStreamPtrPtr, 1 * 8);
+ *readStreamPtrPtr += 1 * 8;
+ *(VkDescriptorSet*)&descriptorSet =
+ (VkDescriptorSet)unbox_VkDescriptorSet((VkDescriptorSet)(*&cgen_var_1));
+ uint64_t cgen_var_2;
+ memcpy((uint64_t*)&cgen_var_2, *readStreamPtrPtr, 1 * 8);
+ *readStreamPtrPtr += 1 * 8;
+ *(VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate =
+ (VkDescriptorUpdateTemplate)unbox_VkDescriptorUpdateTemplate(
+ (VkDescriptorUpdateTemplate)(*&cgen_var_2));
+ memcpy((uint32_t*)&imageInfoCount, *readStreamPtrPtr, sizeof(uint32_t));
+ *readStreamPtrPtr += sizeof(uint32_t);
+ memcpy((uint32_t*)&bufferInfoCount, *readStreamPtrPtr, sizeof(uint32_t));
+ *readStreamPtrPtr += sizeof(uint32_t);
+ memcpy((uint32_t*)&bufferViewCount, *readStreamPtrPtr, sizeof(uint32_t));
+ *readStreamPtrPtr += sizeof(uint32_t);
+ memcpy((uint32_t*)&inlineUniformBlockCount, *readStreamPtrPtr, sizeof(uint32_t));
+ *readStreamPtrPtr += sizeof(uint32_t);
+ // WARNING PTR CHECK
+ memcpy((uint32_t**)&pImageInfoEntryIndices, (*readStreamPtrPtr), 8);
+ android::base::Stream::fromBe64((uint8_t*)&pImageInfoEntryIndices);
+ *readStreamPtrPtr += 8;
+ if (pImageInfoEntryIndices) {
+ vkReadStream->alloc((void**)&pImageInfoEntryIndices,
+ ((imageInfoCount)) * sizeof(const uint32_t));
+ memcpy((uint32_t*)pImageInfoEntryIndices, *readStreamPtrPtr,
+ ((imageInfoCount)) * sizeof(const uint32_t));
+ *readStreamPtrPtr += ((imageInfoCount)) * sizeof(const uint32_t);
+ }
+ // WARNING PTR CHECK
+ memcpy((uint32_t**)&pBufferInfoEntryIndices, (*readStreamPtrPtr), 8);
+ android::base::Stream::fromBe64((uint8_t*)&pBufferInfoEntryIndices);
+ *readStreamPtrPtr += 8;
+ if (pBufferInfoEntryIndices) {
+ vkReadStream->alloc((void**)&pBufferInfoEntryIndices,
+ ((bufferInfoCount)) * sizeof(const uint32_t));
+ memcpy((uint32_t*)pBufferInfoEntryIndices, *readStreamPtrPtr,
+ ((bufferInfoCount)) * sizeof(const uint32_t));
+ *readStreamPtrPtr += ((bufferInfoCount)) * sizeof(const uint32_t);
+ }
+ // WARNING PTR CHECK
+ memcpy((uint32_t**)&pBufferViewEntryIndices, (*readStreamPtrPtr), 8);
+ android::base::Stream::fromBe64((uint8_t*)&pBufferViewEntryIndices);
+ *readStreamPtrPtr += 8;
+ if (pBufferViewEntryIndices) {
+ vkReadStream->alloc((void**)&pBufferViewEntryIndices,
+ ((bufferViewCount)) * sizeof(const uint32_t));
+ memcpy((uint32_t*)pBufferViewEntryIndices, *readStreamPtrPtr,
+ ((bufferViewCount)) * sizeof(const uint32_t));
+ *readStreamPtrPtr += ((bufferViewCount)) * sizeof(const uint32_t);
+ }
+ // WARNING PTR CHECK
+ memcpy((VkDescriptorImageInfo**)&pImageInfos, (*readStreamPtrPtr), 8);
+ android::base::Stream::fromBe64((uint8_t*)&pImageInfos);
+ *readStreamPtrPtr += 8;
+ if (pImageInfos) {
+ vkReadStream->alloc((void**)&pImageInfos,
+ ((imageInfoCount)) * sizeof(const VkDescriptorImageInfo));
+ for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i) {
+ reservedunmarshal_VkDescriptorImageInfo(
+ vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
+ (VkDescriptorImageInfo*)(pImageInfos + i), readStreamPtrPtr);
+ }
+ }
+ // WARNING PTR CHECK
+ memcpy((VkDescriptorBufferInfo**)&pBufferInfos, (*readStreamPtrPtr), 8);
+ android::base::Stream::fromBe64((uint8_t*)&pBufferInfos);
+ *readStreamPtrPtr += 8;
+ if (pBufferInfos) {
+ vkReadStream->alloc((void**)&pBufferInfos,
+ ((bufferInfoCount)) * sizeof(const VkDescriptorBufferInfo));
+ for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i) {
+ reservedunmarshal_VkDescriptorBufferInfo(
+ vkReadStream, VK_STRUCTURE_TYPE_MAX_ENUM,
+ (VkDescriptorBufferInfo*)(pBufferInfos + i), readStreamPtrPtr);
+ }
+ }
+ // WARNING PTR CHECK
+ memcpy((VkBufferView**)&pBufferViews, (*readStreamPtrPtr), 8);
+ android::base::Stream::fromBe64((uint8_t*)&pBufferViews);
+ *readStreamPtrPtr += 8;
+ if (pBufferViews) {
+ vkReadStream->alloc((void**)&pBufferViews,
+ ((bufferViewCount)) * sizeof(const VkBufferView));
+ if (((bufferViewCount))) {
+ uint8_t* cgen_var_8_0_ptr = (uint8_t*)(*readStreamPtrPtr);
+ *readStreamPtrPtr += 8 * ((bufferViewCount));
+ for (uint32_t k = 0; k < ((bufferViewCount)); ++k) {
+ uint64_t tmpval;
+ memcpy(&tmpval, cgen_var_8_0_ptr + k * 8, sizeof(uint64_t));
+ *(((VkBufferView*)pBufferViews) + k) =
+ (VkBufferView)unbox_VkBufferView((VkBufferView)tmpval);
+ }
+ }
+ }
+ // WARNING PTR CHECK
+ memcpy((uint8_t**)&pInlineUniformBlockData, (*readStreamPtrPtr), 8);
+ android::base::Stream::fromBe64((uint8_t*)&pInlineUniformBlockData);
+ *readStreamPtrPtr += 8;
+ if (pInlineUniformBlockData) {
+ vkReadStream->alloc((void**)&pInlineUniformBlockData,
+ ((inlineUniformBlockCount)) * sizeof(const uint8_t));
+ memcpy((uint8_t*)pInlineUniformBlockData, *readStreamPtrPtr,
+ ((inlineUniformBlockCount)) * sizeof(const uint8_t));
+ *readStreamPtrPtr += ((inlineUniformBlockCount)) * sizeof(const uint8_t);
+ }
+ if (pImageInfos) {
+ for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i) {
+ transform_tohost_VkDescriptorImageInfo(
+ m_state, (VkDescriptorImageInfo*)(pImageInfos + i));
+ }
+ }
+ if (pBufferInfos) {
+ for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i) {
+ transform_tohost_VkDescriptorBufferInfo(
+ m_state, (VkDescriptorBufferInfo*)(pBufferInfos + i));
+ }
+ }
+ if (m_logCalls) {
+ fprintf(stderr,
+ "stream %p: call vkUpdateDescriptorSetWithTemplateSized2GOOGLE 0x%llx "
+ "0x%llx 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx 0x%llx "
+ "0x%llx 0x%llx 0x%llx \n",
+ ioStream, (unsigned long long)device, (unsigned long long)descriptorSet,
+ (unsigned long long)descriptorUpdateTemplate,
+ (unsigned long long)imageInfoCount, (unsigned long long)bufferInfoCount,
+ (unsigned long long)bufferViewCount,
+ (unsigned long long)inlineUniformBlockCount,
+ (unsigned long long)pImageInfoEntryIndices,
+ (unsigned long long)pBufferInfoEntryIndices,
+ (unsigned long long)pBufferViewEntryIndices,
+ (unsigned long long)pImageInfos, (unsigned long long)pBufferInfos,
+ (unsigned long long)pBufferViews,
+ (unsigned long long)pInlineUniformBlockData);
+ }
+ m_state->on_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ &m_pool, device, descriptorSet, descriptorUpdateTemplate, imageInfoCount,
+ bufferInfoCount, bufferViewCount, inlineUniformBlockCount,
+ pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices,
+ pImageInfos, pBufferInfos, pBufferViews, pInlineUniformBlockData);
+ vkStream->unsetHandleMapping();
+ vkReadStream->setReadPos((uintptr_t)(*readStreamPtrPtr) -
+ (uintptr_t)snapshotTraceBegin);
+ size_t snapshotTraceBytes = vkReadStream->endTrace();
+ if (m_state->snapshotsEnabled()) {
+ m_state->snapshot()->vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ snapshotTraceBegin, snapshotTraceBytes, &m_pool, device, descriptorSet,
+ descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount,
+ inlineUniformBlockCount, pImageInfoEntryIndices, pBufferInfoEntryIndices,
+ pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews,
+ pInlineUniformBlockData);
+ }
+ vkReadStream->clearPool();
+ if (queueSubmitWithCommandsEnabled)
+ seqnoPtr->fetch_add(1, std::memory_order_seq_cst);
+ android::base::endTrace();
+ break;
+ }
#endif
#ifdef VK_EXT_global_priority_query
#endif
diff --git a/stream-servers/vulkan/VkDecoderGlobalState.cpp b/stream-servers/vulkan/VkDecoderGlobalState.cpp
index 477a4d3..da07609 100644
--- a/stream-servers/vulkan/VkDecoderGlobalState.cpp
+++ b/stream-servers/vulkan/VkDecoderGlobalState.cpp
@@ -4145,6 +4145,34 @@
info->data.data());
}
+ void on_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ android::base::BumpPool* pool, VkDevice boxed_device, VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
+ uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
+ const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
+ const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
+ const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
+ const uint8_t* pInlineUniformBlockData) {
+ auto device = unbox_VkDevice(boxed_device);
+ auto vk = dispatch_VkDevice(boxed_device);
+
+ std::lock_guard<std::recursive_mutex> lock(mLock);
+ auto* info = android::base::find(mDescriptorUpdateTemplateInfo, descriptorUpdateTemplate);
+ if (!info) return;
+
+ memcpy(info->data.data() + info->imageInfoStart, pImageInfos,
+ imageInfoCount * sizeof(VkDescriptorImageInfo));
+ memcpy(info->data.data() + info->bufferInfoStart, pBufferInfos,
+ bufferInfoCount * sizeof(VkDescriptorBufferInfo));
+ memcpy(info->data.data() + info->bufferViewStart, pBufferViews,
+ bufferViewCount * sizeof(VkBufferView));
+ memcpy(info->data.data() + info->inlineUniformBlockStart, pInlineUniformBlockData,
+ inlineUniformBlockCount);
+
+ vk->vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate,
+ info->data.data());
+ }
+
void hostSyncCommandBuffer(const char* tag, VkCommandBuffer boxed_commandBuffer,
uint32_t needHostSync, uint32_t sequenceNumber) {
auto nextDeadline = []() {
@@ -5852,6 +5880,7 @@
size_t imageInfoStart;
size_t bufferInfoStart;
size_t bufferViewStart;
+ size_t inlineUniformBlockStart;
};
DescriptorUpdateTemplateInfo calcLinearizedDescriptorUpdateTemplateInfo(
@@ -5862,6 +5891,7 @@
size_t numImageInfos = 0;
size_t numBufferInfos = 0;
size_t numBufferViews = 0;
+ size_t numInlineUniformBlocks = 0;
for (uint32_t i = 0; i < pCreateInfo->descriptorUpdateEntryCount; ++i) {
const auto& entry = pCreateInfo->pDescriptorUpdateEntries[i];
@@ -5873,6 +5903,8 @@
numBufferInfos += count;
} else if (isDescriptorTypeBufferView(type)) {
numBufferViews += count;
+ } else if (type == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT) {
+ numInlineUniformBlocks += count;
} else {
GFXSTREAM_ABORT(FatalError(ABORT_REASON_OTHER))
<< "unknown descriptor type 0x" << std::hex << type;
@@ -5882,15 +5914,19 @@
size_t imageInfoBytes = numImageInfos * sizeof(VkDescriptorImageInfo);
size_t bufferInfoBytes = numBufferInfos * sizeof(VkDescriptorBufferInfo);
size_t bufferViewBytes = numBufferViews * sizeof(VkBufferView);
+ size_t inlineUniformBlockBytes = numInlineUniformBlocks;
- res.data.resize(imageInfoBytes + bufferInfoBytes + bufferViewBytes);
+ res.data.resize(imageInfoBytes + bufferInfoBytes + bufferViewBytes +
+ inlineUniformBlockBytes);
res.imageInfoStart = 0;
res.bufferInfoStart = imageInfoBytes;
res.bufferViewStart = imageInfoBytes + bufferInfoBytes;
+ res.inlineUniformBlockStart = imageInfoBytes + bufferInfoBytes + bufferViewBytes;
size_t imageInfoCount = 0;
size_t bufferInfoCount = 0;
size_t bufferViewCount = 0;
+ size_t inlineUniformBlockCount = 0;
for (uint32_t i = 0; i < pCreateInfo->descriptorUpdateEntryCount; ++i) {
const auto& entry = pCreateInfo->pDescriptorUpdateEntries[i];
@@ -5912,6 +5948,10 @@
entryForHost.offset = res.bufferViewStart + bufferViewCount * sizeof(VkBufferView);
entryForHost.stride = sizeof(VkBufferView);
++bufferViewCount;
+ } else if (type == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT) {
+ entryForHost.offset = res.inlineUniformBlockStart + inlineUniformBlockCount;
+ entryForHost.stride = 0;
+ inlineUniformBlockCount += entryForHost.descriptorCount;
} else {
GFXSTREAM_ABORT(FatalError(ABORT_REASON_OTHER))
<< "unknown descriptor type 0x" << std::hex << type;
@@ -7086,6 +7126,21 @@
pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
}
+void VkDecoderGlobalState::on_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ android::base::BumpPool* pool, VkDevice boxed_device, VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
+ uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
+ const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
+ const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
+ const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
+ const uint8_t* pInlineUniformBlockData) {
+ mImpl->on_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ pool, boxed_device, descriptorSet, descriptorUpdateTemplate, imageInfoCount,
+ bufferInfoCount, bufferViewCount, inlineUniformBlockCount, pImageInfoEntryIndices,
+ pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews,
+ pInlineUniformBlockData);
+}
+
VkResult VkDecoderGlobalState::on_vkBeginCommandBuffer(android::base::BumpPool* pool,
VkCommandBuffer commandBuffer,
const VkCommandBufferBeginInfo* pBeginInfo,
diff --git a/stream-servers/vulkan/VkDecoderGlobalState.h b/stream-servers/vulkan/VkDecoderGlobalState.h
index b74f1ab..f49285f 100644
--- a/stream-servers/vulkan/VkDecoderGlobalState.h
+++ b/stream-servers/vulkan/VkDecoderGlobalState.h
@@ -511,6 +511,15 @@
const VkDescriptorImageInfo* pImageInfos, const VkDescriptorBufferInfo* pBufferInfos,
const VkBufferView* pBufferViews);
+ void on_vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ android::base::BumpPool* pool, VkDevice boxed_device, VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
+ uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
+ const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
+ const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
+ const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
+ const uint8_t* pInlineUniformBlockData);
+
VkResult on_vkBeginCommandBuffer(android::base::BumpPool* pool, VkCommandBuffer commandBuffer,
const VkCommandBufferBeginInfo* pBeginInfo,
const VkDecoderContext& context);
diff --git a/stream-servers/vulkan/VkDecoderSnapshot.cpp b/stream-servers/vulkan/VkDecoderSnapshot.cpp
index 81bf866..6aa323d 100644
--- a/stream-servers/vulkan/VkDecoderSnapshot.cpp
+++ b/stream-servers/vulkan/VkDecoderSnapshot.cpp
@@ -4711,6 +4711,17 @@
VkDeviceMemory memory) {
// TODO: Implement
}
+ void vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool,
+ VkDevice device, VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
+ uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
+ const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
+ const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
+ const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
+ const uint8_t* pInlineUniformBlockData) {
+ // TODO: Implement
+ }
#endif
#ifdef VK_EXT_global_priority_query
#endif
@@ -10919,6 +10930,23 @@
memory);
}
#endif
+#ifdef VK_GOOGLE_gfxstream
+void VkDecoderSnapshot::vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool,
+ VkDevice device, VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
+ uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
+ const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
+ const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
+ const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
+ const uint8_t* pInlineUniformBlockData) {
+ mImpl->vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ snapshotTraceBegin, snapshotTraceBytes, pool, device, descriptorSet,
+ descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount,
+ inlineUniformBlockCount, pImageInfoEntryIndices, pBufferInfoEntryIndices,
+ pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, pInlineUniformBlockData);
+}
+#endif
#ifdef VK_EXT_multi_draw
void VkDecoderSnapshot::vkCmdDrawMultiEXT(const uint8_t* snapshotTraceBegin,
size_t snapshotTraceBytes, android::base::BumpPool* pool,
diff --git a/stream-servers/vulkan/VkDecoderSnapshot.h b/stream-servers/vulkan/VkDecoderSnapshot.h
index 55a5483..0f2bb6e 100644
--- a/stream-servers/vulkan/VkDecoderSnapshot.h
+++ b/stream-servers/vulkan/VkDecoderSnapshot.h
@@ -2944,6 +2944,15 @@
void vkGetBlobGOOGLE(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes,
android::base::BumpPool* pool, VkResult input_result, VkDevice device,
VkDeviceMemory memory);
+ void vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool,
+ VkDevice device, VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
+ uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
+ const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
+ const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
+ const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
+ const uint8_t* pInlineUniformBlockData);
#endif
#ifdef VK_EXT_global_priority_query
#endif
diff --git a/stream-servers/vulkan/cereal/common/goldfish_vk_dispatch.cpp b/stream-servers/vulkan/cereal/common/goldfish_vk_dispatch.cpp
index e1cf82d..67dcb79 100644
--- a/stream-servers/vulkan/cereal/common/goldfish_vk_dispatch.cpp
+++ b/stream-servers/vulkan/cereal/common/goldfish_vk_dispatch.cpp
@@ -2013,6 +2013,9 @@
(PFN_vkQueueFlushCommandsFromAuxMemoryGOOGLE)dlSymFunc(
lib, "vkQueueFlushCommandsFromAuxMemoryGOOGLE");
out->vkGetBlobGOOGLE = (PFN_vkGetBlobGOOGLE)dlSymFunc(lib, "vkGetBlobGOOGLE");
+ out->vkUpdateDescriptorSetWithTemplateSized2GOOGLE =
+ (PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE)dlSymFunc(
+ lib, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
#endif
#ifdef VK_EXT_multi_draw
out->vkCmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)dlSymFunc(lib, "vkCmdDrawMultiEXT");
@@ -3852,6 +3855,9 @@
instance, "vkQueueFlushCommandsFromAuxMemoryGOOGLE");
out->vkGetBlobGOOGLE =
(PFN_vkGetBlobGOOGLE)vk->vkGetInstanceProcAddr(instance, "vkGetBlobGOOGLE");
+ out->vkUpdateDescriptorSetWithTemplateSized2GOOGLE =
+ (PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE)vk->vkGetInstanceProcAddr(
+ instance, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
#endif
#ifdef VK_EXT_multi_draw
out->vkCmdDrawMultiEXT =
@@ -5705,6 +5711,9 @@
(PFN_vkQueueFlushCommandsFromAuxMemoryGOOGLE)vk->vkGetDeviceProcAddr(
device, "vkQueueFlushCommandsFromAuxMemoryGOOGLE");
out->vkGetBlobGOOGLE = (PFN_vkGetBlobGOOGLE)vk->vkGetDeviceProcAddr(device, "vkGetBlobGOOGLE");
+ out->vkUpdateDescriptorSetWithTemplateSized2GOOGLE =
+ (PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE)vk->vkGetDeviceProcAddr(
+ device, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
#endif
#ifdef VK_EXT_multi_draw
out->vkCmdDrawMultiEXT =
diff --git a/stream-servers/vulkan/cereal/common/goldfish_vk_dispatch.h b/stream-servers/vulkan/cereal/common/goldfish_vk_dispatch.h
index 5745cf1..99ca96d 100644
--- a/stream-servers/vulkan/cereal/common/goldfish_vk_dispatch.h
+++ b/stream-servers/vulkan/cereal/common/goldfish_vk_dispatch.h
@@ -1224,6 +1224,7 @@
PFN_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE vkQueueSignalReleaseImageANDROIDAsyncGOOGLE;
PFN_vkQueueFlushCommandsFromAuxMemoryGOOGLE vkQueueFlushCommandsFromAuxMemoryGOOGLE;
PFN_vkGetBlobGOOGLE vkGetBlobGOOGLE;
+ PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE vkUpdateDescriptorSetWithTemplateSized2GOOGLE;
#endif
#ifdef VK_EXT_global_priority_query
#endif
diff --git a/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.cpp b/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.cpp
index b26c346..86804be 100644
--- a/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.cpp
+++ b/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.cpp
@@ -50057,6 +50057,11 @@
return "OP_vkCmdWaitEvents2";
}
#endif
+#ifdef VK_GOOGLE_gfxstream
+ case OP_vkUpdateDescriptorSetWithTemplateSized2GOOGLE: {
+ return "OP_vkUpdateDescriptorSetWithTemplateSized2GOOGLE";
+ }
+#endif
#ifdef VK_EXT_extended_dynamic_state3
case OP_vkCmdSetRepresentativeFragmentTestEnableNV: {
return "OP_vkCmdSetRepresentativeFragmentTestEnableNV";
diff --git a/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.h b/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.h
index a464390..56ef57a 100644
--- a/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.h
+++ b/stream-servers/vulkan/cereal/common/goldfish_vk_marshaling.h
@@ -7670,6 +7670,7 @@
#define OP_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE 243985229
#define OP_vkQueueFlushCommandsFromAuxMemoryGOOGLE 290633483
#define OP_vkGetBlobGOOGLE 20341
+#define OP_vkUpdateDescriptorSetWithTemplateSized2GOOGLE 244782974
#endif
#ifdef VK_EXT_global_priority_query
DEFINE_ALIAS_FUNCTION(marshal_VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR,
diff --git a/stream-servers/vulkan/vulkan_gfxstream.h b/stream-servers/vulkan/vulkan_gfxstream.h
index 060dac5..53431f8 100644
--- a/stream-servers/vulkan/vulkan_gfxstream.h
+++ b/stream-servers/vulkan/vulkan_gfxstream.h
@@ -119,6 +119,14 @@
VkDeviceSize dataOffset,
VkDeviceSize dataSize);
typedef VkResult(VKAPI_PTR* PFN_vkGetBlobGOOGLE)(VkDevice device, VkDeviceMemory memory);
+typedef void(VKAPI_PTR* PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE)(
+ VkDevice device, VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
+ uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
+ const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
+ const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
+ const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
+ const uint8_t* pInlineUniformBlockData);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,
@@ -208,6 +216,15 @@
VkDeviceSize dataSize);
VKAPI_ATTR VkResult VKAPI_CALL vkGetBlobGOOGLE(VkDevice device, VkDeviceMemory memory);
+
+VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
+ VkDevice device, VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
+ uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
+ const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
+ const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
+ const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
+ const uint8_t* pInlineUniformBlockData);
#endif
#ifdef __cplusplus