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

Side by Side Diff: src/gpu/vk/GrVkImage.h

Issue 1718693002: Add vulkan files into skia repo. (Closed) Base URL: https://skia.googlesource.com/skia.git@merge
Patch Set: fix path Created 4 years, 10 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
« no previous file with comments | « src/gpu/vk/GrVkGpu.cpp ('k') | src/gpu/vk/GrVkImage.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef GrVkImage_DEFINED
9 #define GrVkImage_DEFINED
10
11 #include "GrVkResource.h"
12 #include "SkTypes.h"
13
14 #include "vulkan/vulkan.h"
15
16 class GrVkGpu;
17
18 class GrVkImage : SkNoncopyable {
19 public:
20 // unlike GrVkBuffer, this needs to be public so GrVkStencilAttachment can u se it
21 class Resource : public GrVkResource {
22 public:
23 enum Flags {
24 kNo_Flags = 0,
25 kLinearTiling_Flag = 0x01
26 };
27
28 VkImage fImage;
29 VkDeviceMemory fAlloc;
30 Flags fFlags;
31
32 Resource() : INHERITED(), fImage(nullptr), fAlloc(nullptr), fFlags(kNo_F lags) {}
33
34 Resource(VkImage image, VkDeviceMemory alloc, Flags flags)
35 : fImage(image), fAlloc(alloc), fFlags(flags) {}
36
37 ~Resource() override {}
38 private:
39 void freeGPUData(const GrVkGpu* gpu) const override;
40
41 typedef GrVkResource INHERITED;
42 };
43
44
45 GrVkImage(const Resource* imageResource) : fResource(imageResource) {
46 if (imageResource->fFlags & Resource::kLinearTiling_Flag) {
47 fCurrentLayout = VK_IMAGE_LAYOUT_PREINITIALIZED;
48 } else {
49 fCurrentLayout = VK_IMAGE_LAYOUT_UNDEFINED;
50 }
51 imageResource->ref();
52 }
53
54 virtual ~GrVkImage();
55
56 VkImage textureImage() const { return fResource->fImage; }
57 VkDeviceMemory textureMemory() const { return fResource->fAlloc; }
58 const Resource* resource() const { return fResource; }
59 bool isLinearTiled() const {
60 return SkToBool(fResource->fFlags & Resource::kLinearTiling_Flag);
61 }
62
63 VkImageLayout currentLayout() const { return fCurrentLayout; }
64
65 void setImageLayout(const GrVkGpu* gpu, VkImageLayout newLayout,
66 VkAccessFlags srcAccessMask,
67 VkAccessFlags dstAccessMask,
68 VkPipelineStageFlags srcStageMask,
69 VkPipelineStageFlags dstStageMask,
70 bool byRegion);
71
72 struct ImageDesc {
73 VkImageType fImageType;
74 VkFormat fFormat;
75 uint32_t fWidth;
76 uint32_t fHeight;
77 uint32_t fLevels;
78 uint32_t fSamples;
79 VkImageTiling fImageTiling;
80 VkImageUsageFlags fUsageFlags;
81 VkFlags fMemProps;
82
83 ImageDesc()
84 : fImageType(VK_IMAGE_TYPE_2D)
85 , fFormat(VK_FORMAT_UNDEFINED)
86 , fWidth(0)
87 , fHeight(0)
88 , fLevels(1)
89 , fSamples(1)
90 , fImageTiling(VK_IMAGE_TILING_OPTIMAL)
91 , fUsageFlags(0)
92 , fMemProps(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) {}
93 };
94
95 static const Resource* CreateResource(const GrVkGpu* gpu, const ImageDesc& i mageDesc);
96
97 protected:
98
99 void releaseImage(const GrVkGpu* gpu);
100 void abandonImage();
101
102 const Resource* fResource;
103
104 VkImageLayout fCurrentLayout;
105
106 };
107
108 #endif
OLDNEW
« no previous file with comments | « src/gpu/vk/GrVkGpu.cpp ('k') | src/gpu/vk/GrVkImage.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698