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)
|
${CMAKE_CURRENT_SOURCE_DIR}/spirv_cross_util.hpp)
|
||||||
|
|
||||||
set(spirv-cross-abi-major 0)
|
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-abi-patch 0)
|
||||||
set(SPIRV_CROSS_VERSION ${spirv-cross-abi-major}.${spirv-cross-abi-minor}.${spirv-cross-abi-patch})
|
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
|
#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)
|
spvc_result spvc_compiler_msl_add_dynamic_buffer(spvc_compiler compiler, unsigned desc_set, unsigned binding, unsigned index)
|
||||||
{
|
{
|
||||||
#if SPIRV_CROSS_C_API_MSL
|
#if SPIRV_CROSS_C_API_MSL
|
||||||
@ -2811,6 +2839,22 @@ void spvc_msl_resource_binding_init(spvc_msl_resource_binding *binding)
|
|||||||
#endif
|
#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)
|
void spvc_hlsl_resource_binding_init(spvc_hlsl_resource_binding *binding)
|
||||||
{
|
{
|
||||||
#if SPIRV_CROSS_C_API_HLSL
|
#if SPIRV_CROSS_C_API_HLSL
|
||||||
|
@ -40,7 +40,7 @@ extern "C" {
|
|||||||
/* Bumped if ABI or API breaks backwards compatibility. */
|
/* Bumped if ABI or API breaks backwards compatibility. */
|
||||||
#define SPVC_C_API_VERSION_MAJOR 0
|
#define SPVC_C_API_VERSION_MAJOR 0
|
||||||
/* Bumped if APIs or enumerations are added in a backwards compatible way. */
|
/* 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. */
|
/* Bumped if internal implementation details change. */
|
||||||
#define SPVC_C_API_VERSION_PATCH 0
|
#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);
|
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
|
typedef struct spvc_msl_resource_binding
|
||||||
{
|
{
|
||||||
SpvExecutionModel stage;
|
SpvExecutionModel stage;
|
||||||
@ -391,11 +392,24 @@ typedef struct spvc_msl_resource_binding
|
|||||||
unsigned msl_sampler;
|
unsigned msl_sampler;
|
||||||
} spvc_msl_resource_binding;
|
} 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.
|
* Initializes the resource binding struct.
|
||||||
* The defaults are non-zero.
|
* 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(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_DESC_SET (~(0u))
|
||||||
#define SPVC_MSL_PUSH_CONSTANT_BINDING (0)
|
#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_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,
|
SPVC_PUBLIC_API spvc_result spvc_compiler_msl_add_vertex_attribute(spvc_compiler compiler,
|
||||||
const spvc_msl_vertex_attribute *attrs);
|
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,
|
SPVC_PUBLIC_API spvc_result spvc_compiler_msl_add_resource_binding(spvc_compiler compiler,
|
||||||
const spvc_msl_resource_binding *binding);
|
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(). */
|
/* Deprecated; use spvc_compiler_msl_add_shader_input_2(). */
|
||||||
SPVC_PUBLIC_API spvc_result spvc_compiler_msl_add_shader_input(spvc_compiler compiler,
|
SPVC_PUBLIC_API spvc_result spvc_compiler_msl_add_shader_input(spvc_compiler compiler,
|
||||||
const spvc_msl_shader_interface_var *input);
|
const spvc_msl_shader_interface_var *input);
|
||||||
|
Loading…
Reference in New Issue
Block a user