mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
vkd3d-shader/glsl: Add vkd3d-shader version information to the generated shader.
This commit is contained in:
parent
3205e08fb1
commit
414bb99542
Notes:
Alexandre Julliard
2024-04-19 22:27:27 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/803
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user