1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2016 Google Inc. 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef GrVkTypes_DEFINED 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define GrVkTypes_DEFINED 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrTypes.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "vk/GrVkDefines.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/** 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * KHR_debug 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/*typedef void (GR_GL_FUNCTION_TYPE* GrVkDEBUGPROC)(GrVkenum source, 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrVkenum type, 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrVkuint id, 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrVkenum severity, 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrVksizei length, 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const GrVkchar* message, 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const void* userParam);*/ 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/////////////////////////////////////////////////////////////////////////////// 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/** 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Types for interacting with Vulkan resources created externally to Skia. GrBackendObjects for 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Vulkan textures are really const GrVkImageInfo* 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstruct GrVkAlloc { 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrVkAlloc() 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot : fMemory(VK_NULL_HANDLE) 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fOffset(0) 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fSize(0) 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fFlags(0) 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fUsesSystemHeap(false) {} 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrVkAlloc(VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, uint32_t flags) 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot : fMemory(memory) 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fOffset(offset) 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fSize(size) 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fFlags(flags) 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot , fUsesSystemHeap(false) {} 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VkDeviceMemory fMemory; // can be VK_NULL_HANDLE iff is an RT and is borrowed 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VkDeviceSize fOffset; 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VkDeviceSize fSize; // this can be indeterminate iff Tex uses borrow semantics 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot uint32_t fFlags; 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot enum Flag { 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot kNoncoherent_Flag = 0x1, // memory must be flushed to device after mapping 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot }; 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot friend class GrVkHeap; // For access to usesSystemHeap 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool fUsesSystemHeap; 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstruct GrVkImageInfo { 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * If the image's format is sRGB (GrVkFormatIsSRGB returns true), then the image must have 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * been created with VkImageCreateFlags containing VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT. 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VkImage fImage; 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrVkAlloc fAlloc; 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VkImageTiling fImageTiling; 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VkImageLayout fImageLayout; 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot VkFormat fFormat; 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot uint32_t fLevelCount; 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot uint32_t fInitialQueueFamily = VK_QUEUE_FAMILY_IGNORED; 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot uint32_t fCurrentQueueFamily = VK_QUEUE_FAMILY_IGNORED; 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // This gives a way for a client to update the layout of the Image if they change the layout 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // while we're still holding onto the wrapped texture. They will first need to get a handle 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // to our internal GrVkImageInfo by calling getTextureHandle on a GrVkTexture. 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void updateImageLayout(VkImageLayout layout) { fImageLayout = layout; } 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotGR_STATIC_ASSERT(sizeof(GrBackendObject) >= sizeof(const GrVkImageInfo*)); 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 83