vkd3d-shader: Add some colour to d3d-asm literals.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Henri Verbeet 2021-02-18 11:24:02 +01:00 committed by Alexandre Julliard
parent 54092b944c
commit 486d8edb7c
2 changed files with 23 additions and 6 deletions

View File

@ -167,7 +167,7 @@ libvkd3d_shader_la_SOURCES = \
libs/vkd3d-shader/vkd3d_shader_private.h
libvkd3d_shader_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/libs/vkd3d-shader @SPIRV_TOOLS_CFLAGS@
libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 1:0:0
libvkd3d_shader_la_LIBADD = libvkd3d-common.la @SPIRV_TOOLS_LIBS@
libvkd3d_shader_la_LIBADD = libvkd3d-common.la @SPIRV_TOOLS_LIBS@ -lm
if HAVE_LD_VERSION_SCRIPT
libvkd3d_shader_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d-shader/vkd3d_shader.map
EXTRA_libvkd3d_shader_la_DEPENDENCIES = $(srcdir)/libs/vkd3d-shader/vkd3d_shader.map

View File

@ -25,6 +25,7 @@
#include "vkd3d_shader_private.h"
#include <stdio.h>
#include <math.h>
static const char * const shader_opcode_names[] =
{
@ -303,6 +304,7 @@ shader_input_sysval_semantic_names[] =
struct vkd3d_d3d_asm_colours
{
const char *reset;
const char *literal;
const char *opcode;
const char *reg;
};
@ -705,31 +707,44 @@ static void shader_dump_src_param(struct vkd3d_d3d_asm_compiler *compiler,
static void shader_print_float_literal(struct vkd3d_d3d_asm_compiler *compiler,
const char *prefix, float f, const char *suffix)
{
vkd3d_string_buffer_printf(&compiler->buffer, "%s%.8e%s", prefix, f, suffix);
if (isfinite(f) && signbit(f))
vkd3d_string_buffer_printf(&compiler->buffer, "%s-%s%.8e%s%s",
prefix, compiler->colours.literal, -f, compiler->colours.reset, suffix);
else
vkd3d_string_buffer_printf(&compiler->buffer, "%s%s%.8e%s%s",
prefix, compiler->colours.literal, f, compiler->colours.reset, suffix);
}
static void shader_print_int_literal(struct vkd3d_d3d_asm_compiler *compiler,
const char *prefix, int i, const char *suffix)
{
vkd3d_string_buffer_printf(&compiler->buffer, "%s%d%s", prefix, i, suffix);
if (i < 0)
vkd3d_string_buffer_printf(&compiler->buffer, "%s-%s%d%s%s",
prefix, compiler->colours.literal, -i, compiler->colours.reset, suffix);
else
vkd3d_string_buffer_printf(&compiler->buffer, "%s%s%d%s%s",
prefix, compiler->colours.literal, i, compiler->colours.reset, suffix);
}
static void shader_print_uint_literal(struct vkd3d_d3d_asm_compiler *compiler,
const char *prefix, unsigned int i, const char *suffix)
{
vkd3d_string_buffer_printf(&compiler->buffer, "%s%u%s", prefix, i, suffix);
vkd3d_string_buffer_printf(&compiler->buffer, "%s%s%u%s%s",
prefix, compiler->colours.literal, i, compiler->colours.reset, suffix);
}
static void shader_print_hex_literal(struct vkd3d_d3d_asm_compiler *compiler,
const char *prefix, unsigned int i, const char *suffix)
{
vkd3d_string_buffer_printf(&compiler->buffer, "%s0x%08x%s", prefix, i, suffix);
vkd3d_string_buffer_printf(&compiler->buffer, "%s%s0x%08x%s%s",
prefix, compiler->colours.literal, i, compiler->colours.reset, suffix);
}
static void shader_print_bool_literal(struct vkd3d_d3d_asm_compiler *compiler,
const char *prefix, unsigned int b, const char *suffix)
{
vkd3d_string_buffer_printf(&compiler->buffer, "%s%s%s", prefix, b ? "true" : "false", suffix);
vkd3d_string_buffer_printf(&compiler->buffer, "%s%s%s%s%s", prefix,
compiler->colours.literal, b ? "true" : "false", compiler->colours.reset, suffix);
}
static void shader_print_subscript(struct vkd3d_d3d_asm_compiler *compiler,
@ -1668,12 +1683,14 @@ enum vkd3d_result vkd3d_dxbc_binary_to_text(void *data,
static const struct vkd3d_d3d_asm_colours no_colours =
{
.reset = "",
.literal = "",
.opcode = "",
.reg = "",
};
static const struct vkd3d_d3d_asm_colours colours =
{
.reset = "\x1b[m",
.literal = "\x1b[95m",
.opcode = "\x1b[96;1m",
.reg = "\x1b[96m",
};