[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