Hash :
f044aaf8
Author :
Date :
2024-03-02T00:51:33
Vulkan: Create instance/device without access to Display The feature overrides are now encapsulated in a struct, a reference to which is passed around until features are initialized. Additionally, some window system information needed to decide which extensions to use or workarounds to apply are passed around. This is a step towards decoupling RendererVk from egl::Display for direct use with OpenCL. Bug: angleproject:8564 Change-Id: Id6c5d1c3b38aafcd4397e54cc6cad32bf849eeda Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5335823 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
//
// Copyright 2023 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// DisplayVkOffscreen.cpp:
// Implements the class methods for DisplayVkOffscreen.
//
#include "DisplayVkOffscreen.h"
#include "common/debug.h"
#include "libANGLE/renderer/vulkan/vk_caps_utils.h"
namespace rx
{
DisplayVkOffscreen::DisplayVkOffscreen(const egl::DisplayState &state) : DisplayVkLinux(state) {}
bool DisplayVkOffscreen::isValidNativeWindow(EGLNativeWindowType window) const
{
return false;
}
SurfaceImpl *DisplayVkOffscreen::createWindowSurfaceVk(const egl::SurfaceState &state,
EGLNativeWindowType window)
{
UNREACHABLE();
return nullptr;
}
egl::ConfigSet DisplayVkOffscreen::generateConfigs()
{
constexpr GLenum kColorFormats[] = {GL_RGBA8, GL_BGRA8_EXT, GL_RGB565, GL_RGB8};
return egl_vk::GenerateConfigs(kColorFormats, egl_vk::kConfigDepthStencilFormats, this);
}
void DisplayVkOffscreen::checkConfigSupport(egl::Config *config) {}
const char *DisplayVkOffscreen::getWSIExtension() const
{
return nullptr;
}
bool IsVulkanOffscreenDisplayAvailable()
{
return true;
}
DisplayImpl *CreateVulkanOffscreenDisplay(const egl::DisplayState &state)
{
return new DisplayVkOffscreen(state);
}
} // namespace rx