Commit 360d48b9 authored by Vikas Soni's avatar Vikas Soni Committed by Commit Bot

Use ExternalVkImageFactory for software decode video path.

Use ExternalVkImageFactory as an interop factory instead of
SharedImageBackingFactoryAHB for software decode video path
on android. This is because AHB backing do not support single
channel formats used by video frames in this path.

Bug: 985387
Change-Id: I31243c34a8b72beb0a7af0bec7e54bd326e9a203
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2045130
Commit-Queue: vikas soni <vikassoni@chromium.org>
Reviewed-by: default avatarPeng Huang <penghuang@chromium.org>
Reviewed-by: default avatarKhushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#741692}
parent ea145b4c
...@@ -329,7 +329,7 @@ target(link_target_type, "gles2_sources") { ...@@ -329,7 +329,7 @@ target(link_target_type, "gles2_sources") {
"//gpu/vulkan", "//gpu/vulkan",
] ]
if (is_linux || is_fuchsia) { if (is_linux || is_fuchsia || is_android) {
sources += [ sources += [
"external_vk_image_backing.cc", "external_vk_image_backing.cc",
"external_vk_image_backing.h", "external_vk_image_backing.h",
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include "gpu/vulkan/fuchsia/vulkan_fuchsia_ext.h" #include "gpu/vulkan/fuchsia/vulkan_fuchsia_ext.h"
#endif #endif
#if defined(OS_LINUX) #if defined(OS_LINUX) || defined(OS_ANDROID)
#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 #define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
#define GL_TEXTURE_TILING_EXT 0x9580 #define GL_TEXTURE_TILING_EXT 0x9580
#define GL_TILING_TYPES_EXT 0x9583 #define GL_TILING_TYPES_EXT 0x9583
...@@ -665,7 +665,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager* manager, ...@@ -665,7 +665,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager* manager,
} }
GLuint ExternalVkImageBacking::ProduceGLTextureInternal() { GLuint ExternalVkImageBacking::ProduceGLTextureInternal() {
#if defined(OS_LINUX) #if defined(OS_LINUX) || defined(OS_ANDROID)
GrVkImageInfo image_info; GrVkImageInfo image_info;
bool result = backend_texture_.getVkImageInfo(&image_info); bool result = backend_texture_.getVkImageInfo(&image_info);
DCHECK(result); DCHECK(result);
...@@ -717,7 +717,7 @@ GLuint ExternalVkImageBacking::ProduceGLTextureInternal() { ...@@ -717,7 +717,7 @@ GLuint ExternalVkImageBacking::ProduceGLTextureInternal() {
#elif defined(OS_FUCHSIA) #elif defined(OS_FUCHSIA)
NOTIMPLEMENTED_LOG_ONCE(); NOTIMPLEMENTED_LOG_ONCE();
return 0; return 0;
#else // !defined(OS_LINUX) && !defined(OS_FUCHSIA) #else // !defined(OS_LINUX) && !defined(OS_FUCHSIA) && !defined(OS_ANDROID)
#error Unsupported OS #error Unsupported OS
#endif #endif
} }
...@@ -731,7 +731,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageManager* manager, ...@@ -731,7 +731,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageManager* manager,
return nullptr; return nullptr;
} }
#if defined(OS_LINUX) #if defined(OS_LINUX) || defined(OS_ANDROID)
if (!texture_) { if (!texture_) {
GLuint texture_service_id = ProduceGLTextureInternal(); GLuint texture_service_id = ProduceGLTextureInternal();
if (!texture_service_id) if (!texture_service_id)
...@@ -762,7 +762,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageManager* manager, ...@@ -762,7 +762,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageManager* manager,
#elif defined(OS_FUCHSIA) #elif defined(OS_FUCHSIA)
NOTIMPLEMENTED_LOG_ONCE(); NOTIMPLEMENTED_LOG_ONCE();
return nullptr; return nullptr;
#else // !defined(OS_LINUX) && !defined(OS_FUCHSIA) #else // !defined(OS_LINUX) && !defined(OS_FUCHSIA) && !defined(OS_ANDROID)
#error Unsupported OS #error Unsupported OS
#endif #endif
} }
...@@ -777,7 +777,7 @@ ExternalVkImageBacking::ProduceGLTexturePassthrough( ...@@ -777,7 +777,7 @@ ExternalVkImageBacking::ProduceGLTexturePassthrough(
return nullptr; return nullptr;
} }
#if defined(OS_LINUX) #if defined(OS_LINUX) || defined(OS_ANDROID)
if (!texture_passthrough_) { if (!texture_passthrough_) {
GLuint texture_service_id = ProduceGLTextureInternal(); GLuint texture_service_id = ProduceGLTextureInternal();
if (!texture_service_id) if (!texture_service_id)
...@@ -797,7 +797,7 @@ ExternalVkImageBacking::ProduceGLTexturePassthrough( ...@@ -797,7 +797,7 @@ ExternalVkImageBacking::ProduceGLTexturePassthrough(
#elif defined(OS_FUCHSIA) #elif defined(OS_FUCHSIA)
NOTIMPLEMENTED_LOG_ONCE(); NOTIMPLEMENTED_LOG_ONCE();
return nullptr; return nullptr;
#else // !defined(OS_LINUX) && !defined(OS_FUCHSIA) #else // !defined(OS_LINUX) && !defined(OS_FUCHSIA) && !defined(OS_ANDROID)
#error Unsupported OS #error Unsupported OS
#endif #endif
} }
...@@ -815,7 +815,7 @@ ExternalVkImageBacking::ProduceSkia( ...@@ -815,7 +815,7 @@ ExternalVkImageBacking::ProduceSkia(
tracker); tracker);
} }
#ifdef OS_LINUX #if defined(OS_LINUX) || defined(OS_ANDROID)
int ExternalVkImageBacking::GetMemoryFd(const GrVkImageInfo& image_info) { int ExternalVkImageBacking::GetMemoryFd(const GrVkImageInfo& image_info) {
VkMemoryGetFdInfoKHR get_fd_info; VkMemoryGetFdInfoKHR get_fd_info;
get_fd_info.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR; get_fd_info.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/memory/scoped_refptr.h" #include "base/memory/scoped_refptr.h"
#include "base/memory/shared_memory_mapping.h" #include "base/memory/shared_memory_mapping.h"
#include "base/optional.h" #include "base/optional.h"
#include "build/build_config.h"
#include "components/viz/common/gpu/vulkan_context_provider.h" #include "components/viz/common/gpu/vulkan_context_provider.h"
#include "gpu/command_buffer/common/shared_image_usage.h" #include "gpu/command_buffer/common/shared_image_usage.h"
#include "gpu/command_buffer/service/shared_context_state.h" #include "gpu/command_buffer/service/shared_context_state.h"
...@@ -132,7 +133,7 @@ class ExternalVkImageBacking final : public ClearTrackingSharedImageBacking { ...@@ -132,7 +133,7 @@ class ExternalVkImageBacking final : public ClearTrackingSharedImageBacking {
base::Optional<WGPUTextureFormat> wgpu_format, base::Optional<WGPUTextureFormat> wgpu_format,
base::Optional<uint32_t> memory_type_index); base::Optional<uint32_t> memory_type_index);
#ifdef OS_LINUX #if defined(OS_LINUX) || defined(OS_ANDROID)
// Extract file descriptor from image // Extract file descriptor from image
int GetMemoryFd(const GrVkImageInfo& image_info); int GetMemoryFd(const GrVkImageInfo& image_info);
#endif #endif
......
...@@ -185,7 +185,7 @@ GLuint ExternalVkImageGLRepresentationShared::ImportVkSemaphoreIntoGL( ...@@ -185,7 +185,7 @@ GLuint ExternalVkImageGLRepresentationShared::ImportVkSemaphoreIntoGL(
#if defined(OS_FUCHSIA) #if defined(OS_FUCHSIA)
NOTIMPLEMENTED_LOG_ONCE(); NOTIMPLEMENTED_LOG_ONCE();
return 0; return 0;
#elif defined(OS_LINUX) #elif defined(OS_LINUX) || defined(OS_ANDROID)
if (handle.vk_handle_type() != if (handle.vk_handle_type() !=
VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) { VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) {
DLOG(ERROR) << "Importing semaphore handle of unexpected type:" DLOG(ERROR) << "Importing semaphore handle of unexpected type:"
...@@ -200,7 +200,7 @@ GLuint ExternalVkImageGLRepresentationShared::ImportVkSemaphoreIntoGL( ...@@ -200,7 +200,7 @@ GLuint ExternalVkImageGLRepresentationShared::ImportVkSemaphoreIntoGL(
fd.release()); fd.release());
return gl_semaphore; return gl_semaphore;
#else // !defined(OS_FUCHSIA) && !defined(OS_LINUX) #else // !defined(OS_FUCHSIA) && !defined(OS_LINUX) && !defined(OS_ANDROID)
#error Unsupported OS #error Unsupported OS
#endif #endif
} }
......
...@@ -140,4 +140,4 @@ void ExternalVkImageSkiaRepresentation::EndAccess(bool readonly) { ...@@ -140,4 +140,4 @@ void ExternalVkImageSkiaRepresentation::EndAccess(bool readonly) {
backing_impl()->EndAccess(readonly, std::move(handle), false /* is_gl */); backing_impl()->EndAccess(readonly, std::move(handle), false /* is_gl */);
} }
} // namespace gpu } // namespace gpu
\ No newline at end of file
...@@ -1128,6 +1128,14 @@ bool SharedImageBackingFactoryAHB::CanImportGpuMemoryBuffer( ...@@ -1128,6 +1128,14 @@ bool SharedImageBackingFactoryAHB::CanImportGpuMemoryBuffer(
return memory_buffer_type == gfx::ANDROID_HARDWARE_BUFFER; return memory_buffer_type == gfx::ANDROID_HARDWARE_BUFFER;
} }
bool SharedImageBackingFactoryAHB::IsFormatSupported(
viz::ResourceFormat format) {
DCHECK_GE(format, 0);
DCHECK_LE(format, viz::RESOURCE_FORMAT_MAX);
return format_info_[format].ahb_supported;
}
SharedImageBackingFactoryAHB::FormatInfo::FormatInfo() = default; SharedImageBackingFactoryAHB::FormatInfo::FormatInfo() = default;
SharedImageBackingFactoryAHB::FormatInfo::~FormatInfo() = default; SharedImageBackingFactoryAHB::FormatInfo::~FormatInfo() = default;
......
...@@ -59,6 +59,7 @@ class GPU_GLES2_EXPORT SharedImageBackingFactoryAHB ...@@ -59,6 +59,7 @@ class GPU_GLES2_EXPORT SharedImageBackingFactoryAHB
uint32_t usage) override; uint32_t usage) override;
bool CanImportGpuMemoryBuffer( bool CanImportGpuMemoryBuffer(
gfx::GpuMemoryBufferType memory_buffer_type) override; gfx::GpuMemoryBufferType memory_buffer_type) override;
bool IsFormatSupported(viz::ResourceFormat format);
private: private:
bool ValidateUsage(uint32_t usage, bool ValidateUsage(uint32_t usage,
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#if (defined(USE_X11) || defined(OS_FUCHSIA)) && BUILDFLAG(ENABLE_VULKAN) #if (defined(USE_X11) || defined(OS_FUCHSIA)) && BUILDFLAG(ENABLE_VULKAN)
#include "gpu/command_buffer/service/external_vk_image_factory.h" #include "gpu/command_buffer/service/external_vk_image_factory.h"
#elif defined(OS_ANDROID) && BUILDFLAG(ENABLE_VULKAN) #elif defined(OS_ANDROID) && BUILDFLAG(ENABLE_VULKAN)
#include "gpu/command_buffer/service/external_vk_image_factory.h"
#include "gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h" #include "gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h"
#elif defined(OS_MACOSX) #elif defined(OS_MACOSX)
#include "gpu/command_buffer/service/shared_image_backing_factory_iosurface.h" #include "gpu/command_buffer/service/shared_image_backing_factory_iosurface.h"
...@@ -99,6 +100,10 @@ SharedImageFactory::SharedImageFactory( ...@@ -99,6 +100,10 @@ SharedImageFactory::SharedImageFactory(
} }
#elif defined(OS_ANDROID) && BUILDFLAG(ENABLE_VULKAN) #elif defined(OS_ANDROID) && BUILDFLAG(ENABLE_VULKAN)
// For Android // For Android
if (using_vulkan_) {
external_vk_image_factory_ =
std::make_unique<ExternalVkImageFactory>(context_state);
}
interop_backing_factory_ = std::make_unique<SharedImageBackingFactoryAHB>( interop_backing_factory_ = std::make_unique<SharedImageBackingFactoryAHB>(
workarounds, gpu_feature_info, context_state); workarounds, gpu_feature_info, context_state);
#elif defined(OS_MACOSX) #elif defined(OS_MACOSX)
...@@ -149,7 +154,7 @@ bool SharedImageFactory::CreateSharedImage(const Mailbox& mailbox, ...@@ -149,7 +154,7 @@ bool SharedImageFactory::CreateSharedImage(const Mailbox& mailbox,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
uint32_t usage) { uint32_t usage) {
bool allow_legacy_mailbox = false; bool allow_legacy_mailbox = false;
auto* factory = GetFactoryByUsage(usage, &allow_legacy_mailbox); auto* factory = GetFactoryByUsage(usage, format, &allow_legacy_mailbox);
if (!factory) if (!factory)
return false; return false;
auto backing = factory->CreateSharedImage( auto backing = factory->CreateSharedImage(
...@@ -206,7 +211,9 @@ bool SharedImageFactory::CreateSharedImage(const Mailbox& mailbox, ...@@ -206,7 +211,9 @@ bool SharedImageFactory::CreateSharedImage(const Mailbox& mailbox,
// TODO(piman): depending on handle.type, choose platform-specific backing // TODO(piman): depending on handle.type, choose platform-specific backing
// factory, e.g. SharedImageBackingFactoryAHB. // factory, e.g. SharedImageBackingFactoryAHB.
bool allow_legacy_mailbox = false; bool allow_legacy_mailbox = false;
auto* factory = GetFactoryByUsage(usage, &allow_legacy_mailbox, handle.type); auto resource_format = viz::GetResourceFormat(format);
auto* factory = GetFactoryByUsage(usage, resource_format,
&allow_legacy_mailbox, handle.type);
if (!factory) if (!factory)
return false; return false;
auto backing = auto backing =
...@@ -350,6 +357,7 @@ bool SharedImageFactory::IsSharedBetweenThreads(uint32_t usage) { ...@@ -350,6 +357,7 @@ bool SharedImageFactory::IsSharedBetweenThreads(uint32_t usage) {
SharedImageBackingFactory* SharedImageFactory::GetFactoryByUsage( SharedImageBackingFactory* SharedImageFactory::GetFactoryByUsage(
uint32_t usage, uint32_t usage,
viz::ResourceFormat format,
bool* allow_legacy_mailbox, bool* allow_legacy_mailbox,
gfx::GpuMemoryBufferType gmb_type) { gfx::GpuMemoryBufferType gmb_type) {
if (backing_factory_for_testing_) if (backing_factory_for_testing_)
...@@ -418,6 +426,21 @@ SharedImageBackingFactory* SharedImageFactory::GetFactoryByUsage( ...@@ -418,6 +426,21 @@ SharedImageBackingFactory* SharedImageFactory::GetFactoryByUsage(
return nullptr; return nullptr;
} }
#if defined(OS_ANDROID)
// On android, we sometime choose VkImage based backing factory as an
// interop if the format is not supported by the AHB backing factory.
auto* ahb_backing_factory = static_cast<SharedImageBackingFactoryAHB*>(
interop_backing_factory_.get());
if (!ahb_backing_factory->IsFormatSupported(format) &&
external_vk_image_factory_) {
if (share_between_threads) {
LOG(FATAL) << "ExternalVkImageFactory currently do not support "
"cross-thread usage.";
}
*allow_legacy_mailbox = false;
return external_vk_image_factory_.get();
}
#endif
return interop_backing_factory_.get(); return interop_backing_factory_.get();
} }
......
...@@ -25,6 +25,7 @@ class VulkanContextProvider; ...@@ -25,6 +25,7 @@ class VulkanContextProvider;
} // namespace viz } // namespace viz
namespace gpu { namespace gpu {
class ExternalVkImageFactory;
class GpuDriverBugWorkarounds; class GpuDriverBugWorkarounds;
class ImageFactory; class ImageFactory;
class MailboxManager; class MailboxManager;
...@@ -114,6 +115,7 @@ class GPU_GLES2_EXPORT SharedImageFactory { ...@@ -114,6 +115,7 @@ class GPU_GLES2_EXPORT SharedImageFactory {
bool IsSharedBetweenThreads(uint32_t usage); bool IsSharedBetweenThreads(uint32_t usage);
SharedImageBackingFactory* GetFactoryByUsage( SharedImageBackingFactory* GetFactoryByUsage(
uint32_t usage, uint32_t usage,
viz::ResourceFormat format,
bool* allow_legacy_mailbox, bool* allow_legacy_mailbox,
gfx::GpuMemoryBufferType gmb_type = gfx::EMPTY_BUFFER); gfx::GpuMemoryBufferType gmb_type = gfx::EMPTY_BUFFER);
MailboxManager* mailbox_manager_; MailboxManager* mailbox_manager_;
...@@ -136,6 +138,13 @@ class GPU_GLES2_EXPORT SharedImageFactory { ...@@ -136,6 +138,13 @@ class GPU_GLES2_EXPORT SharedImageFactory {
// D3D12. // D3D12.
std::unique_ptr<SharedImageBackingFactory> interop_backing_factory_; std::unique_ptr<SharedImageBackingFactory> interop_backing_factory_;
#if defined(OS_ANDROID)
// On android we have two interop factory which is |interop_backing_factory_|
// and |external_vk_image_factory_| and we choose one of those
// based on the format it supports.
std::unique_ptr<ExternalVkImageFactory> external_vk_image_factory_;
#endif
// Non-null if compositing with SkiaRenderer. // Non-null if compositing with SkiaRenderer.
std::unique_ptr<raster::WrappedSkImageFactory> wrapped_sk_image_factory_; std::unique_ptr<raster::WrappedSkImageFactory> wrapped_sk_image_factory_;
......
...@@ -128,6 +128,7 @@ VulkanImplementationAndroid::GetRequiredDeviceExtensions() { ...@@ -128,6 +128,7 @@ VulkanImplementationAndroid::GetRequiredDeviceExtensions() {
VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME,
VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME, VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME,
VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME,
VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME,
VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME, VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME,
VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME, VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,
VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME}; VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME};
......
...@@ -173,7 +173,7 @@ VULKAN_DEVICE_FUNCTIONS = [ ...@@ -173,7 +173,7 @@ VULKAN_DEVICE_FUNCTIONS = [
] ]
}, },
{ {
'ifdef': 'defined(OS_LINUX)', 'ifdef': 'defined(OS_LINUX) || defined(OS_ANDROID)',
'extension': 'VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME', 'extension': 'VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME',
'functions': [ 'functions': [
'vkGetMemoryFdKHR', 'vkGetMemoryFdKHR',
......
...@@ -803,7 +803,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointers( ...@@ -803,7 +803,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointers(
} }
#endif // defined(OS_LINUX) || defined(OS_ANDROID) #endif // defined(OS_LINUX) || defined(OS_ANDROID)
#if defined(OS_LINUX) #if defined(OS_LINUX) || defined(OS_ANDROID)
if (gfx::HasExtension(enabled_extensions, if (gfx::HasExtension(enabled_extensions,
VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) { VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) {
vkGetMemoryFdKHRFn = reinterpret_cast<PFN_vkGetMemoryFdKHR>( vkGetMemoryFdKHRFn = reinterpret_cast<PFN_vkGetMemoryFdKHR>(
...@@ -823,7 +823,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointers( ...@@ -823,7 +823,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointers(
return false; return false;
} }
} }
#endif // defined(OS_LINUX) #endif // defined(OS_LINUX) || defined(OS_ANDROID)
#if defined(OS_FUCHSIA) #if defined(OS_FUCHSIA)
if (gfx::HasExtension(enabled_extensions, if (gfx::HasExtension(enabled_extensions,
......
...@@ -185,10 +185,10 @@ struct VulkanFunctionPointers { ...@@ -185,10 +185,10 @@ struct VulkanFunctionPointers {
PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHRFn = nullptr; PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHRFn = nullptr;
#endif // defined(OS_LINUX) || defined(OS_ANDROID) #endif // defined(OS_LINUX) || defined(OS_ANDROID)
#if defined(OS_LINUX) #if defined(OS_LINUX) || defined(OS_ANDROID)
PFN_vkGetMemoryFdKHR vkGetMemoryFdKHRFn = nullptr; PFN_vkGetMemoryFdKHR vkGetMemoryFdKHRFn = nullptr;
PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHRFn = nullptr; PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHRFn = nullptr;
#endif // defined(OS_LINUX) #endif // defined(OS_LINUX) || defined(OS_ANDROID)
#if defined(OS_FUCHSIA) #if defined(OS_FUCHSIA)
PFN_vkImportSemaphoreZirconHandleFUCHSIA PFN_vkImportSemaphoreZirconHandleFUCHSIA
...@@ -385,11 +385,11 @@ struct VulkanFunctionPointers { ...@@ -385,11 +385,11 @@ struct VulkanFunctionPointers {
gpu::GetVulkanFunctionPointers()->vkImportSemaphoreFdKHRFn gpu::GetVulkanFunctionPointers()->vkImportSemaphoreFdKHRFn
#endif // defined(OS_LINUX) || defined(OS_ANDROID) #endif // defined(OS_LINUX) || defined(OS_ANDROID)
#if defined(OS_LINUX) #if defined(OS_LINUX) || defined(OS_ANDROID)
#define vkGetMemoryFdKHR gpu::GetVulkanFunctionPointers()->vkGetMemoryFdKHRFn #define vkGetMemoryFdKHR gpu::GetVulkanFunctionPointers()->vkGetMemoryFdKHRFn
#define vkGetMemoryFdPropertiesKHR \ #define vkGetMemoryFdPropertiesKHR \
gpu::GetVulkanFunctionPointers()->vkGetMemoryFdPropertiesKHRFn gpu::GetVulkanFunctionPointers()->vkGetMemoryFdPropertiesKHRFn
#endif // defined(OS_LINUX) #endif // defined(OS_LINUX) || defined(OS_ANDROID)
#if defined(OS_FUCHSIA) #if defined(OS_FUCHSIA)
#define vkImportSemaphoreZirconHandleFUCHSIA \ #define vkImportSemaphoreZirconHandleFUCHSIA \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment