[vulkan] Express validation in terms of VkEventHandler
bug: 111137294
Also takes codegen changes for VkEncoder to call VkEventHandler
for validation.
Change-Id: Iafb78e2cf51ec1932491095c6d8853cd31a3a2b9
diff --git a/system/vulkan_enc/Validation.cpp b/system/vulkan_enc/Validation.cpp
index 8feed81..7653f76 100644
--- a/system/vulkan_enc/Validation.cpp
+++ b/system/vulkan_enc/Validation.cpp
@@ -35,7 +35,9 @@
return offset + size <= mem->mappedSize;
}
-VkResult validate_vkFlushMappedMemoryRanges(
+VkResult Validation::on_vkFlushMappedMemoryRanges(
+ void*,
+ VkResult,
VkDevice,
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges) {
@@ -49,7 +51,9 @@
return VK_SUCCESS;
}
-VkResult validate_vkInvalidateMappedMemoryRanges(
+VkResult Validation::on_vkInvalidateMappedMemoryRanges(
+ void*,
+ VkResult,
VkDevice,
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges) {
diff --git a/system/vulkan_enc/Validation.h b/system/vulkan_enc/Validation.h
index 2200e35..30af8b4 100644
--- a/system/vulkan_enc/Validation.h
+++ b/system/vulkan_enc/Validation.h
@@ -15,16 +15,24 @@
#include <vulkan/vulkan.h>
+#include "VkEventHandler.h"
+
namespace goldfish_vk {
-VkResult validate_vkFlushMappedMemoryRanges(
- VkDevice device,
- uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges);
-
-VkResult validate_vkInvalidateMappedMemoryRanges(
- VkDevice device,
- uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges);
+class Validation : public VkEventHandler {
+public:
+ VkResult on_vkFlushMappedMemoryRanges(
+ void* context,
+ VkResult input_result,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges) override;
+ VkResult on_vkInvalidateMappedMemoryRanges(
+ void* context,
+ VkResult input_result,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges) override;
+};
} // namespace goldfish_vk
\ No newline at end of file
diff --git a/system/vulkan_enc/VkEncoder.cpp b/system/vulkan_enc/VkEncoder.cpp
index 51976f9..87745f4 100644
--- a/system/vulkan_enc/VkEncoder.cpp
+++ b/system/vulkan_enc/VkEncoder.cpp
@@ -57,10 +57,13 @@
VulkanStream* stream() { return &m_stream; }
Pool* pool() { return &m_pool; }
ResourceTracker* resources() { return ResourceTracker::get(); }
+ Validation* validation() { return &m_validation; }
private:
VulkanCountingStream m_countingStream;
VulkanStream m_stream;
Pool m_pool { 8, 4096, 64 };
+
+ Validation m_validation;
};
VkEncoder::VkEncoder(IOStream *stream) :
@@ -1410,7 +1413,7 @@
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges)
{
- VALIDATE_RET(VkResult, VK_SUCCESS, validate_vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges));
+ VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
auto stream = mImpl->stream();
auto countingStream = mImpl->countingStream();
auto resources = mImpl->resources();
@@ -1501,7 +1504,7 @@
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges)
{
- VALIDATE_RET(VkResult, VK_SUCCESS, validate_vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges));
+ VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
auto stream = mImpl->stream();
auto countingStream = mImpl->countingStream();
auto resources = mImpl->resources();