vkd3d-shader: Use struct vkd3d_shader_location in struct hlsl_ctx.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2021-02-12 10:48:56 -06:00 committed by Alexandre Julliard
parent 3a975c2215
commit 3bf0e40b9d
4 changed files with 14 additions and 18 deletions

View File

@ -1482,16 +1482,16 @@ static bool hlsl_ctx_init(struct hlsl_ctx *ctx, struct vkd3d_shader_message_cont
ctx->message_context = message_context; ctx->message_context = message_context;
ctx->line_no = ctx->column = 1;
if (!(ctx->source_file = vkd3d_strdup("")))
return false;
if (!(ctx->source_files = vkd3d_malloc(sizeof(*ctx->source_files)))) if (!(ctx->source_files = vkd3d_malloc(sizeof(*ctx->source_files))))
return false;
if (!(ctx->source_files[0] = vkd3d_strdup("")))
{ {
vkd3d_free((void *)ctx->source_file); vkd3d_free(ctx->source_files);
return false; return false;
} }
ctx->source_files[0] = ctx->source_file;
ctx->source_files_count = 1; ctx->source_files_count = 1;
ctx->location.source_name = ctx->source_files[0];
ctx->location.line = ctx->location.column = 1;
ctx->matrix_majority = HLSL_COLUMN_MAJOR; ctx->matrix_majority = HLSL_COLUMN_MAJOR;

View File

@ -395,9 +395,7 @@ struct hlsl_ctx
{ {
const char **source_files; const char **source_files;
unsigned int source_files_count; unsigned int source_files_count;
const char *source_file; struct vkd3d_shader_location location;
unsigned int line_no;
unsigned int column;
enum parse_status status; enum parse_status status;
struct vkd3d_shader_message_context *message_context; struct vkd3d_shader_message_context *message_context;

View File

@ -209,8 +209,8 @@ row_major {return KW_ROW_MAJOR; }
{NEWLINE} { {NEWLINE} {
struct hlsl_ctx *ctx = yyget_extra(yyscanner); struct hlsl_ctx *ctx = yyget_extra(yyscanner);
ctx->line_no++; ++ctx->location.line;
ctx->column = 1; ctx->location.column = 1;
} }
^# { ^# {
@ -238,7 +238,7 @@ row_major {return KW_ROW_MAJOR; }
<pp_pragma>{NEWLINE} { <pp_pragma>{NEWLINE} {
struct hlsl_ctx *ctx = yyget_extra(yyscanner); struct hlsl_ctx *ctx = yyget_extra(yyscanner);
FIXME("Unsupported preprocessor #pragma directive at line %u.\n", ctx->line_no); FIXME("Unsupported preprocessor #pragma directive at line %u.\n", ctx->location.line);
BEGIN(INITIAL); BEGIN(INITIAL);
} }
<pp_pragma>{ANY} {} <pp_pragma>{ANY} {}
@ -279,10 +279,8 @@ row_major {return KW_ROW_MAJOR; }
static void update_location(struct hlsl_ctx *ctx, YYLTYPE *lloc) static void update_location(struct hlsl_ctx *ctx, YYLTYPE *lloc)
{ {
lloc->source_name = ctx->source_file; *lloc = ctx->location;
lloc->line = ctx->line_no; ctx->location.column += yyget_leng(ctx->scanner);
lloc->column = ctx->column;
ctx->column += yyget_leng(ctx->scanner);
} }
int hlsl_lexer_compile(struct hlsl_ctx *ctx, const char *text, const char *entrypoint) int hlsl_lexer_compile(struct hlsl_ctx *ctx, const char *text, const char *entrypoint)

View File

@ -1762,8 +1762,8 @@ preproc_directive:
const char **new_array = NULL; const char **new_array = NULL;
TRACE("Updating line information to file %s, line %u.\n", debugstr_a($2), $1); TRACE("Updating line information to file %s, line %u.\n", debugstr_a($2), $1);
ctx->line_no = $1; ctx->location.line = $1;
if (strcmp($2, ctx->source_file)) if (strcmp($2, ctx->location.source_name))
new_array = vkd3d_realloc(ctx->source_files, new_array = vkd3d_realloc(ctx->source_files,
sizeof(*ctx->source_files) * (ctx->source_files_count + 1)); sizeof(*ctx->source_files) * (ctx->source_files_count + 1));
@ -1771,7 +1771,7 @@ preproc_directive:
{ {
ctx->source_files = new_array; ctx->source_files = new_array;
ctx->source_files[ctx->source_files_count++] = $2; ctx->source_files[ctx->source_files_count++] = $2;
ctx->source_file = $2; ctx->location.source_name = $2;
} }
else else
{ {