aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-07-21 14:27:57 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-22 01:03:06 +0000
commitcd1416efbc7af6f115dbaa09dce48e075d1d96ca (patch)
tree3f4ddbc475a167107929da6f670b7832b97f2c93 /tests
parent97d4cf0e7eb15340b1f513ff8cfba4e55ee3acf2 (diff)
Add support for semaphores to be inserted on GrContext flush
This also moves the logic of inserting semaphores down into GrDrawingManager and finishFlush on GrGpu. With it being on finishFlush, there should be no issues when the DrawingManager starts respecting the proxy passed in assuming it always calls finishFlush at the end (which it should). Bug: skia: Change-Id: I925c2a289dcbbb9159b9120878af1d34f21a2dc7 Reviewed-on: https://skia-review.googlesource.com/25641 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/SurfaceSemaphoreTest.cpp58
1 files changed, 34 insertions, 24 deletions
diff --git a/tests/SurfaceSemaphoreTest.cpp b/tests/SurfaceSemaphoreTest.cpp
index cd3b8e587b..bb726c2eec 100644
--- a/tests/SurfaceSemaphoreTest.cpp
+++ b/tests/SurfaceSemaphoreTest.cpp
@@ -108,7 +108,8 @@ void draw_child(skiatest::Reporter* reporter,
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 sk_gpu_test::ContextInfo& childInfo2,
+ bool flushContext) {
GrContext* mainCtx = mainInfo.grContext();
if (!mainCtx->caps()->fenceSyncSupport()) {
return;
@@ -143,7 +144,11 @@ void surface_semaphore_test(skiatest::Reporter* reporter,
}
#endif
- mainSurface->flushAndSignalSemaphores(2, semaphores.get());
+ if (flushContext) {
+ mainCtx->flushAndSignalSemaphores(2, semaphores.get());
+ } else {
+ mainSurface->flushAndSignalSemaphores(2, semaphores.get());
+ }
sk_sp<SkImage> mainImage = mainSurface->makeImageSnapshot();
GrBackendObject backendImage = mainImage->getTextureHandle(false);
@@ -171,31 +176,35 @@ DEF_GPUTEST(SurfaceSemaphores, reporter, factory) {
#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;
+ for (auto flushContext : { false, true }) {
+ 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()) {
+ 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);
+ surface_semaphore_test(reporter, ctxInfo, child1, child2, flushContext);
+ }
}
}
}
@@ -217,7 +226,8 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(EmptySurfaceSemaphoreTest, reporter, ctxInfo)
mainSurface->flush();
GrBackendSemaphore semaphore;
- REPORTER_ASSERT(reporter, mainSurface->flushAndSignalSemaphores(1, &semaphore));
+ GrSemaphoresSubmitted submitted = mainSurface->flushAndSignalSemaphores(1, &semaphore);
+ REPORTER_ASSERT(reporter, GrSemaphoresSubmitted::kYes == submitted);
if (kOpenGL_GrBackend == ctxInfo.backend()) {
GrGLGpu* gpu = static_cast<GrGLGpu*>(ctx->getGpu());