Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Side by Side Diff: src/gpu/vk/GrVkGpu.cpp

Issue 1825393002: Consolidate GPU buffer implementations (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: gyp Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 382
383 // Release old command buffer and create a new one 383 // Release old command buffer and create a new one
384 fCurrentCmdBuffer->unref(this); 384 fCurrentCmdBuffer->unref(this);
385 fCurrentCmdBuffer = fResourceProvider.createCommandBuffer(); 385 fCurrentCmdBuffer = fResourceProvider.createCommandBuffer();
386 SkASSERT(fCurrentCmdBuffer); 386 SkASSERT(fCurrentCmdBuffer);
387 387
388 fCurrentCmdBuffer->begin(this); 388 fCurrentCmdBuffer->begin(this);
389 } 389 }
390 390
391 /////////////////////////////////////////////////////////////////////////////// 391 ///////////////////////////////////////////////////////////////////////////////
392 GrVertexBuffer* GrVkGpu::onCreateVertexBuffer(size_t size, bool dynamic) { 392 GrBuffer* GrVkGpu::onCreateBuffer(GrBufferType type, size_t size, GrAccessPatter n accessPattern) {
393 return GrVkVertexBuffer::Create(this, size, dynamic); 393 switch (type) {
394 } 394 case kVertex_GrBufferType:
395 395 return GrVkVertexBuffer::Create(this, size, accessPattern);
396 GrIndexBuffer* GrVkGpu::onCreateIndexBuffer(size_t size, bool dynamic) { 396 case kIndex_GrBufferType:
397 return GrVkIndexBuffer::Create(this, size, dynamic); 397 return GrVkIndexBuffer::Create(this, size, accessPattern);
398 } 398 case kXferCpuToGpu_GrBufferType:
399 399 case kXferGpuToCpu_GrBufferType:
400 GrTransferBuffer* GrVkGpu::onCreateTransferBuffer(size_t size, TransferType type ) { 400 return GrVkTransferBuffer::Create(this, size, type);
401 GrVkBuffer::Type bufferType = kCpuToGpu_TransferType ? GrVkBuffer::kCopyRead _Type 401 default:
402 : GrVkBuffer::kCopyWrit e_Type; 402 SkFAIL("Unknown buffer type.");
403 return GrVkTransferBuffer::Create(this, size, bufferType); 403 return nullptr;
404 }
404 } 405 }
405 406
406 //////////////////////////////////////////////////////////////////////////////// 407 ////////////////////////////////////////////////////////////////////////////////
407 bool GrVkGpu::onGetWritePixelsInfo(GrSurface* dstSurface, int width, int height, 408 bool GrVkGpu::onGetWritePixelsInfo(GrSurface* dstSurface, int width, int height,
408 GrPixelConfig srcConfig, DrawPreference* draw Preference, 409 GrPixelConfig srcConfig, DrawPreference* draw Preference,
409 WritePixelTempDrawInfo* tempDrawInfo) { 410 WritePixelTempDrawInfo* tempDrawInfo) {
410 if (kIndex_8_GrPixelConfig == srcConfig || GrPixelConfigIsCompressed(dstSurf ace->config())) { 411 if (kIndex_8_GrPixelConfig == srcConfig || GrPixelConfigIsCompressed(dstSurf ace->config())) {
411 return false; 412 return false;
412 } 413 }
413 414
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 memcpy(mapPtr, data, trimRowBytes * height); 550 memcpy(mapPtr, data, trimRowBytes * height);
550 } else { 551 } else {
551 SkRectMemcpy(mapPtr, static_cast<size_t>(layout.rowPitch), data, rowBytes, 552 SkRectMemcpy(mapPtr, static_cast<size_t>(layout.rowPitch), data, rowBytes,
552 trimRowBytes, height); 553 trimRowBytes, height);
553 } 554 }
554 } 555 }
555 556
556 GR_VK_CALL(interface, UnmapMemory(fDevice, tex->textureMemory())); 557 GR_VK_CALL(interface, UnmapMemory(fDevice, tex->textureMemory()));
557 } else { 558 } else {
558 GrVkTransferBuffer* transferBuffer = 559 GrVkTransferBuffer* transferBuffer =
559 GrVkTransferBuffer::Create(this, trimRowBytes * height, GrVkBuffer:: kCopyRead_Type); 560 GrVkTransferBuffer::Create(this, trimRowBytes * height, kXferCpuToGp u_GrBufferType);
560 561
561 void* mapPtr = transferBuffer->map(); 562 void* mapPtr = transferBuffer->map();
562 563
563 if (kBottomLeft_GrSurfaceOrigin == desc.fOrigin) { 564 if (kBottomLeft_GrSurfaceOrigin == desc.fOrigin) {
564 // copy into buffer by rows 565 // copy into buffer by rows
565 const char* srcRow = reinterpret_cast<const char*>(data); 566 const char* srcRow = reinterpret_cast<const char*>(data);
566 char* dstRow = reinterpret_cast<char*>(mapPtr)+(height - 1)*trimRowB ytes; 567 char* dstRow = reinterpret_cast<char*>(mapPtr)+(height - 1)*trimRowB ytes;
567 for (int y = 0; y < height; y++) { 568 for (int y = 0; y < height; y++) {
568 memcpy(dstRow, srcRow, trimRowBytes); 569 memcpy(dstRow, srcRow, trimRowBytes);
569 srcRow += rowBytes; 570 srcRow += rowBytes;
(...skipping 864 matching lines...) Expand 10 before | Expand all | Expand 10 after
1434 VkAccessFlags dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT; 1435 VkAccessFlags dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
1435 tgt->setImageLayout(this, 1436 tgt->setImageLayout(this,
1436 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, 1437 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
1437 srcAccessMask, 1438 srcAccessMask,
1438 dstAccessMask, 1439 dstAccessMask,
1439 srcStageMask, 1440 srcStageMask,
1440 dstStageMask, 1441 dstStageMask,
1441 false); 1442 false);
1442 1443
1443 GrVkTransferBuffer* transferBuffer = 1444 GrVkTransferBuffer* transferBuffer =
1444 reinterpret_cast<GrVkTransferBuffer*>(this->createTransferBuffer(rowByte s * height, 1445 GrVkTransferBuffer::Create(this, rowBytes * height, kXferGpuToCpu_GrBuff erType);
1445 kGpuToC pu_TransferType));
1446 1446
1447 bool flipY = kBottomLeft_GrSurfaceOrigin == surface->origin(); 1447 bool flipY = kBottomLeft_GrSurfaceOrigin == surface->origin();
1448 VkOffset3D offset = { 1448 VkOffset3D offset = {
1449 left, 1449 left,
1450 flipY ? surface->height() - top - height : top, 1450 flipY ? surface->height() - top - height : top,
1451 0 1451 0
1452 }; 1452 };
1453 1453
1454 // Copy the image to a buffer so we can map it to cpu memory 1454 // Copy the image to a buffer so we can map it to cpu memory
1455 VkBufferImageCopy region; 1455 VkBufferImageCopy region;
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 int set_a_break_pt_here = 9; 1661 int set_a_break_pt_here = 9;
1662 aglSwapBuffers(aglGetCurrentContext()); 1662 aglSwapBuffers(aglGetCurrentContext());
1663 #elif defined(SK_BUILD_FOR_WIN32) 1663 #elif defined(SK_BUILD_FOR_WIN32)
1664 SwapBuf(); 1664 SwapBuf();
1665 int set_a_break_pt_here = 9; 1665 int set_a_break_pt_here = 9;
1666 SwapBuf(); 1666 SwapBuf();
1667 #endif 1667 #endif
1668 #endif 1668 #endif
1669 } 1669 }
1670 1670
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698