[virglrenderer-devel] [PATCH 01/10] shader: bump some snprintf limits to 512
Erik Faye-Lund
erik.faye-lund at collabora.com
Wed Jul 25 10:53:31 UTC 2018
I saw things like this in the past causing some rebase-issues, and I
wonder why we don't just do "snprintf(buf, sizeof(buf), ...)" instead?
That way, we'd just have to update the buffer-size in one place once we
know it's too small...
Anyway, this fixes a problem, so:
Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
On 25. juli 2018 01:00, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> This avois them overflowing when we have long swizzled gl_
> which happens more with compute shaders and images
> ---
> src/vrend_shader.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/vrend_shader.c b/src/vrend_shader.c
> index 7fc13c1..a54e56b 100644
> --- a/src/vrend_shader.c
> +++ b/src/vrend_shader.c
> @@ -3118,7 +3118,7 @@ iter_instruction(struct tgsi_iterate_context *iter,
> EMIT_BUF_WITH_RET(ctx, buf);
> break;
> case TGSI_OPCODE_UADD:
> - snprintf(buf, 255, "%s = %s(%s(ivec4((uvec4(%s) + uvec4(%s))))%s);\n", dsts[0], get_string(dinfo.dstconv), get_string(dinfo.dtypeprefix), srcs[0], srcs[1], writemask);
> + snprintf(buf, 512, "%s = %s(%s(ivec4((uvec4(%s) + uvec4(%s))))%s);\n", dsts[0], get_string(dinfo.dstconv), get_string(dinfo.dtypeprefix), srcs[0], srcs[1], writemask);
> EMIT_BUF_WITH_RET(ctx, buf);
> break;
> case TGSI_OPCODE_SUB:
> @@ -3136,7 +3136,7 @@ iter_instruction(struct tgsi_iterate_context *iter,
> EMIT_BUF_WITH_RET(ctx, buf);
> break;
> case TGSI_OPCODE_UMUL:
> - snprintf(buf, 255, "%s = %s(%s((uvec4(%s) * uvec4(%s)))%s);\n", dsts[0], get_string(dinfo.dstconv), get_string(dinfo.dtypeprefix), srcs[0], srcs[1], writemask);
> + snprintf(buf, 512, "%s = %s(%s((uvec4(%s) * uvec4(%s)))%s);\n", dsts[0], get_string(dinfo.dstconv), get_string(dinfo.dtypeprefix), srcs[0], srcs[1], writemask);
> EMIT_BUF_WITH_RET(ctx, buf);
> break;
> case TGSI_OPCODE_UMOD:
> @@ -3166,7 +3166,7 @@ iter_instruction(struct tgsi_iterate_context *iter,
> break;
> case TGSI_OPCODE_UMAD:
> case TGSI_OPCODE_DMAD:
> - snprintf(buf, 255, "%s = %s(%s((%s * %s + %s)%s));\n", dsts[0], get_string(dinfo.dstconv), get_string(dinfo.dtypeprefix), srcs[0], srcs[1], srcs[2], writemask);
> + snprintf(buf, 512, "%s = %s(%s((%s * %s + %s)%s));\n", dsts[0], get_string(dinfo.dstconv), get_string(dinfo.dtypeprefix), srcs[0], srcs[1], srcs[2], writemask);
> EMIT_BUF_WITH_RET(ctx, buf);
> break;
> case TGSI_OPCODE_OR:
More information about the virglrenderer-devel
mailing list