#pragma once

#include "test_api_common.h"

namespace dxbc_spv::test_api {

Builder test_resources_cbv();
Builder test_resources_cbv_dynamic();
Builder test_resources_cbv_indexed();
Builder test_resources_cbv_indexed_nonuniform();

Builder test_resources_srv_buffer_typed_load();
Builder test_resources_srv_buffer_typed_query();
Builder test_resources_srv_buffer_raw_load();
Builder test_resources_srv_buffer_raw_query();
Builder test_resources_srv_buffer_structured_load();
Builder test_resources_srv_buffer_structured_query();

Builder test_resources_srv_indexed_buffer_typed_load();
Builder test_resources_srv_indexed_buffer_typed_query();
Builder test_resources_srv_indexed_buffer_raw_load();
Builder test_resources_srv_indexed_buffer_raw_query();
Builder test_resources_srv_indexed_buffer_structured_load();
Builder test_resources_srv_indexed_buffer_structured_query();

Builder test_resources_uav_buffer_typed_load();
Builder test_resources_uav_buffer_typed_load_precise();
Builder test_resources_uav_buffer_typed_store();
Builder test_resources_uav_buffer_typed_atomic();
Builder test_resources_uav_buffer_typed_query();
Builder test_resources_uav_buffer_raw_load();
Builder test_resources_uav_buffer_raw_load_precise();
Builder test_resources_uav_buffer_raw_store();
Builder test_resources_uav_buffer_raw_atomic();
Builder test_resources_uav_buffer_raw_query();
Builder test_resources_uav_buffer_structured_load();
Builder test_resources_uav_buffer_structured_load_precise();
Builder test_resources_uav_buffer_structured_store();
Builder test_resources_uav_buffer_structured_atomic();
Builder test_resources_uav_buffer_structured_query();

Builder test_resources_uav_indexed_buffer_typed_load();
Builder test_resources_uav_indexed_buffer_typed_store();
Builder test_resources_uav_indexed_buffer_typed_atomic();
Builder test_resources_uav_indexed_buffer_typed_query();
Builder test_resources_uav_indexed_buffer_raw_load();
Builder test_resources_uav_indexed_buffer_raw_store();
Builder test_resources_uav_indexed_buffer_raw_atomic();
Builder test_resources_uav_indexed_buffer_raw_query();
Builder test_resources_uav_indexed_buffer_structured_load();
Builder test_resources_uav_indexed_buffer_structured_store();
Builder test_resources_uav_indexed_buffer_structured_atomic();
Builder test_resources_uav_indexed_buffer_structured_query();

Builder test_resource_uav_counter();
Builder test_resource_uav_counter_indexed();

Builder test_resource_srv_image_1d_load();
Builder test_resource_srv_image_1d_query();
Builder test_resource_srv_image_1d_sample();
Builder test_resource_srv_image_1d_array_load();
Builder test_resource_srv_image_1d_array_query();
Builder test_resource_srv_image_1d_array_sample();
Builder test_resource_srv_image_2d_load();
Builder test_resource_srv_image_2d_query();
Builder test_resource_srv_image_2d_sample();
Builder test_resource_srv_image_2d_sample_depth();
Builder test_resource_srv_image_2d_gather();
Builder test_resource_srv_image_2d_gather_depth();
Builder test_resource_srv_image_2d_array_load();
Builder test_resource_srv_image_2d_array_query();
Builder test_resource_srv_image_2d_array_sample();
Builder test_resource_srv_image_2d_array_sample_depth();
Builder test_resource_srv_image_2d_array_gather();
Builder test_resource_srv_image_2d_array_gather_depth();
Builder test_resource_srv_image_2d_ms_load();
Builder test_resource_srv_image_2d_ms_query();
Builder test_resource_srv_image_2d_ms_array_load();
Builder test_resource_srv_image_2d_ms_array_query();
Builder test_resource_srv_image_cube_query();
Builder test_resource_srv_image_cube_sample();
Builder test_resource_srv_image_cube_sample_depth();
Builder test_resource_srv_image_cube_gather();
Builder test_resource_srv_image_cube_gather_depth();
Builder test_resource_srv_image_cube_array_query();
Builder test_resource_srv_image_cube_array_sample();
Builder test_resource_srv_image_cube_array_sample_depth();
Builder test_resource_srv_image_cube_array_gather();
Builder test_resource_srv_image_cube_array_gather_depth();
Builder test_resource_srv_image_3d_load();
Builder test_resource_srv_image_3d_query();
Builder test_resource_srv_image_3d_sample();

Builder test_resource_srv_indexed_image_1d_load();
Builder test_resource_srv_indexed_image_1d_query();
Builder test_resource_srv_indexed_image_1d_sample();
Builder test_resource_srv_indexed_image_1d_array_load();
Builder test_resource_srv_indexed_image_1d_array_query();
Builder test_resource_srv_indexed_image_1d_array_sample();
Builder test_resource_srv_indexed_image_2d_load();
Builder test_resource_srv_indexed_image_2d_query();
Builder test_resource_srv_indexed_image_2d_sample();
Builder test_resource_srv_indexed_image_2d_sample_depth();
Builder test_resource_srv_indexed_image_2d_gather();
Builder test_resource_srv_indexed_image_2d_gather_depth();
Builder test_resource_srv_indexed_image_2d_array_load();
Builder test_resource_srv_indexed_image_2d_array_query();
Builder test_resource_srv_indexed_image_2d_array_sample();
Builder test_resource_srv_indexed_image_2d_array_sample_depth();
Builder test_resource_srv_indexed_image_2d_array_gather();
Builder test_resource_srv_indexed_image_2d_array_gather_depth();
Builder test_resource_srv_indexed_image_2d_ms_load();
Builder test_resource_srv_indexed_image_2d_ms_query();
Builder test_resource_srv_indexed_image_2d_ms_array_load();
Builder test_resource_srv_indexed_image_2d_ms_array_query();
Builder test_resource_srv_indexed_image_cube_query();
Builder test_resource_srv_indexed_image_cube_sample();
Builder test_resource_srv_indexed_image_cube_sample_depth();
Builder test_resource_srv_indexed_image_cube_gather();
Builder test_resource_srv_indexed_image_cube_gather_depth();
Builder test_resource_srv_indexed_image_cube_array_query();
Builder test_resource_srv_indexed_image_cube_array_sample();
Builder test_resource_srv_indexed_image_cube_array_sample_depth();
Builder test_resource_srv_indexed_image_cube_array_gather();
Builder test_resource_srv_indexed_image_cube_array_gather_depth();
Builder test_resource_srv_indexed_image_3d_load();
Builder test_resource_srv_indexed_image_3d_query();
Builder test_resource_srv_indexed_image_3d_sample();

Builder test_resource_uav_image_1d_load();
Builder test_resource_uav_image_1d_query();
Builder test_resource_uav_image_1d_store();
Builder test_resource_uav_image_1d_atomic();
Builder test_resource_uav_image_1d_array_load();
Builder test_resource_uav_image_1d_array_query();
Builder test_resource_uav_image_1d_array_store();
Builder test_resource_uav_image_1d_array_atomic();
Builder test_resource_uav_image_2d_load();
Builder test_resource_uav_image_2d_load_precise();
Builder test_resource_uav_image_2d_query();
Builder test_resource_uav_image_2d_store();
Builder test_resource_uav_image_2d_atomic();
Builder test_resource_uav_image_2d_array_load();
Builder test_resource_uav_image_2d_array_query();
Builder test_resource_uav_image_2d_array_store();
Builder test_resource_uav_image_2d_array_atomic();
Builder test_resource_uav_image_3d_load();
Builder test_resource_uav_image_3d_query();
Builder test_resource_uav_image_3d_store();
Builder test_resource_uav_image_3d_atomic();

Builder test_resource_uav_indexed_image_1d_load();
Builder test_resource_uav_indexed_image_1d_query();
Builder test_resource_uav_indexed_image_1d_store();
Builder test_resource_uav_indexed_image_1d_atomic();
Builder test_resource_uav_indexed_image_1d_array_load();
Builder test_resource_uav_indexed_image_1d_array_query();
Builder test_resource_uav_indexed_image_1d_array_store();
Builder test_resource_uav_indexed_image_1d_array_atomic();
Builder test_resource_uav_indexed_image_2d_load();
Builder test_resource_uav_indexed_image_2d_query();
Builder test_resource_uav_indexed_image_2d_store();
Builder test_resource_uav_indexed_image_2d_atomic();
Builder test_resource_uav_indexed_image_2d_array_load();
Builder test_resource_uav_indexed_image_2d_array_query();
Builder test_resource_uav_indexed_image_2d_array_store();
Builder test_resource_uav_indexed_image_2d_array_atomic();
Builder test_resource_uav_indexed_image_3d_load();
Builder test_resource_uav_indexed_image_3d_query();
Builder test_resource_uav_indexed_image_3d_store();
Builder test_resource_uav_indexed_image_3d_atomic();

Builder test_resource_srv_buffer_load_sparse_feedback();
Builder test_resource_srv_image_load_sparse_feedback();
Builder test_resource_srv_image_sample_sparse_feedback();
Builder test_resource_srv_image_sample_depth_sparse_feedback();
Builder test_resource_srv_image_gather_sparse_feedback();
Builder test_resource_srv_image_gather_depth_sparse_feedback();

Builder test_resource_uav_buffer_load_sparse_feedback();
Builder test_resource_uav_image_load_sparse_feedback();

Builder test_resource_rov();

}
