aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/SurfaceSemaphoreTest.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-06-15 21:50:55 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-15 21:55:03 +0000
commit7292231905c34ed290ba479338f26b56ae2a7792 (patch)
tree1a049d8868aa229d230c56dd69e96cf2167a0be8 /tests/SurfaceSemaphoreTest.cpp
parent56af45b03c542ef0bc198e42687bf685aafaae81 (diff)
Revert "Add API for flushing surfaces with gpu semaphores"
This reverts commit 66366c697853e906d961ae691e2bc5209cdcfa62. Reason for revert: Failing test on mac bots Original change's description: > Add API for flushing surfaces with gpu semaphores > > BUG=skia: > > Change-Id: Ia4bfef784cd5f2516ceccafce958be18a86f91d1 > Reviewed-on: https://skia-review.googlesource.com/11488 > Commit-Queue: Greg Daniel <egdaniel@google.com> > Reviewed-by: Brian Salomon <bsalomon@google.com> > Reviewed-by: Forrest Reiling <freiling@google.com> TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com,brianosman@google.com,freiling@google.com Change-Id: I75633a2732d2d48b1926f9ad818a9f1a9196d211 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/20063 Commit-Queue: Greg Daniel <egdaniel@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'tests/SurfaceSemaphoreTest.cpp')
-rw-r--r--tests/SurfaceSemaphoreTest.cpp172
1 files changed, 0 insertions, 172 deletions
diff --git a/tests/SurfaceSemaphoreTest.cpp b/tests/SurfaceSemaphoreTest.cpp
deleted file mode 100644
index e9122bb464..0000000000
--- a/tests/SurfaceSemaphoreTest.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright 2017 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "SkTypes.h"
-
-#if SK_SUPPORT_GPU
-#include "GrContextFactory.h"
-#include "GrTest.h"
-#include "Test.h"
-
-#include "GrBackendSemaphore.h"
-#include "GrBackendSurface.h"
-#include "SkCanvas.h"
-#include "SkSurface.h"
-
-#ifdef SK_VULKAN
-#include "vk/GrVkTypes.h"
-#endif
-
-static const int MAIN_W = 8, MAIN_H = 16;
-static const int CHILD_W = 16, CHILD_H = 16;
-
-void check_pixels(skiatest::Reporter* reporter, const SkBitmap& bitmap) {
- const uint32_t* canvasPixels = static_cast<const uint32_t*>(bitmap.getPixels());
-
- bool failureFound = false;
- SkPMColor expectedPixel;
- for (int cy = 0; cy < CHILD_H && !failureFound; ++cy) {
- for (int cx = 0; cx < CHILD_W && !failureFound; ++cx) {
- SkPMColor canvasPixel = canvasPixels[cy * CHILD_W + cx];
- if (cy < CHILD_H / 2) {
- if (cx < CHILD_W / 2) {
- expectedPixel = 0xFF0000FF; // Red
- } else {
- expectedPixel = 0xFFFF0000; // Blue
- }
- } else {
- expectedPixel = 0xFF00FF00; // Green
- }
- if (expectedPixel != canvasPixel) {
- failureFound = true;
- ERRORF(reporter, "Wrong color at %d, %d. Got 0x%08x when we expected 0x%08x",
- cx, cy, canvasPixel, expectedPixel);
- }
- }
- }
-}
-
-void draw_child(skiatest::Reporter* reporter,
- const sk_gpu_test::ContextInfo& childInfo,
- const GrBackendObject& backendImage,
- const GrBackendSemaphore& semaphore) {
- GrBackendTexture backendTexture = GrTest::CreateBackendTexture(childInfo.backend(),
- MAIN_W, MAIN_H,
- kRGBA_8888_GrPixelConfig,
- backendImage);
-
- childInfo.testContext()->makeCurrent();
-
- const SkImageInfo childII = SkImageInfo::Make(CHILD_W, CHILD_H, kRGBA_8888_SkColorType,
- kPremul_SkAlphaType);
-
- GrContext* childCtx = childInfo.grContext();
- sk_sp<SkSurface> childSurface(SkSurface::MakeRenderTarget(childCtx, SkBudgeted::kNo,
- childII, 0, kTopLeft_GrSurfaceOrigin,
- nullptr));
-
- sk_sp<SkImage> childImage = SkImage::MakeFromTexture(childCtx,
- backendTexture,
- kTopLeft_GrSurfaceOrigin,
- kPremul_SkAlphaType,
- nullptr);
-
- SkCanvas* childCanvas = childSurface->getCanvas();
- childCanvas->clear(SK_ColorRED);
-
- childSurface->wait(1, &semaphore);
-
- childCanvas->drawImage(childImage, CHILD_W/2, 0);
-
- SkPaint paint;
- paint.setColor(SK_ColorGREEN);
- SkIRect rect = SkIRect::MakeLTRB(0, CHILD_H/2, CHILD_W, CHILD_H);
- childCanvas->drawIRect(rect, paint);
-
- // read pixels
- SkBitmap bitmap;
- bitmap.allocPixels(childII);
- childCanvas->readPixels(bitmap, 0, 0);
-
- check_pixels(reporter, bitmap);
-}
-
-void surface_semaphore_test(skiatest::Reporter* reporter,
- const sk_gpu_test::ContextInfo& mainInfo,
- const sk_gpu_test::ContextInfo& childInfo1,
- const sk_gpu_test::ContextInfo& childInfo2) {
-
- const SkImageInfo ii = SkImageInfo::Make(MAIN_W, MAIN_H, kRGBA_8888_SkColorType,
- kPremul_SkAlphaType);
-
- GrContext* mainCtx = mainInfo.grContext();
- sk_sp<SkSurface> mainSurface(SkSurface::MakeRenderTarget(mainCtx, SkBudgeted::kNo,
- ii, 0, kTopLeft_GrSurfaceOrigin,
- nullptr));
- SkCanvas* mainCanvas = mainSurface->getCanvas();
- mainCanvas->clear(SK_ColorBLUE);
-
- SkAutoTArray<GrBackendSemaphore> semaphores(2);
-
- mainSurface->flushAndSignalSemaphores(2, semaphores.get());
-
- sk_sp<SkImage> mainImage = mainSurface->makeImageSnapshot();
- GrBackendObject backendImage = mainImage->getTextureHandle(false);
-
- draw_child(reporter, childInfo1, backendImage, semaphores[0]);
-
-#ifdef SK_VULKAN
- if (kVulkan_GrBackend == mainInfo.backend()) {
- // In Vulkan we need to make sure we are sending the correct VkImageLayout in with the
- // backendImage. After the first child draw the layout gets changed to SHADER_READ, so
- // we just manually set that here.
- GrVkImageInfo* vkInfo = (GrVkImageInfo*)backendImage;
- vkInfo->updateImageLayout(VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
- }
-#endif
-
- draw_child(reporter, childInfo2, backendImage, semaphores[1]);
-}
-
-DEF_GPUTEST(SurfaceSemaphores, reporter, factory) {
-#if defined(SK_BUILD_FOR_UNIX) || defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_MAC)
- static constexpr auto kNativeGLType = sk_gpu_test::GrContextFactory::kGL_ContextType;
-#else
- static constexpr auto kNativeGLType = sk_gpu_test::GrContextFactory::kGLES_ContextType;
-#endif
-
- for (int typeInt = 0; typeInt < sk_gpu_test::GrContextFactory::kContextTypeCnt; ++typeInt) {
- sk_gpu_test::GrContextFactory::ContextType contextType =
- (sk_gpu_test::GrContextFactory::ContextType) typeInt;
- // Use "native" instead of explicitly trying OpenGL and OpenGL ES. Do not use GLES on
- // desktop since tests do not account for not fixing http://skbug.com/2809
- if (contextType == sk_gpu_test::GrContextFactory::kGL_ContextType ||
- contextType == sk_gpu_test::GrContextFactory::kGLES_ContextType) {
- if (contextType != kNativeGLType) {
- continue;
- }
- }
- sk_gpu_test::ContextInfo ctxInfo = factory->getContextInfo(
- contextType, sk_gpu_test::GrContextFactory::ContextOverrides::kDisableNVPR);
- if (!sk_gpu_test::GrContextFactory::IsRenderingContext(contextType)) {
- continue;
- }
- skiatest::ReporterContext ctx(
- reporter, SkString(sk_gpu_test::GrContextFactory::ContextTypeName(contextType)));
- if (ctxInfo.grContext()) {
- sk_gpu_test::ContextInfo child1 = factory->getSharedContextInfo(ctxInfo.grContext(), 0);
- sk_gpu_test::ContextInfo child2 = factory->getSharedContextInfo(ctxInfo.grContext(), 1);
- if (!child1.grContext() || !child2.grContext()) {
- continue;
- }
-
- surface_semaphore_test(reporter, ctxInfo, child1, child2);
- }
- }
-}
-
-#endif