0cb6f6a346
This brings the D3D11 API more in line with the D3D12 and Vulkan runtimes. To get the old behaviour with immediate contexts, just pass a NULL context.
176 lines
5.4 KiB
TOML
176 lines
5.4 KiB
TOML
language = "C"
|
|
cpp_compat = true
|
|
include_guard = "__LIBRASHADER_H__"
|
|
pragma_once = true
|
|
usize_is_size_t = true
|
|
documentation_style = "c++"
|
|
header = """
|
|
/*
|
|
librashader.h
|
|
SPDX-License-Identifier: MIT
|
|
This file is part of the librashader C headers.
|
|
|
|
Copyright 2022 chyyran
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
this software and associated documentation files (the "Software"), to deal in
|
|
the Software without restriction, including without limitation the rights to
|
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
"""
|
|
|
|
after_includes = """
|
|
#if defined(_WIN32) && defined(LIBRA_RUNTIME_D3D11)
|
|
#include <d3d11.h>
|
|
#else
|
|
typedef void ID3D11Device;
|
|
typedef void ID3D11DeviceContext;
|
|
typedef void ID3D11RenderTargetView;
|
|
typedef void ID3D11ShaderResourceView;
|
|
#endif
|
|
#if defined(LIBRA_RUNTIME_VULKAN)
|
|
#include <vulkan\\vulkan.h>
|
|
#else
|
|
typedef int32_t VkFormat;
|
|
typedef uint64_t VkImage;
|
|
typedef void* VkPhysicalDevice;
|
|
typedef void* VkInstance;
|
|
typedef void* VkCommandBuffer;
|
|
#endif
|
|
#if defined(_WIN32) && defined(LIBRA_RUNTIME_D3D12)
|
|
#include <d3d12.h>
|
|
#else
|
|
typedef void ID3D12GraphicsCommandList;
|
|
typedef void ID3D12Device;
|
|
typedef void ID3D12Resource;
|
|
typedef void D3D12_CPU_DESCRIPTOR_HANDLE;
|
|
#endif
|
|
"""
|
|
|
|
[defines]
|
|
"feature = runtime-opengl" = "LIBRA_RUNTIME_OPENGL"
|
|
"feature = runtime-vulkan" = "LIBRA_RUNTIME_VULKAN"
|
|
"feature = runtime-d3d11" = "LIBRA_RUNTIME_D3D11"
|
|
"feature = runtime-d3d12" = "LIBRA_RUNTIME_D3D12"
|
|
|
|
|
|
[parse]
|
|
parse_deps = true
|
|
include = ["librashader",
|
|
"librashader-presets",
|
|
"librashader-preprocess",
|
|
"librashader-reflect",
|
|
"librashader-runtime-gl",
|
|
"librashader-runtime-vk",
|
|
"librashader-runtime-d3d11",
|
|
"librashader-runtime-d3d12",
|
|
]
|
|
expand = ["librashader-capi"]
|
|
|
|
[struct]
|
|
|
|
[enum]
|
|
rename_variants = "ScreamingSnakeCase"
|
|
prefix_with_name = true
|
|
|
|
[export]
|
|
include = [
|
|
# preset
|
|
"PFN_libra_preset_create",
|
|
"PFN_libra_preset_free",
|
|
"PFN_libra_preset_set_param",
|
|
"PFN_libra_preset_get_param",
|
|
"PFN_libra_preset_print",
|
|
"PFN_libra_preset_get_runtime_params",
|
|
"PFN_libra_preset_free_runtime_params",
|
|
|
|
# error
|
|
"PFN_libra_error_errno",
|
|
"PFN_libra_error_print",
|
|
"PFN_libra_error_free",
|
|
"PFN_libra_error_write",
|
|
"PFN_libra_error_free_string",
|
|
|
|
# gl
|
|
"PFN_libra_gl_init_context",
|
|
"PFN_libra_gl_filter_chain_create",
|
|
"PFN_libra_gl_filter_chain_frame",
|
|
"PFN_libra_gl_filter_chain_set_param",
|
|
"PFN_libra_gl_filter_chain_get_param",
|
|
"PFN_libra_gl_filter_chain_set_active_pass_count",
|
|
"PFN_libra_gl_filter_chain_get_active_pass_count",
|
|
"PFN_libra_gl_filter_chain_free",
|
|
|
|
# vulkan
|
|
"PFN_libra_vk_filter_chain_create",
|
|
"PFN_libra_vk_filter_chain_frame",
|
|
"PFN_libra_vk_filter_chain_set_param",
|
|
"PFN_libra_vk_filter_chain_get_param",
|
|
"PFN_libra_vk_filter_chain_set_active_pass_count",
|
|
"PFN_libra_vk_filter_chain_get_active_pass_count",
|
|
"PFN_libra_vk_filter_chain_free",
|
|
|
|
# d3d11
|
|
"PFN_libra_d3d11_filter_chain_create",
|
|
"PFN_libra_d3d11_filter_chain_frame",
|
|
"PFN_libra_d3d11_filter_chain_set_param",
|
|
"PFN_libra_d3d11_filter_chain_get_param",
|
|
"PFN_libra_d3d11_filter_chain_set_active_pass_count",
|
|
"PFN_libra_d3d11_filter_chain_get_active_pass_count",
|
|
"PFN_libra_d3d11_filter_chain_free",
|
|
|
|
|
|
# d3d11
|
|
"PFN_libra_d3d12_filter_chain_create",
|
|
"PFN_libra_d3d12_filter_chain_frame",
|
|
"PFN_libra_d3d12_filter_chain_set_param",
|
|
"PFN_libra_d3d12_filter_chain_get_param",
|
|
"PFN_libra_d3d12_filter_chain_set_active_pass_count",
|
|
"PFN_libra_d3d12_filter_chain_get_active_pass_count",
|
|
"PFN_libra_d3d12_filter_chain_free",
|
|
]
|
|
|
|
exclude = ["Option_ID3D11DeviceContext"]
|
|
|
|
[export.rename]
|
|
"LibrashaderError" = "_libra_error"
|
|
"ShaderPreset" = "_shader_preset"
|
|
"FilterChainGL" = "_filter_chain_gl"
|
|
"FilterChainVulkan" = "_filter_chain_vk"
|
|
"FilterChainD3D11" = "_filter_chain_d3d11"
|
|
"FilterChainD3D12" = "_filter_chain_d3d12"
|
|
|
|
# vulkan renames
|
|
"PhysicalDevice" = "VkPhysicalDevice"
|
|
"Instance" = "VkInstance"
|
|
"Device" = "VkDevice"
|
|
"CommandBuffer" = "VkCommandBuffer"
|
|
"Format" = "VkFormat"
|
|
"Image" = "VkImage"
|
|
|
|
# hack to get proper pointer indirection for COM pointers
|
|
# we don't need one for ID3D11DeviceContext.
|
|
"ID3D11Device" = "ID3D11Device *"
|
|
"ID3D11DeviceContext" = "ID3D11DeviceContext *"
|
|
"ID3D11RenderTargetView" = "ID3D11RenderTargetView *"
|
|
"ID3D11ShaderResourceView" = "ID3D11ShaderResourceView *"
|
|
|
|
# hack to force cbindgen to not generate option type for nullable ID3D11DeviceContext.
|
|
"Option_ID3D11DeviceContext" = "ID3D11DeviceContext *"
|
|
|
|
# hack to get proper pointer indirection for COM pointers
|
|
"ID3D12Device" = "ID3D12Device *"
|
|
"ID3D12Resource" = "ID3D12Resource *"
|
|
"ID3D12GraphicsCommandList" = "ID3D12GraphicsCommandList *" |