libs/vkd3d-shader: Add VKD3D_SHADER_STRIP_DEBUG compiler option.

This commit is contained in:
Józef Kucia 2017-06-27 22:21:43 +02:00
parent dbfa823b42
commit 0afe0032b0
3 changed files with 16 additions and 2 deletions

View File

@ -28,6 +28,7 @@ extern "C" {
enum vkd3d_shader_compiler_option enum vkd3d_shader_compiler_option
{ {
VKD3D_SHADER_FLIP_Y = 0x00000001, VKD3D_SHADER_FLIP_Y = 0x00000001,
VKD3D_SHADER_STRIP_DEBUG = 0x00000002,
VKD3D_SHADER_COMPILER_OPTIONS_FORCE_32_BIT = 0x7fffffff, VKD3D_SHADER_COMPILER_OPTIONS_FORCE_32_BIT = 0x7fffffff,
}; };

View File

@ -107,6 +107,11 @@ static void vkd3d_spirv_stream_free(struct vkd3d_spirv_stream *stream)
vkd3d_free(stream->words); vkd3d_free(stream->words);
} }
static void vkd3d_spirv_stream_clear(struct vkd3d_spirv_stream *stream)
{
stream->word_count = 0;
}
static bool vkd3d_spirv_stream_append(struct vkd3d_spirv_stream *dst_stream, static bool vkd3d_spirv_stream_append(struct vkd3d_spirv_stream *dst_stream,
const struct vkd3d_spirv_stream *src_stream) const struct vkd3d_spirv_stream *src_stream)
{ {
@ -2170,7 +2175,12 @@ void vkd3d_dxbc_compiler_handle_instruction(struct vkd3d_dxbc_compiler *compiler
bool vkd3d_dxbc_compiler_generate_spirv(struct vkd3d_dxbc_compiler *compiler, bool vkd3d_dxbc_compiler_generate_spirv(struct vkd3d_dxbc_compiler *compiler,
struct vkd3d_shader_code *spirv) struct vkd3d_shader_code *spirv)
{ {
if (!vkd3d_spirv_compile_module(&compiler->spirv_builder, spirv)) struct vkd3d_spirv_builder *builder = &compiler->spirv_builder;
if (compiler->options & VKD3D_SHADER_STRIP_DEBUG)
vkd3d_spirv_stream_clear(&builder->debug_stream);
if (!vkd3d_spirv_compile_module(builder, spirv))
return false; return false;
if (TRACE_ON()) if (TRACE_ON())

View File

@ -90,6 +90,7 @@ static const struct
compiler_options[] = compiler_options[] =
{ {
{"--flip-y", VKD3D_SHADER_FLIP_Y}, {"--flip-y", VKD3D_SHADER_FLIP_Y},
{"--strip-debug", VKD3D_SHADER_STRIP_DEBUG},
}; };
struct options struct options
@ -142,7 +143,9 @@ int main(int argc, char **argv)
if (!parse_command_line(argc, argv, &options)) if (!parse_command_line(argc, argv, &options))
{ {
fprintf(stderr, "usage: %s [--flip-y] [-o <out_spirv_filename>] <dxbc_filename>\n", argv[0]); fprintf(stderr,
"usage: %s [--strip-degug] [--flip-y] [-o <out_spirv_filename>] <dxbc_filename>\n",
argv[0]);
return 1; return 1;
} }