diff --git a/libs/vkd3d-shader/glsl.c b/libs/vkd3d-shader/glsl.c index f1012d06..3e8dd2c4 100644 --- a/libs/vkd3d-shader/glsl.c +++ b/libs/vkd3d-shader/glsl.c @@ -89,35 +89,39 @@ static void vkd3d_glsl_handle_instruction(struct vkd3d_glsl_generator *generator } } -static int vkd3d_glsl_generator_generate(struct vkd3d_glsl_generator *generator, struct vkd3d_shader_code *out) +static int vkd3d_glsl_generator_generate(struct vkd3d_glsl_generator *gen, struct vkd3d_shader_code *out) { - const struct vkd3d_shader_instruction_array *instructions = &generator->program->instructions; + const struct vkd3d_shader_instruction_array *instructions = &gen->program->instructions; + struct vkd3d_string_buffer *buffer = &gen->buffer; unsigned int i; void *code; ERR("Generating a GLSL shader. This is unsupported; you get to keep all the pieces if it breaks.\n"); - vkd3d_string_buffer_printf(&generator->buffer, "#version 440\n\n"); - vkd3d_string_buffer_printf(&generator->buffer, "void main()\n{\n"); + vkd3d_string_buffer_printf(buffer, "#version 440\n\n"); - ++generator->indent; + vkd3d_string_buffer_printf(buffer, "/* Generated by %s. */\n\n", vkd3d_shader_get_version(NULL, NULL)); + + vkd3d_string_buffer_printf(buffer, "void main()\n{\n"); + + ++gen->indent; for (i = 0; i < instructions->count; ++i) { - vkd3d_glsl_handle_instruction(generator, &instructions->elements[i]); + vkd3d_glsl_handle_instruction(gen, &instructions->elements[i]); } - vkd3d_string_buffer_printf(&generator->buffer, "}\n"); + vkd3d_string_buffer_printf(buffer, "}\n"); if (TRACE_ON()) - vkd3d_string_buffer_trace(&generator->buffer); + vkd3d_string_buffer_trace(buffer); - if (generator->failed) + if (gen->failed) return VKD3D_ERROR_INVALID_SHADER; - if ((code = vkd3d_malloc(generator->buffer.buffer_size))) + if ((code = vkd3d_malloc(buffer->buffer_size))) { - memcpy(code, generator->buffer.buffer, generator->buffer.content_size); - out->size = generator->buffer.content_size; + memcpy(code, buffer->buffer, buffer->content_size); + out->size = buffer->content_size; out->code = code; } else return VKD3D_ERROR_OUT_OF_MEMORY;