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

Unified Diff: src/gpu/vk/GrVkGpu.cpp

Issue 1974983002: Refactor Vulkan image, texture, RTs so that create and getter handles match. (Closed) Base URL: https://skia.googlesource.com/skia.git@fixLayerVersion
Patch Set: nits Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/vk/GrVkCommandBuffer.cpp ('k') | src/gpu/vk/GrVkImage.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/vk/GrVkGpu.cpp
diff --git a/src/gpu/vk/GrVkGpu.cpp b/src/gpu/vk/GrVkGpu.cpp
index c24d8c2799e15d82c5cab5119c55f680981fbd15..f87a6f6fbd199b626d28eebc75f66b980f1760d5 100644
--- a/src/gpu/vk/GrVkGpu.cpp
+++ b/src/gpu/vk/GrVkGpu.cpp
@@ -326,7 +326,7 @@ bool GrVkGpu::uploadTexDataLinear(GrVkTexture* tex,
const GrVkInterface* interface = this->vkInterface();
GR_VK_CALL(interface, GetImageSubresourceLayout(fDevice,
- tex->textureImage(),
+ tex->image(),
&subres,
&layout));
@@ -334,8 +334,7 @@ bool GrVkGpu::uploadTexDataLinear(GrVkTexture* tex,
VkDeviceSize offset = texTop*layout.rowPitch + left*bpp;
VkDeviceSize size = height*layout.rowPitch;
void* mapPtr;
- err = GR_VK_CALL(interface, MapMemory(fDevice, tex->textureMemory(), offset, size, 0,
- &mapPtr));
+ err = GR_VK_CALL(interface, MapMemory(fDevice, tex->memory(), offset, size, 0, &mapPtr));
if (err) {
return false;
}
@@ -359,7 +358,7 @@ bool GrVkGpu::uploadTexDataLinear(GrVkTexture* tex,
}
}
- GR_VK_CALL(interface, UnmapMemory(fDevice, tex->textureMemory()));
+ GR_VK_CALL(interface, UnmapMemory(fDevice, tex->memory()));
return true;
}
@@ -608,11 +607,6 @@ static GrSurfaceOrigin resolve_origin(GrSurfaceOrigin origin) {
GrTexture* GrVkGpu::onWrapBackendTexture(const GrBackendTextureDesc& desc,
GrWrapOwnership ownership) {
- VkFormat format;
- if (!GrPixelConfigToVkFormat(desc.fConfig, &format)) {
- return nullptr;
- }
-
if (0 == desc.fTextureHandle) {
return nullptr;
}
@@ -622,10 +616,17 @@ GrTexture* GrVkGpu::onWrapBackendTexture(const GrBackendTextureDesc& desc,
return nullptr;
}
- const GrVkTextureInfo* info = reinterpret_cast<const GrVkTextureInfo*>(desc.fTextureHandle);
+ const GrVkImageInfo* info = reinterpret_cast<const GrVkImageInfo*>(desc.fTextureHandle);
if (VK_NULL_HANDLE == info->fImage || VK_NULL_HANDLE == info->fAlloc) {
return nullptr;
}
+#ifdef SK_DEBUG
+ VkFormat format;
+ if (!GrPixelConfigToVkFormat(desc.fConfig, &format)) {
+ return nullptr;
+ }
+ SkASSERT(format == info->fFormat);
+#endif
GrSurfaceDesc surfDesc;
// next line relies on GrBackendTextureDesc's flags matching GrTexture's
@@ -642,10 +643,9 @@ GrTexture* GrVkGpu::onWrapBackendTexture(const GrBackendTextureDesc& desc,
GrVkTexture* texture = nullptr;
if (renderTarget) {
texture = GrVkTextureRenderTarget::CreateWrappedTextureRenderTarget(this, surfDesc,
- ownership, format,
- info);
+ ownership, info);
} else {
- texture = GrVkTexture::CreateWrappedTexture(this, surfDesc, ownership, format, info);
+ texture = GrVkTexture::CreateWrappedTexture(this, surfDesc, ownership, info);
}
if (!texture) {
return nullptr;
@@ -657,8 +657,8 @@ GrTexture* GrVkGpu::onWrapBackendTexture(const GrBackendTextureDesc& desc,
GrRenderTarget* GrVkGpu::onWrapBackendRenderTarget(const GrBackendRenderTargetDesc& wrapDesc,
GrWrapOwnership ownership) {
- const GrVkTextureInfo* info =
- reinterpret_cast<const GrVkTextureInfo*>(wrapDesc.fRenderTargetHandle);
+ const GrVkImageInfo* info =
+ reinterpret_cast<const GrVkImageInfo*>(wrapDesc.fRenderTargetHandle);
if (VK_NULL_HANDLE == info->fImage ||
(VK_NULL_HANDLE == info->fAlloc && kAdopt_GrWrapOwnership == ownership)) {
return nullptr;
@@ -710,8 +710,9 @@ void GrVkGpu::generateMipmap(GrVkTexture* tex) const {
VK_ACCESS_TRANSFER_READ_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, false);
// grab handle to the original image resource
- const GrVkImage::Resource* oldResource = tex->resource();
+ const GrVkResource* oldResource = tex->resource();
oldResource->ref();
+ VkImage oldImage = tex->image();
// SkMipMap doesn't include the base level in the level count so we have to add 1
uint32_t levelCount = SkMipMap::ComputeLevelCount(tex->width(), tex->height()) + 1;
@@ -739,15 +740,17 @@ void GrVkGpu::generateMipmap(GrVkTexture* tex) const {
fCurrentCmdBuffer->blitImage(this,
oldResource,
+ oldImage,
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
tex->resource(),
+ tex->image(),
VK_IMAGE_LAYOUT_GENERAL,
1,
&blitRegion,
VK_FILTER_LINEAR);
// setup memory barrier
- SkASSERT(GrVkFormatToPixelConfig(tex->resource()->fFormat, nullptr));
+ SkASSERT(GrVkFormatToPixelConfig(tex->imageFormat(), nullptr));
VkImageAspectFlags aspectFlags = VK_IMAGE_ASPECT_COLOR_BIT;
VkImageMemoryBarrier imageMemoryBarrier = {
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // sType
@@ -758,7 +761,7 @@ void GrVkGpu::generateMipmap(GrVkTexture* tex) const {
VK_IMAGE_LAYOUT_GENERAL, // newLayout
VK_QUEUE_FAMILY_IGNORED, // srcQueueFamilyIndex
VK_QUEUE_FAMILY_IGNORED, // dstQueueFamilyIndex
- tex->resource()->fImage, // image
+ tex->image(), // image
{ aspectFlags, 0, 1, 0, 1 } // subresourceRange
};
@@ -781,10 +784,8 @@ void GrVkGpu::generateMipmap(GrVkTexture* tex) const {
blitRegion.dstOffsets[0] = { 0, 0, 0 };
blitRegion.dstOffsets[1] = { width, height, 0 };
fCurrentCmdBuffer->blitImage(this,
- tex->resource(),
- VK_IMAGE_LAYOUT_GENERAL,
- tex->resource(),
- VK_IMAGE_LAYOUT_GENERAL,
+ *tex,
+ *tex,
1,
&blitRegion,
VK_FILTER_LINEAR);
@@ -947,7 +948,7 @@ GrBackendObject GrVkGpu::createTestingOnlyBackendTexture(void* srcData, int w, i
}
}
- GrVkTextureInfo* info = new GrVkTextureInfo;
+ GrVkImageInfo* info = new GrVkImageInfo;
info->fImage = image;
info->fAlloc = alloc;
info->fImageTiling = imageTiling;
@@ -959,7 +960,7 @@ GrBackendObject GrVkGpu::createTestingOnlyBackendTexture(void* srcData, int w, i
}
bool GrVkGpu::isTestingOnlyBackendTexture(GrBackendObject id) const {
- const GrVkTextureInfo* backend = reinterpret_cast<const GrVkTextureInfo*>(id);
+ const GrVkImageInfo* backend = reinterpret_cast<const GrVkImageInfo*>(id);
if (backend && backend->fImage && backend->fAlloc) {
VkMemoryRequirements req;
@@ -976,7 +977,7 @@ bool GrVkGpu::isTestingOnlyBackendTexture(GrBackendObject id) const {
}
void GrVkGpu::deleteTestingOnlyBackendTexture(GrBackendObject id, bool abandon) {
- const GrVkTextureInfo* backend = reinterpret_cast<const GrVkTextureInfo*>(id);
+ const GrVkImageInfo* backend = reinterpret_cast<const GrVkImageInfo*>(id);
if (backend) {
if (!abandon) {
@@ -1379,10 +1380,8 @@ void GrVkGpu::copySurfaceAsBlit(GrSurface* dst,
blitRegion.dstOffsets[1] = { dstRect.fRight, dstRect.fBottom, 0 };
fCurrentCmdBuffer->blitImage(this,
- srcImage->resource(),
- VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
- dstImage->resource(),
- VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
+ *srcImage,
+ *dstImage,
1,
&blitRegion,
VK_FILTER_NEAREST); // We never scale so any filter works here
« no previous file with comments | « src/gpu/vk/GrVkCommandBuffer.cpp ('k') | src/gpu/vk/GrVkImage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698