Merge "Warning fix for asg_context_create"
diff --git a/system/vulkan/func_table.cpp b/system/vulkan/func_table.cpp
index 51913e8..6a4a128 100644
--- a/system/vulkan/func_table.cpp
+++ b/system/vulkan/func_table.cpp
@@ -5338,6 +5338,33 @@
vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence);
}
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+static void entry_vkGetLinearImageLayoutGOOGLE(
+ VkDevice device,
+ VkFormat format,
+ VkDeviceSize* pOffset,
+ VkDeviceSize* pRowPitchAlignment)
+{
+ AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
+ auto vkEnc = HostConnection::get()->vkEncoder();
+ vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment);
+}
+static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
+ VkDevice device,
+ VkFormat format,
+ VkDeviceSize* pOffset,
+ VkDeviceSize* pRowPitchAlignment)
+{
+ auto resources = ResourceTracker::get();
+ if (!resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout"))
+ {
+ sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_linear_image_layout");
+ }
+ AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
+ auto vkEnc = HostConnection::get()->vkEncoder();
+ vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment);
+}
+#endif
void* goldfish_vulkan_get_proc_address(const char* name){
#ifdef VK_VERSION_1_0
if (!strcmp(name, "vkCreateInstance"))
@@ -6813,6 +6840,12 @@
return nullptr;
}
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+ if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
+ {
+ return nullptr;
+ }
+#endif
return nullptr;
}
void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
@@ -8389,6 +8422,12 @@
return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
}
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+ if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
+ {
+ return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
+ }
+#endif
return nullptr;
}
void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
@@ -10036,6 +10075,13 @@
return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
}
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+ if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
+ {
+ bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout");
+ return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
+ }
+#endif
return nullptr;
}
diff --git a/system/vulkan/func_table.h b/system/vulkan/func_table.h
index 9c2e5be..a3a7f99 100644
--- a/system/vulkan/func_table.h
+++ b/system/vulkan/func_table.h
@@ -294,6 +294,8 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
void* goldfish_vulkan_get_proc_address(const char* name);
void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name);
void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name);
diff --git a/system/vulkan_enc/VkEncoder.cpp b/system/vulkan_enc/VkEncoder.cpp
index 111bf40..189f0da 100644
--- a/system/vulkan_enc/VkEncoder.cpp
+++ b/system/vulkan_enc/VkEncoder.cpp
@@ -24276,5 +24276,55 @@
}
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+void VkEncoder::vkGetLinearImageLayoutGOOGLE(
+ VkDevice device,
+ VkFormat format,
+ VkDeviceSize* pOffset,
+ VkDeviceSize* pRowPitchAlignment)
+{
+ EncoderAutoLock encoderLock(this);
+ AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE encode");
+ mImpl->log("start vkGetLinearImageLayoutGOOGLE");
+ auto stream = mImpl->stream();
+ auto countingStream = mImpl->countingStream();
+ auto resources = mImpl->resources();
+ auto pool = mImpl->pool();
+ stream->setHandleMapping(resources->unwrapMapping());
+ VkDevice local_device;
+ VkFormat local_format;
+ local_device = device;
+ local_format = format;
+ countingStream->rewind();
+ {
+ uint64_t cgen_var_1565;
+ countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1565, 1);
+ countingStream->write((uint64_t*)&cgen_var_1565, 1 * 8);
+ countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
+ countingStream->write((VkDeviceSize*)pOffset, sizeof(VkDeviceSize));
+ countingStream->write((VkDeviceSize*)pRowPitchAlignment, sizeof(VkDeviceSize));
+ }
+ uint32_t packetSize_vkGetLinearImageLayoutGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
+ countingStream->rewind();
+ uint32_t opcode_vkGetLinearImageLayoutGOOGLE = OP_vkGetLinearImageLayoutGOOGLE;
+ stream->write(&opcode_vkGetLinearImageLayoutGOOGLE, sizeof(uint32_t));
+ stream->write(&packetSize_vkGetLinearImageLayoutGOOGLE, sizeof(uint32_t));
+ uint64_t cgen_var_1566;
+ stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1566, 1);
+ stream->write((uint64_t*)&cgen_var_1566, 1 * 8);
+ stream->write((VkFormat*)&local_format, sizeof(VkFormat));
+ stream->write((VkDeviceSize*)pOffset, sizeof(VkDeviceSize));
+ stream->write((VkDeviceSize*)pRowPitchAlignment, sizeof(VkDeviceSize));
+ AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE readParams");
+ stream->read((VkDeviceSize*)pOffset, sizeof(VkDeviceSize));
+ stream->read((VkDeviceSize*)pRowPitchAlignment, sizeof(VkDeviceSize));
+ AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE returnUnmarshal");
+ pool->freeAll();
+ countingStream->clearPool();
+ stream->clearPool();
+ mImpl->log("finish vkGetLinearImageLayoutGOOGLE");;
+}
+
+#endif
} // namespace goldfish_vk
diff --git a/system/vulkan_enc/VkEncoder.h b/system/vulkan_enc/VkEncoder.h
index d9860e6..572efee 100644
--- a/system/vulkan_enc/VkEncoder.h
+++ b/system/vulkan_enc/VkEncoder.h
@@ -1838,6 +1838,13 @@
const VkBindSparseInfo* pBindInfo,
VkFence fence);
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+ void vkGetLinearImageLayoutGOOGLE(
+ VkDevice device,
+ VkFormat format,
+ VkDeviceSize* pOffset,
+ VkDeviceSize* pRowPitchAlignment);
+#endif
void incRef();
bool decRef();
diff --git a/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp b/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
index 4f59d21..512554f 100644
--- a/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_deepcopy_guest.cpp
@@ -6426,6 +6426,8 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
void deepcopy_extension_struct(
Pool* pool,
const void* structExtension,
diff --git a/system/vulkan_enc/goldfish_vk_deepcopy_guest.h b/system/vulkan_enc/goldfish_vk_deepcopy_guest.h
index 243240a..8cca9b1 100644
--- a/system/vulkan_enc/goldfish_vk_deepcopy_guest.h
+++ b/system/vulkan_enc/goldfish_vk_deepcopy_guest.h
@@ -2046,5 +2046,7 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
} // namespace goldfish_vk
diff --git a/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp b/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
index 1bc69fa..ee84c21 100644
--- a/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_extension_structs_guest.cpp
@@ -292,6 +292,8 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
uint32_t goldfish_vk_struct_type(
const void* structExtension)
{
diff --git a/system/vulkan_enc/goldfish_vk_extension_structs_guest.h b/system/vulkan_enc/goldfish_vk_extension_structs_guest.h
index 9d91cdc..e549de9 100644
--- a/system/vulkan_enc/goldfish_vk_extension_structs_guest.h
+++ b/system/vulkan_enc/goldfish_vk_extension_structs_guest.h
@@ -313,5 +313,7 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
} // namespace goldfish_vk
diff --git a/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp b/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp
index 2e22fb0..ff9a069 100644
--- a/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_handlemap_guest.cpp
@@ -4782,6 +4782,8 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
void handlemap_extension_struct(
VulkanHandleMapping* handlemap,
void* structExtension_out)
diff --git a/system/vulkan_enc/goldfish_vk_handlemap_guest.h b/system/vulkan_enc/goldfish_vk_handlemap_guest.h
index 79eeaf6..88fca6c 100644
--- a/system/vulkan_enc/goldfish_vk_handlemap_guest.h
+++ b/system/vulkan_enc/goldfish_vk_handlemap_guest.h
@@ -1697,5 +1697,7 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
} // namespace goldfish_vk
diff --git a/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
index f857a2a..15fa96f 100644
--- a/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.cpp
@@ -10370,6 +10370,8 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
void marshal_extension_struct(
VulkanStreamGuest* vkStream,
const void* structExtension)
@@ -13241,6 +13243,12 @@
return "OP_vkQueueBindSparseAsyncGOOGLE";
}
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+ case OP_vkGetLinearImageLayoutGOOGLE:
+ {
+ return "OP_vkGetLinearImageLayoutGOOGLE";
+ }
+#endif
default:
{
return "OP_UNKNOWN_API_CALL";
diff --git a/system/vulkan_enc/goldfish_vk_marshaling_guest.h b/system/vulkan_enc/goldfish_vk_marshaling_guest.h
index df07272..d8cb1b0 100644
--- a/system/vulkan_enc/goldfish_vk_marshaling_guest.h
+++ b/system/vulkan_enc/goldfish_vk_marshaling_guest.h
@@ -3424,6 +3424,9 @@
#define OP_vkQueueWaitIdleAsyncGOOGLE 20331
#define OP_vkQueueBindSparseAsyncGOOGLE 20332
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#define OP_vkGetLinearImageLayoutGOOGLE 20333
+#endif
const char* api_opcode_to_string(
const uint32_t opcode);
diff --git a/system/vulkan_enc/goldfish_vk_private_defs.h b/system/vulkan_enc/goldfish_vk_private_defs.h
index b295eda..b844cdd 100644
--- a/system/vulkan_enc/goldfish_vk_private_defs.h
+++ b/system/vulkan_enc/goldfish_vk_private_defs.h
@@ -625,6 +625,10 @@
typedef void (VKAPI_PTR *PFN_vkQueueBindSparseAsyncGOOGLE)(
VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
+#define VK_GOOGLE_linear_image_layout 1
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetLinearImageLayoutGOOGLE)(VkDevice device, VkFormat format, VkDeviceSize* pOffset, VkDeviceSize* pRowPitchAlignment);
+
#ifdef __cplusplus
} // extern "C"
#endif
diff --git a/system/vulkan_enc/goldfish_vk_transform_guest.cpp b/system/vulkan_enc/goldfish_vk_transform_guest.cpp
index 6fc3e46..b829c49 100644
--- a/system/vulkan_enc/goldfish_vk_transform_guest.cpp
+++ b/system/vulkan_enc/goldfish_vk_transform_guest.cpp
@@ -9003,6 +9003,8 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
void transform_tohost_extension_struct(
ResourceTracker* resourceTracker,
void* structExtension_out)
diff --git a/system/vulkan_enc/goldfish_vk_transform_guest.h b/system/vulkan_enc/goldfish_vk_transform_guest.h
index b969958..b29e205 100644
--- a/system/vulkan_enc/goldfish_vk_transform_guest.h
+++ b/system/vulkan_enc/goldfish_vk_transform_guest.h
@@ -3093,5 +3093,7 @@
#endif
#ifdef VK_GOOGLE_async_queue_submit
#endif
+#ifdef VK_GOOGLE_linear_image_layout
+#endif
} // namespace goldfish_vk