/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "GrVkBufferView.h" #include "GrVkGpu.h" #include "GrVkUtil.h" const GrVkBufferView* GrVkBufferView::Create(const GrVkGpu* gpu, VkBuffer buffer, VkFormat format, VkDeviceSize offset, VkDeviceSize range) { VkBufferView bufferView; // Create the VkBufferView VkBufferViewCreateInfo viewInfo; memset(&viewInfo, 0, sizeof(VkBufferViewCreateInfo)); viewInfo.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO; viewInfo.pNext = nullptr; viewInfo.flags = 0; viewInfo.buffer = buffer; viewInfo.format = format; viewInfo.offset = offset; viewInfo.range = range; VkResult err = GR_VK_CALL(gpu->vkInterface(), CreateBufferView(gpu->device(), &viewInfo, nullptr, &bufferView)); if (err) { return nullptr; } return new GrVkBufferView(bufferView); } void GrVkBufferView::freeGPUData(const GrVkGpu* gpu) const { GR_VK_CALL(gpu->vkInterface(), DestroyBufferView(gpu->device(), fBufferView, nullptr)); }