1867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos#ifndef _VKDEBUGREPORTUTIL_HPP 2867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos#define _VKDEBUGREPORTUTIL_HPP 3867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos/*------------------------------------------------------------------------- 4867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * Vulkan CTS Framework 5867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * -------------------- 6867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * 7867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * Copyright (c) 2016 Google Inc. 8867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * 955378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * Licensed under the Apache License, Version 2.0 (the "License"); 1055378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * you may not use this file except in compliance with the License. 1155378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * You may obtain a copy of the License at 12867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * 1355378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * http://www.apache.org/licenses/LICENSE-2.0 14867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * 1555378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * Unless required by applicable law or agreed to in writing, software 1655378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * distributed under the License is distributed on an "AS IS" BASIS, 1755378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1855378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * See the License for the specific language governing permissions and 1955378cabd32d93151fe0396bb98fe457d70d201fPyry Haulos * limitations under the License. 20867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * 21867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos *//*! 22867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * \file 23867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos * \brief VK_EXT_debug_report utilities 24867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos *//*--------------------------------------------------------------------*/ 25867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 26867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos#include "vkDefs.hpp" 27867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos#include "vkRef.hpp" 28867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos#include "deAppendList.hpp" 29867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 30867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos#include <ostream> 31867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 32867246e525603a3242a91ce52cada18406bd1a05Pyry Haulosnamespace vk 33867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos{ 34867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 35867246e525603a3242a91ce52cada18406bd1a05Pyry Haulosstruct DebugReportMessage 36867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos{ 37867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos VkDebugReportFlagsEXT flags; 38867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos VkDebugReportObjectTypeEXT objectType; 39867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos deUint64 object; 40867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos size_t location; 41867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos deInt32 messageCode; 42867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos std::string layerPrefix; 43867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos std::string message; 44867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 45867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos DebugReportMessage (void) 46867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos : flags (0) 47867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , objectType ((VkDebugReportObjectTypeEXT)0) 48867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , object (0) 49867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , location (0) 50867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , messageCode (0) 51867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos {} 52867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 53867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos DebugReportMessage (VkDebugReportFlagsEXT flags_, 54867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos VkDebugReportObjectTypeEXT objectType_, 55867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos deUint64 object_, 56867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos size_t location_, 57867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos deInt32 messageCode_, 58867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos const std::string& layerPrefix_, 59867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos const std::string& message_) 60867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos : flags (flags_) 61867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , objectType (objectType_) 62867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , object (object_) 63867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , location (location_) 64867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , messageCode (messageCode_) 65867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , layerPrefix (layerPrefix_) 66867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos , message (message_) 67867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos {} 68867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos}; 69867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 70867246e525603a3242a91ce52cada18406bd1a05Pyry Haulosstd::ostream& operator<< (std::ostream& str, const DebugReportMessage& message); 71867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 72867246e525603a3242a91ce52cada18406bd1a05Pyry Haulosclass DebugReportRecorder 73867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos{ 74867246e525603a3242a91ce52cada18406bd1a05Pyry Haulospublic: 75867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos typedef de::AppendList<DebugReportMessage> MessageList; 76867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 77867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos DebugReportRecorder (const InstanceInterface& vki, VkInstance instance); 78867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos ~DebugReportRecorder (void); 79867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 80867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos const MessageList& getMessages (void) const { return m_messages; } 81867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos void clearMessages (void) { m_messages.clear(); } 82867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 83867246e525603a3242a91ce52cada18406bd1a05Pyry Haulosprivate: 84867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos MessageList m_messages; 85867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos const Unique<VkDebugReportCallbackEXT> m_callback; 86867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos}; 87867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 88501ac7ba5259b7e9f6d107fe1bed304886ef7e12Pyry Haulosbool isDebugReportSupported (const PlatformInterface& vkp); 89501ac7ba5259b7e9f6d107fe1bed304886ef7e12Pyry Haulos 90867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos} // vk 91867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos 92867246e525603a3242a91ce52cada18406bd1a05Pyry Haulos#endif // _VKDEBUGREPORTUTIL_HPP 93