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