GrVkTypes.h revision b2df0c2702329be6380a943d548e7377a51d8565
1fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
2fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth/*
3fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth * Copyright 2016 Google Inc.
4fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth *
5fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth * Use of this source code is governed by a BSD-style license that can be
6fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth * found in the LICENSE file.
7fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth */
8fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
9fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth#ifndef GrVkTypes_DEFINED
10fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth#define GrVkTypes_DEFINED
11fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
12e50f3e75392d7be8ae89df8f55b1700100c34ad7jvanverth#include "vk/GrVkDefines.h"
13fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
14fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth/**
15fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth * KHR_debug
16fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth */
17fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth/*typedef void (GR_GL_FUNCTION_TYPE* GrVkDEBUGPROC)(GrVkenum source,
18fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth                                                  GrVkenum type,
19fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth                                                  GrVkuint id,
20fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth                                                  GrVkenum severity,
21fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth                                                  GrVksizei length,
22fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth                                                  const GrVkchar* message,
23fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth                                                  const void* userParam);*/
24fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
25fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
26fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
27fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth///////////////////////////////////////////////////////////////////////////////
28fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth/**
29fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth * Types for interacting with Vulkan resources created externally to Skia. GrBackendObjects for
30b2df0c2702329be6380a943d548e7377a51d8565egdaniel * Vulkan textures are really const GrVkImageInfo*
31fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth */
32b2df0c2702329be6380a943d548e7377a51d8565egdanielstruct GrVkImageInfo {
33fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth    VkImage        fImage;
34b2df0c2702329be6380a943d548e7377a51d8565egdaniel    VkDeviceMemory fAlloc;    // can be VK_NULL_HANDLE iff Tex is an RT and uses borrow semantics
35fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth    VkImageTiling  fImageTiling;
36fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth    VkImageLayout  fImageLayout;
3758a8d9214a70e0f6c81c88a8b0b563c06bf0f70eegdaniel    VkFormat       fFormat;
382af0f1b014b9aabb6119bf66fac20e4cd3a8279bjvanverth    uint32_t       fLevelCount;
39b2df0c2702329be6380a943d548e7377a51d8565egdaniel
40b2df0c2702329be6380a943d548e7377a51d8565egdaniel    // This gives a way for a client to update the layout of the Image if they change the layout
41b2df0c2702329be6380a943d548e7377a51d8565egdaniel    // while we're still holding onto the wrapped texture. They will first need to get a handle
42b2df0c2702329be6380a943d548e7377a51d8565egdaniel    // to our internal GrVkImageInfo by calling getTextureHandle on a GrVkTexture.
43b2df0c2702329be6380a943d548e7377a51d8565egdaniel    void updateImageLayout(VkImageLayout layout) { fImageLayout = layout; }
44fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth};
45fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
46b2df0c2702329be6380a943d548e7377a51d8565egdanielGR_STATIC_ASSERT(sizeof(GrBackendObject) >= sizeof(const GrVkImageInfo*));
47fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth
48fd359caf0cbdefd759d1c788d72faba3f65a6386jvanverth#endif
49