AHB: minor clean up to avoid build failures on different platforms
Bug: b/158094132
Test: comment out AHB def and test on Android.
Change-Id: Ibae7f50a861d1009be3eaa11067783bacacdee54
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/50548
Tested-by: Yiwei Zhang <zzyiwei@google.com>
Presubmit-Ready: Yiwei Zhang <zzyiwei@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Trevor Black <vantablack@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Vulkan/VkDeviceMemory.cpp b/src/Vulkan/VkDeviceMemory.cpp
index c84eb38..85e7806 100644
--- a/src/Vulkan/VkDeviceMemory.cpp
+++ b/src/Vulkan/VkDeviceMemory.cpp
@@ -14,6 +14,7 @@
#include "VkDeviceMemory.hpp"
#include "VkBuffer.hpp"
+#include "VkDevice.hpp"
#include "VkDeviceMemoryExternalBase.hpp"
#include "VkImage.hpp"
@@ -360,7 +361,11 @@
#if SWIFTSHADER_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER
VkResult DeviceMemory::exportAndroidHardwareBuffer(struct AHardwareBuffer **pAhb) const
{
- return external->exportAndroidHardwareBuffer(pAhb);
+ if(external->getFlagBit() != VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID)
+ {
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+ }
+ return static_cast<AHardwareBufferExternalMemory *>(external)->exportAndroidHardwareBuffer(pAhb);
}
VkResult DeviceMemory::GetAndroidHardwareBufferProperties(VkDevice &ahbDevice, const struct AHardwareBuffer *buffer, VkAndroidHardwareBufferPropertiesANDROID *pProperties)
diff --git a/src/Vulkan/VkDeviceMemoryExternalAndroid.hpp b/src/Vulkan/VkDeviceMemoryExternalAndroid.hpp
index 7842a4c..2e73240 100644
--- a/src/Vulkan/VkDeviceMemoryExternalAndroid.hpp
+++ b/src/Vulkan/VkDeviceMemoryExternalAndroid.hpp
@@ -59,10 +59,9 @@
VkExternalMemoryHandleTypeFlagBits getFlagBit() const override { return typeFlagBit; }
- VkResult exportAndroidHardwareBuffer(AHardwareBuffer **pAhb) const override;
+ VkResult exportAndroidHardwareBuffer(AHardwareBuffer **pAhb) const;
void setDevicePtr(vk::Device *pDevice) override { device = pDevice; }
- bool isAndroidHardwareBuffer() override { return true; }
static VkResult GetAndroidHardwareBufferFormatProperties(const AHardwareBuffer_Desc &ahbDesc, VkAndroidHardwareBufferFormatPropertiesANDROID *pFormat);
static VkResult GetAndroidHardwareBufferProperties(VkDevice &device, const AHardwareBuffer *buffer, VkAndroidHardwareBufferPropertiesANDROID *pProperties);
diff --git a/src/Vulkan/VkDeviceMemoryExternalBase.hpp b/src/Vulkan/VkDeviceMemoryExternalBase.hpp
index 1eb4a6a..451ba3d 100644
--- a/src/Vulkan/VkDeviceMemoryExternalBase.hpp
+++ b/src/Vulkan/VkDeviceMemoryExternalBase.hpp
@@ -45,18 +45,6 @@
}
#endif
-#if SWIFTSHADER_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER
- virtual VkResult exportAndroidHardwareBuffer(struct AHardwareBuffer **pAhb) const
- {
- return VK_ERROR_INVALID_EXTERNAL_HANDLE;
- }
-
- virtual bool isAndroidHardwareBuffer()
- {
- return false;
- }
-#endif
-
// Some external device memories, such as Android hardware buffers, represent
// specific images with requirements.
virtual bool hasExternalImageProperties() const { return false; }