blob: f4ed9ea82158d1aabdf9f54dd11e4bcf9da43ae3 [file] [log] [blame]
Greg Danielc2dd5ed2017-05-05 13:49:11 -04001/*
2 * Copyright 2017 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
Mike Kleinc0bd9f92019-04-23 12:05:21 -05008#include "src/gpu/vk/GrVkBufferView.h"
9#include "src/gpu/vk/GrVkGpu.h"
10#include "src/gpu/vk/GrVkUtil.h"
Greg Danielc2dd5ed2017-05-05 13:49:11 -040011
12const GrVkBufferView* GrVkBufferView::Create(const GrVkGpu* gpu, VkBuffer buffer, VkFormat format,
13 VkDeviceSize offset, VkDeviceSize range) {
14 VkBufferView bufferView;
15
16 // Create the VkBufferView
17 VkBufferViewCreateInfo viewInfo;
18 memset(&viewInfo, 0, sizeof(VkBufferViewCreateInfo));
19 viewInfo.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
20 viewInfo.pNext = nullptr;
21 viewInfo.flags = 0;
22 viewInfo.buffer = buffer;
23 viewInfo.format = format;
24 viewInfo.offset = offset;
25 viewInfo.range = range;
26
27 VkResult err = GR_VK_CALL(gpu->vkInterface(), CreateBufferView(gpu->device(), &viewInfo,
28 nullptr, &bufferView));
29 if (err) {
30 return nullptr;
31 }
32
33 return new GrVkBufferView(bufferView);
34}
35
Ethan Nicholas8e265a72018-12-12 16:22:40 -050036void GrVkBufferView::freeGPUData(GrVkGpu* gpu) const {
Greg Danielc2dd5ed2017-05-05 13:49:11 -040037 GR_VK_CALL(gpu->vkInterface(), DestroyBufferView(gpu->device(), fBufferView, nullptr));
38}