MSL/C: Add _2 variant for the resource binding API.
Adds missing count variable for bindless.
This commit is contained in:
parent
ab608ac89c
commit
11be429ef2
@ -243,7 +243,7 @@ set(spirv-cross-util-sources
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/spirv_cross_util.hpp)
|
||||
|
||||
set(spirv-cross-abi-major 0)
|
||||
set(spirv-cross-abi-minor 60)
|
||||
set(spirv-cross-abi-minor 61)
|
||||
set(spirv-cross-abi-patch 0)
|
||||
set(SPIRV_CROSS_VERSION ${spirv-cross-abi-major}.${spirv-cross-abi-minor}.${spirv-cross-abi-patch})
|
||||
|
||||
|
@ -1355,6 +1355,34 @@ spvc_result spvc_compiler_msl_add_resource_binding(spvc_compiler compiler,
|
||||
#endif
|
||||
}
|
||||
|
||||
spvc_result spvc_compiler_msl_add_resource_binding_2(spvc_compiler compiler,
|
||||
const spvc_msl_resource_binding_2 *binding)
|
||||
{
|
||||
#if SPIRV_CROSS_C_API_MSL
|
||||
if (compiler->backend != SPVC_BACKEND_MSL)
|
||||
{
|
||||
compiler->context->report_error("MSL function used on a non-MSL backend.");
|
||||
return SPVC_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
auto &msl = *static_cast<CompilerMSL *>(compiler->compiler.get());
|
||||
MSLResourceBinding bind;
|
||||
bind.binding = binding->binding;
|
||||
bind.desc_set = binding->desc_set;
|
||||
bind.stage = static_cast<spv::ExecutionModel>(binding->stage);
|
||||
bind.msl_buffer = binding->msl_buffer;
|
||||
bind.msl_texture = binding->msl_texture;
|
||||
bind.msl_sampler = binding->msl_sampler;
|
||||
bind.count = binding->count;
|
||||
msl.add_msl_resource_binding(bind);
|
||||
return SPVC_SUCCESS;
|
||||
#else
|
||||
(void)binding;
|
||||
compiler->context->report_error("MSL function used on a non-MSL backend.");
|
||||
return SPVC_ERROR_INVALID_ARGUMENT;
|
||||
#endif
|
||||
}
|
||||
|
||||
spvc_result spvc_compiler_msl_add_dynamic_buffer(spvc_compiler compiler, unsigned desc_set, unsigned binding, unsigned index)
|
||||
{
|
||||
#if SPIRV_CROSS_C_API_MSL
|
||||
@ -2811,6 +2839,22 @@ void spvc_msl_resource_binding_init(spvc_msl_resource_binding *binding)
|
||||
#endif
|
||||
}
|
||||
|
||||
void spvc_msl_resource_binding_init_2(spvc_msl_resource_binding_2 *binding)
|
||||
{
|
||||
#if SPIRV_CROSS_C_API_MSL
|
||||
MSLResourceBinding binding_default;
|
||||
binding->desc_set = binding_default.desc_set;
|
||||
binding->binding = binding_default.binding;
|
||||
binding->msl_buffer = binding_default.msl_buffer;
|
||||
binding->msl_texture = binding_default.msl_texture;
|
||||
binding->msl_sampler = binding_default.msl_sampler;
|
||||
binding->stage = static_cast<SpvExecutionModel>(binding_default.stage);
|
||||
binding->count = 0;
|
||||
#else
|
||||
memset(binding, 0, sizeof(*binding));
|
||||
#endif
|
||||
}
|
||||
|
||||
void spvc_hlsl_resource_binding_init(spvc_hlsl_resource_binding *binding)
|
||||
{
|
||||
#if SPIRV_CROSS_C_API_HLSL
|
||||
|
@ -40,7 +40,7 @@ extern "C" {
|
||||
/* Bumped if ABI or API breaks backwards compatibility. */
|
||||
#define SPVC_C_API_VERSION_MAJOR 0
|
||||
/* Bumped if APIs or enumerations are added in a backwards compatible way. */
|
||||
#define SPVC_C_API_VERSION_MINOR 60
|
||||
#define SPVC_C_API_VERSION_MINOR 61
|
||||
/* Bumped if internal implementation details change. */
|
||||
#define SPVC_C_API_VERSION_PATCH 0
|
||||
|
||||
@ -380,7 +380,8 @@ typedef struct spvc_msl_shader_interface_var_2
|
||||
*/
|
||||
SPVC_PUBLIC_API void spvc_msl_shader_interface_var_init_2(spvc_msl_shader_interface_var_2 *var);
|
||||
|
||||
/* Maps to C++ API. */
|
||||
/* Maps to C++ API.
|
||||
* Deprecated. Use spvc_msl_resource_binding_2. */
|
||||
typedef struct spvc_msl_resource_binding
|
||||
{
|
||||
SpvExecutionModel stage;
|
||||
@ -391,11 +392,24 @@ typedef struct spvc_msl_resource_binding
|
||||
unsigned msl_sampler;
|
||||
} spvc_msl_resource_binding;
|
||||
|
||||
typedef struct spvc_msl_resource_binding_2
|
||||
{
|
||||
SpvExecutionModel stage;
|
||||
unsigned desc_set;
|
||||
unsigned binding;
|
||||
unsigned count;
|
||||
unsigned msl_buffer;
|
||||
unsigned msl_texture;
|
||||
unsigned msl_sampler;
|
||||
} spvc_msl_resource_binding_2;
|
||||
|
||||
/*
|
||||
* Initializes the resource binding struct.
|
||||
* The defaults are non-zero.
|
||||
* Deprecated: Use spvc_msl_resource_binding_init_2.
|
||||
*/
|
||||
SPVC_PUBLIC_API void spvc_msl_resource_binding_init(spvc_msl_resource_binding *binding);
|
||||
SPVC_PUBLIC_API void spvc_msl_resource_binding_init_2(spvc_msl_resource_binding_2 *binding);
|
||||
|
||||
#define SPVC_MSL_PUSH_CONSTANT_DESC_SET (~(0u))
|
||||
#define SPVC_MSL_PUSH_CONSTANT_BINDING (0)
|
||||
@ -836,8 +850,11 @@ SPVC_PUBLIC_API spvc_bool spvc_compiler_msl_needs_patch_output_buffer(spvc_compi
|
||||
SPVC_PUBLIC_API spvc_bool spvc_compiler_msl_needs_input_threadgroup_mem(spvc_compiler compiler);
|
||||
SPVC_PUBLIC_API spvc_result spvc_compiler_msl_add_vertex_attribute(spvc_compiler compiler,
|
||||
const spvc_msl_vertex_attribute *attrs);
|
||||
/* Deprecated; use spvc_compiler_msl_add_resource_binding_2(). */
|
||||
SPVC_PUBLIC_API spvc_result spvc_compiler_msl_add_resource_binding(spvc_compiler compiler,
|
||||
const spvc_msl_resource_binding *binding);
|
||||
SPVC_PUBLIC_API spvc_result spvc_compiler_msl_add_resource_binding_2(spvc_compiler compiler,
|
||||
const spvc_msl_resource_binding_2 *binding);
|
||||
/* Deprecated; use spvc_compiler_msl_add_shader_input_2(). */
|
||||
SPVC_PUBLIC_API spvc_result spvc_compiler_msl_add_shader_input(spvc_compiler compiler,
|
||||
const spvc_msl_shader_interface_var *input);
|
||||
|
Loading…
Reference in New Issue
Block a user