OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include <functional> | 8 #include <functional> |
9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
10 #include "SkData.h" | 10 #include "SkData.h" |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceCanvasPeek_Gpu, reporter, ctxInfo) { | 121 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceCanvasPeek_Gpu, reporter, ctxInfo) { |
122 for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface
}) { | 122 for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface
}) { |
123 SkImageInfo requestInfo; | 123 SkImageInfo requestInfo; |
124 auto surface(surface_func(ctxInfo.grContext(), kPremul_SkAlphaType, &req
uestInfo)); | 124 auto surface(surface_func(ctxInfo.grContext(), kPremul_SkAlphaType, &req
uestInfo)); |
125 test_canvas_peek(reporter, surface, requestInfo, false); | 125 test_canvas_peek(reporter, surface, requestInfo, false); |
126 } | 126 } |
127 } | 127 } |
128 #endif | 128 #endif |
129 | 129 |
130 static void test_snapshot_alphatype(skiatest::Reporter* reporter, const sk_sp<Sk
Surface>& surface, | 130 static void test_snapshot_alphatype(skiatest::Reporter* reporter, const sk_sp<Sk
Surface>& surface, |
131 bool expectOpaque) { | 131 SkAlphaType expectedAlphaType) { |
132 REPORTER_ASSERT(reporter, surface); | 132 REPORTER_ASSERT(reporter, surface); |
133 if (surface) { | 133 if (surface) { |
134 sk_sp<SkImage> image(surface->makeImageSnapshot()); | 134 sk_sp<SkImage> image(surface->makeImageSnapshot()); |
135 REPORTER_ASSERT(reporter, image); | 135 REPORTER_ASSERT(reporter, image); |
136 if (image) { | 136 if (image) { |
137 REPORTER_ASSERT(reporter, image->isOpaque() == SkToBool(expectOpaque
)); | 137 REPORTER_ASSERT(reporter, image->alphaType() == expectedAlphaType); |
138 } | 138 } |
139 } | 139 } |
140 } | 140 } |
141 DEF_TEST(SurfaceSnapshotAlphaType, reporter) { | 141 DEF_TEST(SurfaceSnapshotAlphaType, reporter) { |
142 for (auto& surface_func : { &create_surface, &create_direct_surface }) { | 142 for (auto& surface_func : { &create_surface, &create_direct_surface }) { |
143 for (auto& isOpaque : { true, false }) { | 143 for (auto& at: { kOpaque_SkAlphaType, kPremul_SkAlphaType, kUnpremul_SkA
lphaType }) { |
144 SkAlphaType alphaType = isOpaque ? kOpaque_SkAlphaType : kPremul_SkA
lphaType; | 144 auto surface(surface_func(at, nullptr)); |
145 auto surface(surface_func(alphaType, nullptr)); | 145 test_snapshot_alphatype(reporter, surface, at); |
146 test_snapshot_alphatype(reporter, surface, isOpaque); | |
147 } | 146 } |
148 } | 147 } |
149 } | 148 } |
150 #if SK_SUPPORT_GPU | 149 #if SK_SUPPORT_GPU |
151 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceSnapshotAlphaType_Gpu, reporter, ctxIn
fo) { | 150 DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceSnapshotAlphaType_Gpu, reporter, ctxIn
fo) { |
152 for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface
}) { | 151 for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface
}) { |
153 for (auto& isOpaque : { true, false }) { | 152 // GPU doesn't support creating unpremul surfaces, so only test opaque +
premul |
154 SkAlphaType alphaType = isOpaque ? kOpaque_SkAlphaType : kPremul_SkA
lphaType; | 153 for (auto& at : { kOpaque_SkAlphaType, kPremul_SkAlphaType }) { |
155 auto surface(surface_func(ctxInfo.grContext(), alphaType, nullptr)); | 154 auto surface(surface_func(ctxInfo.grContext(), at, nullptr)); |
156 test_snapshot_alphatype(reporter, surface, isOpaque); | 155 test_snapshot_alphatype(reporter, surface, at); |
157 } | 156 } |
158 } | 157 } |
159 } | 158 } |
160 #endif | 159 #endif |
161 | 160 |
162 static GrBackendObject get_surface_backend_texture_handle( | 161 static GrBackendObject get_surface_backend_texture_handle( |
163 SkSurface* s, SkSurface::BackendHandleAccess a) { | 162 SkSurface* s, SkSurface::BackendHandleAccess a) { |
164 return s->getTextureHandle(a); | 163 return s->getTextureHandle(a); |
165 } | 164 } |
166 static GrBackendObject get_surface_backend_render_target_handle( | 165 static GrBackendObject get_surface_backend_render_target_handle( |
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
904 // our surface functions. | 903 // our surface functions. |
905 GrRenderTarget* rt = surface->getCanvas()->internal_private_accessTo
pLayerDrawContext() | 904 GrRenderTarget* rt = surface->getCanvas()->internal_private_accessTo
pLayerDrawContext() |
906 ->accessRenderTarget(); | 905 ->accessRenderTarget(); |
907 REPORTER_ASSERT(reporter, | 906 REPORTER_ASSERT(reporter, |
908 ctxInfo.grContext()->resourceProvider()->attachStenc
ilAttachment(rt)); | 907 ctxInfo.grContext()->resourceProvider()->attachStenc
ilAttachment(rt)); |
909 gpu->deleteTestingOnlyBackendTexture(textureObject); | 908 gpu->deleteTestingOnlyBackendTexture(textureObject); |
910 } | 909 } |
911 } | 910 } |
912 } | 911 } |
913 #endif | 912 #endif |
OLD | NEW |