зеркало из https://github.com/AvaloniaUI/angle.git
Vulkan: Fix bugs in glGenerateMipmaps.
We had two separate minor bugs. 1) missing a flush of the image data and 2) missing an initial barrier to set the image to TRANSFER_DST. Bug: angleproject:2652 Bug: angleproject:2653 Change-Id: I485aafc5c9055b5efb101cb2bc3ebab0588d2639 Reviewed-on: https://chromium-review.googlesource.com/1249564 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
This commit is contained in:
Родитель
a78092cb25
Коммит
5ddbdbf70c
|
@ -809,11 +809,17 @@ angle::Result TextureVk::copyImageDataToBuffer(ContextVk *contextVk,
|
|||
|
||||
angle::Result TextureVk::generateMipmapWithBlit(ContextVk *contextVk)
|
||||
{
|
||||
ANGLE_TRY(ensureImageInitialized(contextVk));
|
||||
|
||||
uint32_t imageLayerCount = GetImageLayerCount(mState.getType());
|
||||
const gl::Extents baseLevelExtents = mImage.getExtents();
|
||||
vk::CommandBuffer *commandBuffer = nullptr;
|
||||
ANGLE_TRY(getCommandBufferForWrite(contextVk, &commandBuffer));
|
||||
|
||||
mImage.changeLayoutWithStages(VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
|
||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, commandBuffer);
|
||||
|
||||
// We are able to use blitImage since the image format we are using supports it. This
|
||||
// is a faster way we can generate the mips.
|
||||
int32_t mipWidth = baseLevelExtents.width;
|
||||
|
|
|
@ -601,10 +601,6 @@ TEST_P(StateChangeRenderTest, RecreateRenderbuffer)
|
|||
// Test that recreating a texture with GenerateMipmaps signals the FBO is dirty.
|
||||
TEST_P(StateChangeRenderTest, GenerateMipmap)
|
||||
{
|
||||
// TODO(lucferron): Diagnose and fix
|
||||
// http://anglebug.com/2652
|
||||
ANGLE_SKIP_TEST_IF(IsVulkan());
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, mTextures[0]);
|
||||
|
|
|
@ -1328,10 +1328,6 @@ TEST_P(SamplerArrayAsFunctionParameterTest, SamplerArrayAsFunctionParameter)
|
|||
// Copy of a test in conformance/textures/texture-mips, to test generate mipmaps
|
||||
TEST_P(Texture2DTestWithDrawScale, MipmapsTwice)
|
||||
{
|
||||
// TODO(lucferron): Diagnose and fix
|
||||
// http://anglebug.com/2653
|
||||
ANGLE_SKIP_TEST_IF(IsVulkan());
|
||||
|
||||
int px = getWindowWidth() / 2;
|
||||
int py = getWindowHeight() / 2;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче