• Home
  • Raw
  • Download

Lines Matching +full:resolve +full:- +full:from

4  * Use of this source code is governed by a BSD-style license that can be
77 if (!surface->readPixels(actual, 0, 0)) { in check_pixels()
112 auto tex = managedTex->texture(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
114 // resolve. in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
127 const GrCaps* caps = dContext->priv().caps(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
128 // In metal and vulkan if we prefer discardable msaa attachments we will also auto resolve. The in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
131 bool autoResolves = caps->msaaResolvesAutomatically() || in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
132 caps->preferDiscardableMSAAAttachment(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
135 // should trigger the resolve and the texture should have the correct data. in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
136 surface->getCanvas()->clear(SK_ColorRED); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
137 dContext->flush(surface.get()); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
138 dContext->submit(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
141 // Next try doing a GrDirectContext::flush without the surface which will not trigger a resolve in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
143 surface->getCanvas()->clear(SK_ColorBLUE); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
144 dContext->flush(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
145 dContext->submit(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
152 // Now doing a surface flush (even without any queued up normal work) should still resolve the in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
154 dContext->flush(surface.get()); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
155 dContext->submit(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
158 // Test using SkSurface::resolve with a GrDirectContext::flush in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
159 surface->getCanvas()->clear(SK_ColorRED); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
161 dContext->flush(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
162 dContext->submit(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
165 // Calling resolve again should cause no issues as it is a no-op (there is an assert in the in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
166 // resolve op that the surface's msaa is dirty, we shouldn't hit that assert). in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
168 dContext->flush(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
169 dContext->submit(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
172 // Try resolving in the middle of draw calls. Non automatic resolve gpus should only see the in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
174 surface->getCanvas()->clear(SK_ColorGREEN); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
176 surface->getCanvas()->clear(SK_ColorBLUE); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
177 dContext->flush(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
178 dContext->submit(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
185 // Test that a resolve between draws to a different surface doesn't cause the OpsTasks for that in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
187 // First clear out dirty msaa from previous test in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
188 dContext->flush(surface.get()); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
192 otherSurface->getCanvas()->clear(SK_ColorRED); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
194 otherSurface->getCanvas()->clear(SK_ColorBLUE); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
195 dContext->flush(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
196 dContext->submit(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
198 // Make sure resolving a non-msaa surface doesn't trigger a resolve call. We'll hit an assert in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
201 otherSurface->getCanvas()->clear(SK_ColorRED); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
203 dContext->flush(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
204 dContext->submit(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
207 // This test comes from crbug.com/1355807 and crbug.com/1365578. The underlying issue was:
208 // * We would do a non-mipmapped draw of a proxy. This proxy would add a dependency from the ops
211 // GrRenderTask::addDependency would detect the pre-existing dependency and early out before
212 // adding the proxy to a resolve task.
213 // We also test the case where the first draw should add a MSAA resolve and the second draw should
214 // add a mipmap resolve.
222 if (!dc->priv().caps()->mipmapSupport()) { in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
229 auto bef = dc->priv().caps()->getDefaultBackendFormat(GrColorType::kRGBA_8888, renderable); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
231 if (dc->priv().caps()->msaaResolvesAutomatically()) { in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
232 // MSAA won't add a resolve task. in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
235 sampleCount = dc->priv().caps()->getRenderTargetSampleCount(sampleCount, bef); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
242 auto mmProxy = dc->priv().proxyProvider()->createProxy(bef, in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
256 // Make sure MSAA surface needs a resolve by drawing to it. This also adds a last in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
264 drawContext->fillWithFP(GrFragmentProcessor::MakeColor(SK_PMColor4fWHITE)); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
268 auto src = dc->priv().proxyProvider()->createProxy(bef, in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
290 // Do a non-mipmapped draw from the mipmapped texture. This should add a dependency on the in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
292 // msaa-only resolve. in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
299 *dc->priv().caps()); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
304 drawDst->drawRect(nullptr, in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
308 SkRect::Make(mmProxy->dimensions())); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
311 drawDst->getOpsTask()->resolveTask(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
313 ERRORF(reporter, "No resolve task after drawing MSAA proxy"); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
316 if (resolveTask->flagsForProxy(mmProxy) != ResolveFlags::kMSAA) { in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
317 ERRORF(reporter, "Expected resolve flags to be kMSAA"); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
323 // Now do a mipmapped draw from the same texture. Ensure that even though we have a in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
324 // dependency on the copy task we still ensure that a resolve is recorded. in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
331 *dc->priv().caps()); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
336 drawDst->drawRect(nullptr, in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
340 SkRect::Make(mmProxy->dimensions())); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
342 const GrTextureResolveRenderTask* resolveTask = drawDst->getOpsTask()->resolveTask(); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
344 ERRORF(reporter, "No resolve task after drawing mip mapped proxy"); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
354 if (resolveTask->flagsForProxy(mmProxy) != expectedFlags) { in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()
355 ERRORF(reporter, "Expected resolve flags to be %s", expectedStr); in DEF_GANESH_TEST_FOR_RENDERING_CONTEXTS()