OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright 2016 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 #include "GrVkImageView.h" | |
9 #include "GrVkGpu.h" | |
10 #include "GrVkUtil.h" | |
11 | |
12 const GrVkImageView* GrVkImageView::Create(GrVkGpu* gpu, VkImage image, VkFormat
format, | |
13 Type viewType) { | |
14 VkImageView imageView; | |
15 | |
16 // Create the VkImageView | |
17 VkImageViewCreateInfo viewInfo = { | |
18 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, // sType | |
19 NULL, // pNext | |
20 0, // flags | |
21 image, // image | |
22 VK_IMAGE_VIEW_TYPE_2D, // viewType | |
23 format, // format | |
24 { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, | |
25 VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A }, // components | |
26 { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }, // subresourceRa
nge | |
27 }; | |
28 if (kStencil_Type == viewType) { | |
29 viewInfo.components.r = VK_COMPONENT_SWIZZLE_ZERO; | |
30 viewInfo.components.g = VK_COMPONENT_SWIZZLE_ZERO; | |
31 viewInfo.components.b = VK_COMPONENT_SWIZZLE_ZERO; | |
32 viewInfo.components.a = VK_COMPONENT_SWIZZLE_ZERO; | |
33 viewInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_STENCIL_BIT; | |
34 } | |
35 | |
36 VkResult err = GR_VK_CALL(gpu->vkInterface(), CreateImageView(gpu->device(),
&viewInfo, | |
37 nullptr, &imag
eView)); | |
38 if (err) { | |
39 return nullptr; | |
40 } | |
41 | |
42 return new GrVkImageView(imageView); | |
43 } | |
44 | |
45 void GrVkImageView::freeGPUData(const GrVkGpu* gpu) const { | |
46 GR_VK_CALL(gpu->vkInterface(), DestroyImageView(gpu->device(), fImageView, n
ullptr)); | |
47 } | |
48 | |
49 | |
OLD | NEW |