Hash :
9cfd8724
Author :
Date :
2022-02-09T08:23:02
Allow surface creation in DisplayVkNull Previously DisplayVkNull was returning unusable surface from createWindowSurfaceVk(). Updated it to return OffscreenSurfaceVk, which makes it usable with some tests that try to create surface through EGL Bug: chromium:1225002 Change-Id: If21a454201a32017b0e80ee7c01568a089ab0b0e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3450034 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@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 57 58 59 60 61 62
//
// Copyright 2021 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.
//
// DisplayVkNull.cpp:
// Implements the class methods for DisplayVkNull.
//
#include "DisplayVkNull.h"
#include "libANGLE/Display.h"
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "libANGLE/renderer/vulkan/SurfaceVk.h"
#include "libANGLE/renderer/vulkan/vk_caps_utils.h"
namespace rx
{
DisplayVkNull::DisplayVkNull(const egl::DisplayState &state) : DisplayVk(state) {}
bool DisplayVkNull::isValidNativeWindow(EGLNativeWindowType window) const
{
return false;
}
SurfaceImpl *DisplayVkNull::createWindowSurfaceVk(const egl::SurfaceState &state,
EGLNativeWindowType window)
{
return new OffscreenSurfaceVk(state, mRenderer);
}
const char *DisplayVkNull::getWSIExtension() const
{
return nullptr;
}
bool DisplayVkNull::isUsingSwapchain() const
{
return false;
}
egl::ConfigSet DisplayVkNull::generateConfigs()
{
constexpr GLenum kColorFormats[] = {GL_RGBA8, GL_BGRA8_EXT, GL_RGB565, GL_RGB8};
return egl_vk::GenerateConfigs(kColorFormats, egl_vk::kConfigDepthStencilFormats, this);
}
void DisplayVkNull::checkConfigSupport(egl::Config *config) {}
bool IsVulkanNullDisplayAvailable()
{
return true;
}
DisplayImpl *CreateVulkanNullDisplay(const egl::DisplayState &state)
{
return new DisplayVkNull(state);
}
} // namespace rx