| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "GrVkGpu.h" | 8 #include "GrVkGpu.h" |
| 9 | 9 |
| 10 #include "GrContextOptions.h" | 10 #include "GrContextOptions.h" |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 } | 245 } |
| 246 | 246 |
| 247 //////////////////////////////////////////////////////////////////////////////// | 247 //////////////////////////////////////////////////////////////////////////////// |
| 248 bool GrVkGpu::onGetWritePixelsInfo(GrSurface* dstSurface, int width, int height, | 248 bool GrVkGpu::onGetWritePixelsInfo(GrSurface* dstSurface, int width, int height, |
| 249 GrPixelConfig srcConfig, DrawPreference* draw
Preference, | 249 GrPixelConfig srcConfig, DrawPreference* draw
Preference, |
| 250 WritePixelTempDrawInfo* tempDrawInfo) { | 250 WritePixelTempDrawInfo* tempDrawInfo) { |
| 251 if (kIndex_8_GrPixelConfig == srcConfig || GrPixelConfigIsCompressed(dstSurf
ace->config())) { | 251 if (kIndex_8_GrPixelConfig == srcConfig || GrPixelConfigIsCompressed(dstSurf
ace->config())) { |
| 252 return false; | 252 return false; |
| 253 } | 253 } |
| 254 | 254 |
| 255 if (dstSurface->config() == srcConfig) { | |
| 256 return true; | |
| 257 } | |
| 258 | |
| 259 GrRenderTarget* renderTarget = dstSurface->asRenderTarget(); | 255 GrRenderTarget* renderTarget = dstSurface->asRenderTarget(); |
| 260 | 256 |
| 261 // Start off assuming no swizzling | 257 // Start off assuming no swizzling |
| 262 tempDrawInfo->fSwizzle = GrSwizzle::RGBA(); | 258 tempDrawInfo->fSwizzle = GrSwizzle::RGBA(); |
| 263 tempDrawInfo->fWriteConfig = srcConfig; | 259 tempDrawInfo->fWriteConfig = srcConfig; |
| 264 | 260 |
| 265 // These settings we will always want if a temp draw is performed. Initially
set the config | 261 // These settings we will always want if a temp draw is performed. Initially
set the config |
| 266 // to srcConfig, though that may be modified if we decide to do a R/B swap | 262 // to srcConfig, though that may be modified if we decide to do a R/B swap |
| 267 tempDrawInfo->fTempSurfaceDesc.fFlags = kNone_GrSurfaceFlags; | 263 tempDrawInfo->fTempSurfaceDesc.fFlags = kNone_GrSurfaceFlags; |
| 268 tempDrawInfo->fTempSurfaceDesc.fConfig = srcConfig; | 264 tempDrawInfo->fTempSurfaceDesc.fConfig = srcConfig; |
| 269 tempDrawInfo->fTempSurfaceDesc.fWidth = width; | 265 tempDrawInfo->fTempSurfaceDesc.fWidth = width; |
| 270 tempDrawInfo->fTempSurfaceDesc.fHeight = height; | 266 tempDrawInfo->fTempSurfaceDesc.fHeight = height; |
| 271 tempDrawInfo->fTempSurfaceDesc.fSampleCnt = 0; | 267 tempDrawInfo->fTempSurfaceDesc.fSampleCnt = 0; |
| 272 tempDrawInfo->fTempSurfaceDesc.fOrigin = kTopLeft_GrSurfaceOrigin; | 268 tempDrawInfo->fTempSurfaceDesc.fOrigin = kTopLeft_GrSurfaceOrigin; |
| 273 | 269 |
| 270 if (dstSurface->config() == srcConfig) { |
| 271 return true; |
| 272 } |
| 273 |
| 274 if (renderTarget && this->vkCaps().isConfigRenderable(renderTarget->config()
, false)) { | 274 if (renderTarget && this->vkCaps().isConfigRenderable(renderTarget->config()
, false)) { |
| 275 ElevateDrawPreference(drawPreference, kRequireDraw_DrawPreference); | 275 ElevateDrawPreference(drawPreference, kRequireDraw_DrawPreference); |
| 276 | 276 |
| 277 bool configsAreRBSwaps = GrPixelConfigSwapRAndB(srcConfig) == dstSurface
->config(); | 277 bool configsAreRBSwaps = GrPixelConfigSwapRAndB(srcConfig) == dstSurface
->config(); |
| 278 | 278 |
| 279 if (!this->vkCaps().isConfigTexturable(srcConfig) && configsAreRBSwaps)
{ | 279 if (!this->vkCaps().isConfigTexturable(srcConfig) && configsAreRBSwaps)
{ |
| 280 if (!this->vkCaps().isConfigTexturable(dstSurface->config())) { | 280 if (!this->vkCaps().isConfigTexturable(dstSurface->config())) { |
| 281 return false; | 281 return false; |
| 282 } | 282 } |
| 283 tempDrawInfo->fTempSurfaceDesc.fConfig = dstSurface->config(); | 283 tempDrawInfo->fTempSurfaceDesc.fConfig = dstSurface->config(); |
| (...skipping 1198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1482 GrVkRenderTarget* target, | 1482 GrVkRenderTarget* target, |
| 1483 const SkIRect& bounds) { | 1483 const SkIRect& bounds) { |
| 1484 // Currently it is fine for us to always pass in 1 for the clear count even
if no attachment | 1484 // Currently it is fine for us to always pass in 1 for the clear count even
if no attachment |
| 1485 // uses it. In the current state, we also only use the LOAD_OP_CLEAR for the
color attachment | 1485 // uses it. In the current state, we also only use the LOAD_OP_CLEAR for the
color attachment |
| 1486 // which is always at the first attachment. | 1486 // which is always at the first attachment. |
| 1487 fCurrentCmdBuffer->beginRenderPass(this, renderPass, 1, colorClear, *target,
bounds, true); | 1487 fCurrentCmdBuffer->beginRenderPass(this, renderPass, 1, colorClear, *target,
bounds, true); |
| 1488 fCurrentCmdBuffer->executeCommands(this, buffer); | 1488 fCurrentCmdBuffer->executeCommands(this, buffer); |
| 1489 fCurrentCmdBuffer->endRenderPass(this); | 1489 fCurrentCmdBuffer->endRenderPass(this); |
| 1490 } | 1490 } |
| 1491 | 1491 |
| OLD | NEW |