blob: 887b46c002a6b63a8c2dbabae2eed447c018cada [file] [log] [blame]
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
#include <executorch/backends/vulkan/runtime/graph/GraphConfig.h>
namespace vkcompute {
GraphConfig::GraphConfig() {
// No automatic submissions
const uint32_t cmd_submit_frequency = UINT32_MAX;
// Only one command buffer will be encoded at a time
const vkapi::CommandPoolConfig cmd_config{
1u, // cmd_pool_initial_size
1u, // cmd_pool_batch_size
};
// Use lazy descriptor pool initialization by default; the graph runtime will
// tally up the number of descriptor sets needed while building the graph and
// trigger descriptor pool initialization with exact sizes before encoding the
// command buffer.
const vkapi::DescriptorPoolConfig descriptor_pool_config{
0u, // descriptor_pool_max_sets
0u, // descriptor_uniform_buffer_count
0u, // descriptor_storage_buffer_count
0u, // descriptor_combined_sampler_count
0u, // descriptor_storage_image_count
0u, // descriptor_pile_sizes
};
const vkapi::QueryPoolConfig query_pool_config{};
context_config = {
cmd_submit_frequency,
cmd_config,
descriptor_pool_config,
query_pool_config,
};
// Empirically selected safety factor. If descriptor pools start running out
// of memory, increase this safety factor.
descriptor_pool_safety_factor = 1.25;
// For now, force kTexture3D storage as we are still developing shader support
// for buffer storage type.
enable_storage_type_override = true;
storage_type_override = utils::kTexture3D;
// For now, force kWidthPacked memory layout by default as we are still
// developing support for other memory layouts. In the future memory layout
// settings will be serialized as part of the graph.
enable_memory_layout_override = true;
memory_layout_override = utils::kWidthPacked;
// QueryPool objects are used to measure execution times of individual shader
// dispatches. By default, this functionality is disabled.
enable_querypool = false;
enable_local_wg_size_override = false;
local_wg_size_override = {};
}
void GraphConfig::set_storage_type_override(utils::StorageType storage_type) {
enable_storage_type_override = true;
storage_type_override = storage_type;
}
void GraphConfig::set_memory_layout_override(
utils::GPUMemoryLayout memory_layout) {
enable_memory_layout_override = true;
memory_layout_override = memory_layout;
}
void GraphConfig::set_local_wg_size_override(
const utils::uvec3& local_wg_size) {
enable_local_wg_size_override = true;
local_wg_size_override = local_wg_size;
}
} // namespace vkcompute