1 /* Copyright (c) 2017-2018 Hans-Kristian Arntzen 2 * 3 * Permission is hereby granted, free of charge, to any person obtaining 4 * a copy of this software and associated documentation files (the 5 * "Software"), to deal in the Software without restriction, including 6 * without limitation the rights to use, copy, modify, merge, publish, 7 * distribute, sublicense, and/or sell copies of the Software, and to 8 * permit persons to whom the Software is furnished to do so, subject to 9 * the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be 12 * included in all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 18 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 19 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 20 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 */ 22 23 #pragma once 24 25 namespace Vulkan 26 { 27 struct ImplementationQuirks 28 { 29 bool instance_deferred_lights = true; 30 bool merge_subpasses = true; 31 bool use_transient_color = true; 32 bool use_transient_depth_stencil = true; 33 bool clustering_list_iteration = false; 34 bool clustering_force_cpu = false; 35 bool queue_wait_on_submission = false; 36 bool staging_need_device_local = false; 37 bool use_async_compute_post = true; 38 bool render_graph_force_single_queue = false; 39 bool force_no_subgroups = false; 40 getVulkan::ImplementationQuirks41 static ImplementationQuirks &get() 42 { 43 static ImplementationQuirks quirks; 44 return quirks; 45 } 46 }; 47 48 struct ImplementationWorkarounds 49 { 50 bool emulate_event_as_pipeline_barrier = false; 51 bool wsi_acquire_barrier_is_expensive = false; 52 bool optimize_all_graphics_barrier = false; 53 }; 54 } 55