[PATCH vkd3d 4/5] vkd3d-shader: Implement conversion between root signature 1.0 and 1.1.
Henri Verbeet
hverbeet at gmail.com
Mon Apr 15 12:19:11 CDT 2019
On Fri, 12 Apr 2019 at 19:49, Józef Kucia <joseph.kucia at gmail.com> wrote:
> +static int convert_root_signature_to_v1_1(struct vkd3d_versioned_root_signature_desc *dst,
> + const struct vkd3d_versioned_root_signature_desc *src)
> +{
> + const struct vkd3d_root_signature_desc *src_desc = &src->u.v_1_0;
> + struct vkd3d_root_signature_desc1 *dst_desc = &dst->u.v_1_1;
> + struct vkd3d_static_sampler_desc *samplers = NULL;
> + struct vkd3d_root_parameter1 *parameters = NULL;
> + int ret;
> +
> + if ((dst_desc->parameter_count = src_desc->parameter_count))
> + {
> + if (!(parameters = vkd3d_calloc(dst_desc->parameter_count, sizeof(*parameters))))
> + {
> + ret = VKD3D_ERROR_OUT_OF_MEMORY;
> + goto fail;
> + }
> + if ((ret = convert_root_parameters_to_v_1_1(parameters, src_desc->parameters, src_desc->parameter_count)) < 0)
> + goto fail;
> + }
> + dst_desc->parameters = parameters;
> + if ((dst_desc->static_sampler_count = src_desc->static_sampler_count))
> + {
> + if (!(samplers = vkd3d_calloc(dst_desc->static_sampler_count, sizeof(*samplers))))
> + {
> + ret = VKD3D_ERROR_OUT_OF_MEMORY;
> + goto fail;
> + }
> + memcpy(samplers, src_desc->static_samplers, src_desc->static_sampler_count * sizeof(*samplers));
> + }
> + dst_desc->static_samplers = samplers;
> + dst_desc->flags = src_desc->flags;
> +
> + return VKD3D_OK;
> +
> +fail:
> + vkd3d_free(parameters);
Doesn't that potentially leak descriptor table ranges?
More information about the wine-devel
mailing list