Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HansKristian-Work/vkd3d-proton.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2021-05-19 18:02:38 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2021-05-19 18:35:58 +0300
commit0bb83a1d3e59bc6669ab0c4c1e6a0d30aea8c023 (patch)
tree1452fd6a871cd8d4a72f4360a0c50713a00ebe18
parent6c3bcae83da0777755af608efb189c4c4e0bb81b (diff)
vkd3d-shader: Opt-in to early fragment tests with descriptor QA.descriptor-qa-dxbc
Since we introduce side effects, avoid full late-Z for everything, which is slow, and not necessarily correct either. Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
-rw-r--r--include/vkd3d_shader.h5
-rw-r--r--libs/vkd3d-shader/.deps/.dirstamp0
-rw-r--r--libs/vkd3d-shader/.deps/libvkd3d_shader_la-checksum.Plo132
-rw-r--r--libs/vkd3d-shader/.deps/libvkd3d_shader_la-dxbc.Plo131
-rw-r--r--libs/vkd3d-shader/.deps/libvkd3d_shader_la-dxil.Plo122
-rw-r--r--libs/vkd3d-shader/.deps/libvkd3d_shader_la-spirv.Plo157
-rw-r--r--libs/vkd3d-shader/.deps/libvkd3d_shader_la-trace.Plo146
-rw-r--r--libs/vkd3d-shader/.deps/libvkd3d_shader_la-vkd3d_shader_main.Plo147
-rw-r--r--libs/vkd3d-shader/.libs/libvkd3d_shader_la-checksum.obin0 -> 11832 bytes
-rw-r--r--libs/vkd3d-shader/.libs/libvkd3d_shader_la-dxbc.obin0 -> 264976 bytes
-rw-r--r--libs/vkd3d-shader/.libs/libvkd3d_shader_la-spirv.obin0 -> 2319968 bytes
-rw-r--r--libs/vkd3d-shader/.libs/libvkd3d_shader_la-trace.obin0 -> 112488 bytes
-rw-r--r--libs/vkd3d-shader/.libs/libvkd3d_shader_la-vkd3d_shader_main.obin0 -> 79088 bytes
-rw-r--r--libs/vkd3d-shader/spirv.c8
-rw-r--r--libs/vkd3d-shader/vkd3d_shader_main.c42
15 files changed, 890 insertions, 0 deletions
diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h
index 84f4b806..61c1ee17 100644
--- a/include/vkd3d_shader.h
+++ b/include/vkd3d_shader.h
@@ -587,6 +587,11 @@ struct vkd3d_shader_scan_info
{
struct hash_map register_map;
bool use_vocp;
+
+ bool early_fragment_tests;
+ bool has_side_effects;
+ bool needs_late_zs;
+ bool discards;
};
enum vkd3d_component_type
diff --git a/libs/vkd3d-shader/.deps/.dirstamp b/libs/vkd3d-shader/.deps/.dirstamp
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/libs/vkd3d-shader/.deps/.dirstamp
diff --git a/libs/vkd3d-shader/.deps/libvkd3d_shader_la-checksum.Plo b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-checksum.Plo
new file mode 100644
index 00000000..57440786
--- /dev/null
+++ b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-checksum.Plo
@@ -0,0 +1,132 @@
+libs/vkd3d-shader/libvkd3d_shader_la-checksum.lo: \
+ libs/vkd3d-shader/checksum.c /usr/include/stdc-predef.h \
+ libs/vkd3d-shader/vkd3d_shader_private.h include/private/vkd3d_common.h \
+ include/vkd3d_windows.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h \
+ /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
+ /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \
+ /usr/include/sys/types.h /usr/include/bits/types.h \
+ /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \
+ /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \
+ /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \
+ /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \
+ /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \
+ /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \
+ /usr/include/bits/types/__sigset_t.h \
+ /usr/include/bits/types/struct_timeval.h \
+ /usr/include/bits/types/struct_timespec.h \
+ /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
+ /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \
+ /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
+ /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/strings.h \
+ include/private/vkd3d_spinlock.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h \
+ /usr/include/stdint.h /usr/include/bits/wchar.h \
+ /usr/include/bits/stdint-uintn.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h \
+ include/private/vkd3d_atomic.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h \
+ include/private/vkd3d_profiling.h /usr/include/ctype.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/include/bits/uio_lim.h include/private/vkd3d_memory.h \
+ /usr/include/assert.h include/private/vkd3d_debug.h \
+ include/private/vkd3d_common.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h \
+ include/vkd3d_shader.h include/vkd3d_types.h include/private/list.h \
+ /usr/include/inttypes.h
+/usr/include/stdc-predef.h:
+libs/vkd3d-shader/vkd3d_shader_private.h:
+include/private/vkd3d_common.h:
+include/vkd3d_windows.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h:
+/usr/include/stdlib.h:
+/usr/include/bits/libc-header-start.h:
+/usr/include/features.h:
+/usr/include/sys/cdefs.h:
+/usr/include/bits/wordsize.h:
+/usr/include/bits/long-double.h:
+/usr/include/gnu/stubs.h:
+/usr/include/gnu/stubs-64.h:
+/usr/include/bits/waitflags.h:
+/usr/include/bits/waitstatus.h:
+/usr/include/bits/floatn.h:
+/usr/include/bits/floatn-common.h:
+/usr/include/bits/types/locale_t.h:
+/usr/include/bits/types/__locale_t.h:
+/usr/include/sys/types.h:
+/usr/include/bits/types.h:
+/usr/include/bits/timesize.h:
+/usr/include/bits/typesizes.h:
+/usr/include/bits/time64.h:
+/usr/include/bits/types/clock_t.h:
+/usr/include/bits/types/clockid_t.h:
+/usr/include/bits/types/time_t.h:
+/usr/include/bits/types/timer_t.h:
+/usr/include/bits/stdint-intn.h:
+/usr/include/endian.h:
+/usr/include/bits/endian.h:
+/usr/include/bits/endianness.h:
+/usr/include/bits/byteswap.h:
+/usr/include/bits/uintn-identity.h:
+/usr/include/sys/select.h:
+/usr/include/bits/select.h:
+/usr/include/bits/types/sigset_t.h:
+/usr/include/bits/types/__sigset_t.h:
+/usr/include/bits/types/struct_timeval.h:
+/usr/include/bits/types/struct_timespec.h:
+/usr/include/bits/pthreadtypes.h:
+/usr/include/bits/thread-shared-types.h:
+/usr/include/bits/pthreadtypes-arch.h:
+/usr/include/bits/struct_mutex.h:
+/usr/include/bits/struct_rwlock.h:
+/usr/include/alloca.h:
+/usr/include/bits/stdlib-bsearch.h:
+/usr/include/bits/stdlib-float.h:
+/usr/include/string.h:
+/usr/include/strings.h:
+include/private/vkd3d_spinlock.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h:
+/usr/include/stdint.h:
+/usr/include/bits/wchar.h:
+/usr/include/bits/stdint-uintn.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h:
+include/private/vkd3d_atomic.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h:
+include/private/vkd3d_profiling.h:
+/usr/include/ctype.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h:
+/usr/include/limits.h:
+/usr/include/bits/posix1_lim.h:
+/usr/include/bits/local_lim.h:
+/usr/include/linux/limits.h:
+/usr/include/bits/posix2_lim.h:
+/usr/include/bits/xopen_lim.h:
+/usr/include/bits/uio_lim.h:
+include/private/vkd3d_memory.h:
+/usr/include/assert.h:
+include/private/vkd3d_debug.h:
+include/private/vkd3d_common.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h:
+include/vkd3d_shader.h:
+include/vkd3d_types.h:
+include/private/list.h:
+/usr/include/inttypes.h:
diff --git a/libs/vkd3d-shader/.deps/libvkd3d_shader_la-dxbc.Plo b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-dxbc.Plo
new file mode 100644
index 00000000..e7347a2f
--- /dev/null
+++ b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-dxbc.Plo
@@ -0,0 +1,131 @@
+libs/vkd3d-shader/libvkd3d_shader_la-dxbc.lo: libs/vkd3d-shader/dxbc.c \
+ /usr/include/stdc-predef.h libs/vkd3d-shader/vkd3d_shader_private.h \
+ include/private/vkd3d_common.h include/vkd3d_windows.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h \
+ /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
+ /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \
+ /usr/include/sys/types.h /usr/include/bits/types.h \
+ /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \
+ /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \
+ /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \
+ /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \
+ /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \
+ /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \
+ /usr/include/bits/types/__sigset_t.h \
+ /usr/include/bits/types/struct_timeval.h \
+ /usr/include/bits/types/struct_timespec.h \
+ /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
+ /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \
+ /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
+ /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/strings.h \
+ include/private/vkd3d_spinlock.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h \
+ /usr/include/stdint.h /usr/include/bits/wchar.h \
+ /usr/include/bits/stdint-uintn.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h \
+ include/private/vkd3d_atomic.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h \
+ include/private/vkd3d_profiling.h /usr/include/ctype.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/include/bits/uio_lim.h include/private/vkd3d_memory.h \
+ /usr/include/assert.h include/private/vkd3d_debug.h \
+ include/private/vkd3d_common.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h \
+ include/vkd3d_shader.h include/vkd3d_types.h include/private/list.h \
+ /usr/include/inttypes.h
+/usr/include/stdc-predef.h:
+libs/vkd3d-shader/vkd3d_shader_private.h:
+include/private/vkd3d_common.h:
+include/vkd3d_windows.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h:
+/usr/include/stdlib.h:
+/usr/include/bits/libc-header-start.h:
+/usr/include/features.h:
+/usr/include/sys/cdefs.h:
+/usr/include/bits/wordsize.h:
+/usr/include/bits/long-double.h:
+/usr/include/gnu/stubs.h:
+/usr/include/gnu/stubs-64.h:
+/usr/include/bits/waitflags.h:
+/usr/include/bits/waitstatus.h:
+/usr/include/bits/floatn.h:
+/usr/include/bits/floatn-common.h:
+/usr/include/bits/types/locale_t.h:
+/usr/include/bits/types/__locale_t.h:
+/usr/include/sys/types.h:
+/usr/include/bits/types.h:
+/usr/include/bits/timesize.h:
+/usr/include/bits/typesizes.h:
+/usr/include/bits/time64.h:
+/usr/include/bits/types/clock_t.h:
+/usr/include/bits/types/clockid_t.h:
+/usr/include/bits/types/time_t.h:
+/usr/include/bits/types/timer_t.h:
+/usr/include/bits/stdint-intn.h:
+/usr/include/endian.h:
+/usr/include/bits/endian.h:
+/usr/include/bits/endianness.h:
+/usr/include/bits/byteswap.h:
+/usr/include/bits/uintn-identity.h:
+/usr/include/sys/select.h:
+/usr/include/bits/select.h:
+/usr/include/bits/types/sigset_t.h:
+/usr/include/bits/types/__sigset_t.h:
+/usr/include/bits/types/struct_timeval.h:
+/usr/include/bits/types/struct_timespec.h:
+/usr/include/bits/pthreadtypes.h:
+/usr/include/bits/thread-shared-types.h:
+/usr/include/bits/pthreadtypes-arch.h:
+/usr/include/bits/struct_mutex.h:
+/usr/include/bits/struct_rwlock.h:
+/usr/include/alloca.h:
+/usr/include/bits/stdlib-bsearch.h:
+/usr/include/bits/stdlib-float.h:
+/usr/include/string.h:
+/usr/include/strings.h:
+include/private/vkd3d_spinlock.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h:
+/usr/include/stdint.h:
+/usr/include/bits/wchar.h:
+/usr/include/bits/stdint-uintn.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h:
+include/private/vkd3d_atomic.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h:
+include/private/vkd3d_profiling.h:
+/usr/include/ctype.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h:
+/usr/include/limits.h:
+/usr/include/bits/posix1_lim.h:
+/usr/include/bits/local_lim.h:
+/usr/include/linux/limits.h:
+/usr/include/bits/posix2_lim.h:
+/usr/include/bits/xopen_lim.h:
+/usr/include/bits/uio_lim.h:
+include/private/vkd3d_memory.h:
+/usr/include/assert.h:
+include/private/vkd3d_debug.h:
+include/private/vkd3d_common.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h:
+include/vkd3d_shader.h:
+include/vkd3d_types.h:
+include/private/list.h:
+/usr/include/inttypes.h:
diff --git a/libs/vkd3d-shader/.deps/libvkd3d_shader_la-dxil.Plo b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-dxil.Plo
new file mode 100644
index 00000000..788bf34a
--- /dev/null
+++ b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-dxil.Plo
@@ -0,0 +1,122 @@
+libs/vkd3d-shader/libvkd3d_shader_la-dxil.lo: libs/vkd3d-shader/dxil.c \
+ /usr/include/stdc-predef.h libs/vkd3d-shader/vkd3d_shader_private.h \
+ include/private/vkd3d_common.h include/config.h include/vkd3d_windows.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include/stddef.h \
+ /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
+ /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \
+ /usr/include/sys/types.h /usr/include/bits/types.h \
+ /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \
+ /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \
+ /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \
+ /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \
+ /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \
+ /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \
+ /usr/include/bits/types/__sigset_t.h \
+ /usr/include/bits/types/struct_timeval.h \
+ /usr/include/bits/types/struct_timespec.h \
+ /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
+ /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \
+ /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
+ /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/strings.h \
+ include/private/vkd3d_spinlock.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include/stdint.h \
+ /usr/include/stdint.h /usr/include/bits/wchar.h \
+ /usr/include/bits/stdint-uintn.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include/stdbool.h \
+ /usr/include/ctype.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/include/bits/uio_lim.h include/private/vkd3d_memory.h \
+ /usr/include/assert.h include/private/vkd3d_debug.h \
+ include/private/vkd3d_common.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include/stdarg.h \
+ include/vkd3d_shader.h include/vkd3d_types.h include/private/list.h \
+ /usr/include/inttypes.h /tmp/include/dxil-spirv/dxil_spirv_c.h
+/usr/include/stdc-predef.h:
+libs/vkd3d-shader/vkd3d_shader_private.h:
+include/private/vkd3d_common.h:
+include/config.h:
+include/vkd3d_windows.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include/stddef.h:
+/usr/include/stdlib.h:
+/usr/include/bits/libc-header-start.h:
+/usr/include/features.h:
+/usr/include/sys/cdefs.h:
+/usr/include/bits/wordsize.h:
+/usr/include/bits/long-double.h:
+/usr/include/gnu/stubs.h:
+/usr/include/gnu/stubs-64.h:
+/usr/include/bits/waitflags.h:
+/usr/include/bits/waitstatus.h:
+/usr/include/bits/floatn.h:
+/usr/include/bits/floatn-common.h:
+/usr/include/bits/types/locale_t.h:
+/usr/include/bits/types/__locale_t.h:
+/usr/include/sys/types.h:
+/usr/include/bits/types.h:
+/usr/include/bits/timesize.h:
+/usr/include/bits/typesizes.h:
+/usr/include/bits/time64.h:
+/usr/include/bits/types/clock_t.h:
+/usr/include/bits/types/clockid_t.h:
+/usr/include/bits/types/time_t.h:
+/usr/include/bits/types/timer_t.h:
+/usr/include/bits/stdint-intn.h:
+/usr/include/endian.h:
+/usr/include/bits/endian.h:
+/usr/include/bits/endianness.h:
+/usr/include/bits/byteswap.h:
+/usr/include/bits/uintn-identity.h:
+/usr/include/sys/select.h:
+/usr/include/bits/select.h:
+/usr/include/bits/types/sigset_t.h:
+/usr/include/bits/types/__sigset_t.h:
+/usr/include/bits/types/struct_timeval.h:
+/usr/include/bits/types/struct_timespec.h:
+/usr/include/bits/pthreadtypes.h:
+/usr/include/bits/thread-shared-types.h:
+/usr/include/bits/pthreadtypes-arch.h:
+/usr/include/bits/struct_mutex.h:
+/usr/include/bits/struct_rwlock.h:
+/usr/include/alloca.h:
+/usr/include/bits/stdlib-bsearch.h:
+/usr/include/bits/stdlib-float.h:
+/usr/include/string.h:
+/usr/include/strings.h:
+include/private/vkd3d_spinlock.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include/stdint.h:
+/usr/include/stdint.h:
+/usr/include/bits/wchar.h:
+/usr/include/bits/stdint-uintn.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include/stdbool.h:
+/usr/include/ctype.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include-fixed/limits.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include-fixed/syslimits.h:
+/usr/include/limits.h:
+/usr/include/bits/posix1_lim.h:
+/usr/include/bits/local_lim.h:
+/usr/include/linux/limits.h:
+/usr/include/bits/posix2_lim.h:
+/usr/include/bits/xopen_lim.h:
+/usr/include/bits/uio_lim.h:
+include/private/vkd3d_memory.h:
+/usr/include/assert.h:
+include/private/vkd3d_debug.h:
+include/private/vkd3d_common.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include/stdarg.h:
+include/vkd3d_shader.h:
+include/vkd3d_types.h:
+include/private/list.h:
+/usr/include/inttypes.h:
+/tmp/include/dxil-spirv/dxil_spirv_c.h:
diff --git a/libs/vkd3d-shader/.deps/libvkd3d_shader_la-spirv.Plo b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-spirv.Plo
new file mode 100644
index 00000000..e8308e98
--- /dev/null
+++ b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-spirv.Plo
@@ -0,0 +1,157 @@
+libs/vkd3d-shader/libvkd3d_shader_la-spirv.lo: libs/vkd3d-shader/spirv.c \
+ /usr/include/stdc-predef.h libs/vkd3d-shader/vkd3d_shader_private.h \
+ include/private/vkd3d_common.h include/vkd3d_windows.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h \
+ /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
+ /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \
+ /usr/include/sys/types.h /usr/include/bits/types.h \
+ /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \
+ /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \
+ /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \
+ /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \
+ /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \
+ /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \
+ /usr/include/bits/types/__sigset_t.h \
+ /usr/include/bits/types/struct_timeval.h \
+ /usr/include/bits/types/struct_timespec.h \
+ /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
+ /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \
+ /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
+ /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/strings.h \
+ include/private/vkd3d_spinlock.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h \
+ /usr/include/stdint.h /usr/include/bits/wchar.h \
+ /usr/include/bits/stdint-uintn.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h \
+ include/private/vkd3d_atomic.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h \
+ include/private/vkd3d_profiling.h /usr/include/ctype.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/include/bits/uio_lim.h include/private/vkd3d_memory.h \
+ /usr/include/assert.h include/private/vkd3d_debug.h \
+ include/private/vkd3d_common.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h \
+ include/vkd3d_shader.h include/vkd3d_types.h include/private/list.h \
+ /usr/include/inttypes.h include/vkd3d_d3d12.h include/vkd3d_dxgibase.h \
+ include/vkd3d_dxgiformat.h include/vkd3d_d3dcommon.h \
+ include/private/rbtree.h /usr/include/stdio.h \
+ /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \
+ /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
+ /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
+ /usr/include/bits/types/cookie_io_functions_t.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
+ subprojects/SPIRV-Headers/include/spirv/unified1/spirv.h \
+ subprojects/SPIRV-Headers/include/spirv/unified1/GLSL.std.450.h
+/usr/include/stdc-predef.h:
+libs/vkd3d-shader/vkd3d_shader_private.h:
+include/private/vkd3d_common.h:
+include/vkd3d_windows.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h:
+/usr/include/stdlib.h:
+/usr/include/bits/libc-header-start.h:
+/usr/include/features.h:
+/usr/include/sys/cdefs.h:
+/usr/include/bits/wordsize.h:
+/usr/include/bits/long-double.h:
+/usr/include/gnu/stubs.h:
+/usr/include/gnu/stubs-64.h:
+/usr/include/bits/waitflags.h:
+/usr/include/bits/waitstatus.h:
+/usr/include/bits/floatn.h:
+/usr/include/bits/floatn-common.h:
+/usr/include/bits/types/locale_t.h:
+/usr/include/bits/types/__locale_t.h:
+/usr/include/sys/types.h:
+/usr/include/bits/types.h:
+/usr/include/bits/timesize.h:
+/usr/include/bits/typesizes.h:
+/usr/include/bits/time64.h:
+/usr/include/bits/types/clock_t.h:
+/usr/include/bits/types/clockid_t.h:
+/usr/include/bits/types/time_t.h:
+/usr/include/bits/types/timer_t.h:
+/usr/include/bits/stdint-intn.h:
+/usr/include/endian.h:
+/usr/include/bits/endian.h:
+/usr/include/bits/endianness.h:
+/usr/include/bits/byteswap.h:
+/usr/include/bits/uintn-identity.h:
+/usr/include/sys/select.h:
+/usr/include/bits/select.h:
+/usr/include/bits/types/sigset_t.h:
+/usr/include/bits/types/__sigset_t.h:
+/usr/include/bits/types/struct_timeval.h:
+/usr/include/bits/types/struct_timespec.h:
+/usr/include/bits/pthreadtypes.h:
+/usr/include/bits/thread-shared-types.h:
+/usr/include/bits/pthreadtypes-arch.h:
+/usr/include/bits/struct_mutex.h:
+/usr/include/bits/struct_rwlock.h:
+/usr/include/alloca.h:
+/usr/include/bits/stdlib-bsearch.h:
+/usr/include/bits/stdlib-float.h:
+/usr/include/string.h:
+/usr/include/strings.h:
+include/private/vkd3d_spinlock.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h:
+/usr/include/stdint.h:
+/usr/include/bits/wchar.h:
+/usr/include/bits/stdint-uintn.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h:
+include/private/vkd3d_atomic.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h:
+include/private/vkd3d_profiling.h:
+/usr/include/ctype.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h:
+/usr/include/limits.h:
+/usr/include/bits/posix1_lim.h:
+/usr/include/bits/local_lim.h:
+/usr/include/linux/limits.h:
+/usr/include/bits/posix2_lim.h:
+/usr/include/bits/xopen_lim.h:
+/usr/include/bits/uio_lim.h:
+include/private/vkd3d_memory.h:
+/usr/include/assert.h:
+include/private/vkd3d_debug.h:
+include/private/vkd3d_common.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h:
+include/vkd3d_shader.h:
+include/vkd3d_types.h:
+include/private/list.h:
+/usr/include/inttypes.h:
+include/vkd3d_d3d12.h:
+include/vkd3d_dxgibase.h:
+include/vkd3d_dxgiformat.h:
+include/vkd3d_d3dcommon.h:
+include/private/rbtree.h:
+/usr/include/stdio.h:
+/usr/include/bits/types/__fpos_t.h:
+/usr/include/bits/types/__mbstate_t.h:
+/usr/include/bits/types/__fpos64_t.h:
+/usr/include/bits/types/__FILE.h:
+/usr/include/bits/types/FILE.h:
+/usr/include/bits/types/struct_FILE.h:
+/usr/include/bits/types/cookie_io_functions_t.h:
+/usr/include/bits/stdio_lim.h:
+/usr/include/bits/stdio.h:
+subprojects/SPIRV-Headers/include/spirv/unified1/spirv.h:
+subprojects/SPIRV-Headers/include/spirv/unified1/GLSL.std.450.h:
diff --git a/libs/vkd3d-shader/.deps/libvkd3d_shader_la-trace.Plo b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-trace.Plo
new file mode 100644
index 00000000..f2c68d6f
--- /dev/null
+++ b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-trace.Plo
@@ -0,0 +1,146 @@
+libs/vkd3d-shader/libvkd3d_shader_la-trace.lo: libs/vkd3d-shader/trace.c \
+ /usr/include/stdc-predef.h libs/vkd3d-shader/vkd3d_shader_private.h \
+ include/private/vkd3d_common.h include/vkd3d_windows.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h \
+ /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
+ /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \
+ /usr/include/sys/types.h /usr/include/bits/types.h \
+ /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \
+ /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \
+ /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \
+ /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \
+ /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \
+ /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \
+ /usr/include/bits/types/__sigset_t.h \
+ /usr/include/bits/types/struct_timeval.h \
+ /usr/include/bits/types/struct_timespec.h \
+ /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
+ /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \
+ /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
+ /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/strings.h \
+ include/private/vkd3d_spinlock.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h \
+ /usr/include/stdint.h /usr/include/bits/wchar.h \
+ /usr/include/bits/stdint-uintn.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h \
+ include/private/vkd3d_atomic.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h \
+ include/private/vkd3d_profiling.h /usr/include/ctype.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/include/bits/uio_lim.h include/private/vkd3d_memory.h \
+ /usr/include/assert.h include/private/vkd3d_debug.h \
+ include/private/vkd3d_common.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h \
+ include/vkd3d_shader.h include/vkd3d_types.h include/private/list.h \
+ /usr/include/inttypes.h /usr/include/stdio.h \
+ /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \
+ /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
+ /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
+ /usr/include/bits/types/cookie_io_functions_t.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h
+/usr/include/stdc-predef.h:
+libs/vkd3d-shader/vkd3d_shader_private.h:
+include/private/vkd3d_common.h:
+include/vkd3d_windows.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h:
+/usr/include/stdlib.h:
+/usr/include/bits/libc-header-start.h:
+/usr/include/features.h:
+/usr/include/sys/cdefs.h:
+/usr/include/bits/wordsize.h:
+/usr/include/bits/long-double.h:
+/usr/include/gnu/stubs.h:
+/usr/include/gnu/stubs-64.h:
+/usr/include/bits/waitflags.h:
+/usr/include/bits/waitstatus.h:
+/usr/include/bits/floatn.h:
+/usr/include/bits/floatn-common.h:
+/usr/include/bits/types/locale_t.h:
+/usr/include/bits/types/__locale_t.h:
+/usr/include/sys/types.h:
+/usr/include/bits/types.h:
+/usr/include/bits/timesize.h:
+/usr/include/bits/typesizes.h:
+/usr/include/bits/time64.h:
+/usr/include/bits/types/clock_t.h:
+/usr/include/bits/types/clockid_t.h:
+/usr/include/bits/types/time_t.h:
+/usr/include/bits/types/timer_t.h:
+/usr/include/bits/stdint-intn.h:
+/usr/include/endian.h:
+/usr/include/bits/endian.h:
+/usr/include/bits/endianness.h:
+/usr/include/bits/byteswap.h:
+/usr/include/bits/uintn-identity.h:
+/usr/include/sys/select.h:
+/usr/include/bits/select.h:
+/usr/include/bits/types/sigset_t.h:
+/usr/include/bits/types/__sigset_t.h:
+/usr/include/bits/types/struct_timeval.h:
+/usr/include/bits/types/struct_timespec.h:
+/usr/include/bits/pthreadtypes.h:
+/usr/include/bits/thread-shared-types.h:
+/usr/include/bits/pthreadtypes-arch.h:
+/usr/include/bits/struct_mutex.h:
+/usr/include/bits/struct_rwlock.h:
+/usr/include/alloca.h:
+/usr/include/bits/stdlib-bsearch.h:
+/usr/include/bits/stdlib-float.h:
+/usr/include/string.h:
+/usr/include/strings.h:
+include/private/vkd3d_spinlock.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h:
+/usr/include/stdint.h:
+/usr/include/bits/wchar.h:
+/usr/include/bits/stdint-uintn.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h:
+include/private/vkd3d_atomic.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h:
+include/private/vkd3d_profiling.h:
+/usr/include/ctype.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h:
+/usr/include/limits.h:
+/usr/include/bits/posix1_lim.h:
+/usr/include/bits/local_lim.h:
+/usr/include/linux/limits.h:
+/usr/include/bits/posix2_lim.h:
+/usr/include/bits/xopen_lim.h:
+/usr/include/bits/uio_lim.h:
+include/private/vkd3d_memory.h:
+/usr/include/assert.h:
+include/private/vkd3d_debug.h:
+include/private/vkd3d_common.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h:
+include/vkd3d_shader.h:
+include/vkd3d_types.h:
+include/private/list.h:
+/usr/include/inttypes.h:
+/usr/include/stdio.h:
+/usr/include/bits/types/__fpos_t.h:
+/usr/include/bits/types/__mbstate_t.h:
+/usr/include/bits/types/__fpos64_t.h:
+/usr/include/bits/types/__FILE.h:
+/usr/include/bits/types/FILE.h:
+/usr/include/bits/types/struct_FILE.h:
+/usr/include/bits/types/cookie_io_functions_t.h:
+/usr/include/bits/stdio_lim.h:
+/usr/include/bits/stdio.h:
diff --git a/libs/vkd3d-shader/.deps/libvkd3d_shader_la-vkd3d_shader_main.Plo b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-vkd3d_shader_main.Plo
new file mode 100644
index 00000000..355d3087
--- /dev/null
+++ b/libs/vkd3d-shader/.deps/libvkd3d_shader_la-vkd3d_shader_main.Plo
@@ -0,0 +1,147 @@
+libs/vkd3d-shader/libvkd3d_shader_la-vkd3d_shader_main.lo: \
+ libs/vkd3d-shader/vkd3d_shader_main.c /usr/include/stdc-predef.h \
+ libs/vkd3d-shader/vkd3d_shader_private.h include/private/vkd3d_common.h \
+ include/vkd3d_windows.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h \
+ /usr/include/stdlib.h /usr/include/bits/libc-header-start.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
+ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
+ /usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
+ /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \
+ /usr/include/sys/types.h /usr/include/bits/types.h \
+ /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \
+ /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \
+ /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \
+ /usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/bits/endianness.h /usr/include/bits/byteswap.h \
+ /usr/include/bits/uintn-identity.h /usr/include/sys/select.h \
+ /usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \
+ /usr/include/bits/types/__sigset_t.h \
+ /usr/include/bits/types/struct_timeval.h \
+ /usr/include/bits/types/struct_timespec.h \
+ /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
+ /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \
+ /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
+ /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
+ /usr/include/string.h /usr/include/strings.h \
+ include/private/vkd3d_spinlock.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h \
+ /usr/include/stdint.h /usr/include/bits/wchar.h \
+ /usr/include/bits/stdint-uintn.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h \
+ include/private/vkd3d_atomic.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h \
+ include/private/vkd3d_profiling.h /usr/include/ctype.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/include/bits/uio_lim.h include/private/vkd3d_memory.h \
+ /usr/include/assert.h include/private/vkd3d_debug.h \
+ include/private/vkd3d_common.h \
+ /usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h \
+ include/vkd3d_shader.h include/vkd3d_types.h include/private/list.h \
+ /usr/include/inttypes.h /usr/include/stdio.h \
+ /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \
+ /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \
+ /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \
+ /usr/include/bits/types/cookie_io_functions_t.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h
+/usr/include/stdc-predef.h:
+libs/vkd3d-shader/vkd3d_shader_private.h:
+include/private/vkd3d_common.h:
+include/vkd3d_windows.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h:
+/usr/include/stdlib.h:
+/usr/include/bits/libc-header-start.h:
+/usr/include/features.h:
+/usr/include/sys/cdefs.h:
+/usr/include/bits/wordsize.h:
+/usr/include/bits/long-double.h:
+/usr/include/gnu/stubs.h:
+/usr/include/gnu/stubs-64.h:
+/usr/include/bits/waitflags.h:
+/usr/include/bits/waitstatus.h:
+/usr/include/bits/floatn.h:
+/usr/include/bits/floatn-common.h:
+/usr/include/bits/types/locale_t.h:
+/usr/include/bits/types/__locale_t.h:
+/usr/include/sys/types.h:
+/usr/include/bits/types.h:
+/usr/include/bits/timesize.h:
+/usr/include/bits/typesizes.h:
+/usr/include/bits/time64.h:
+/usr/include/bits/types/clock_t.h:
+/usr/include/bits/types/clockid_t.h:
+/usr/include/bits/types/time_t.h:
+/usr/include/bits/types/timer_t.h:
+/usr/include/bits/stdint-intn.h:
+/usr/include/endian.h:
+/usr/include/bits/endian.h:
+/usr/include/bits/endianness.h:
+/usr/include/bits/byteswap.h:
+/usr/include/bits/uintn-identity.h:
+/usr/include/sys/select.h:
+/usr/include/bits/select.h:
+/usr/include/bits/types/sigset_t.h:
+/usr/include/bits/types/__sigset_t.h:
+/usr/include/bits/types/struct_timeval.h:
+/usr/include/bits/types/struct_timespec.h:
+/usr/include/bits/pthreadtypes.h:
+/usr/include/bits/thread-shared-types.h:
+/usr/include/bits/pthreadtypes-arch.h:
+/usr/include/bits/struct_mutex.h:
+/usr/include/bits/struct_rwlock.h:
+/usr/include/alloca.h:
+/usr/include/bits/stdlib-bsearch.h:
+/usr/include/bits/stdlib-float.h:
+/usr/include/string.h:
+/usr/include/strings.h:
+include/private/vkd3d_spinlock.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdint.h:
+/usr/include/stdint.h:
+/usr/include/bits/wchar.h:
+/usr/include/bits/stdint-uintn.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdbool.h:
+include/private/vkd3d_atomic.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/emmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/xmmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mmintrin.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/mm_malloc.h:
+include/private/vkd3d_profiling.h:
+/usr/include/ctype.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/limits.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed/syslimits.h:
+/usr/include/limits.h:
+/usr/include/bits/posix1_lim.h:
+/usr/include/bits/local_lim.h:
+/usr/include/linux/limits.h:
+/usr/include/bits/posix2_lim.h:
+/usr/include/bits/xopen_lim.h:
+/usr/include/bits/uio_lim.h:
+include/private/vkd3d_memory.h:
+/usr/include/assert.h:
+include/private/vkd3d_debug.h:
+include/private/vkd3d_common.h:
+/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stdarg.h:
+include/vkd3d_shader.h:
+include/vkd3d_types.h:
+include/private/list.h:
+/usr/include/inttypes.h:
+/usr/include/stdio.h:
+/usr/include/bits/types/__fpos_t.h:
+/usr/include/bits/types/__mbstate_t.h:
+/usr/include/bits/types/__fpos64_t.h:
+/usr/include/bits/types/__FILE.h:
+/usr/include/bits/types/FILE.h:
+/usr/include/bits/types/struct_FILE.h:
+/usr/include/bits/types/cookie_io_functions_t.h:
+/usr/include/bits/stdio_lim.h:
+/usr/include/bits/stdio.h:
diff --git a/libs/vkd3d-shader/.libs/libvkd3d_shader_la-checksum.o b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-checksum.o
new file mode 100644
index 00000000..406162c8
--- /dev/null
+++ b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-checksum.o
Binary files differ
diff --git a/libs/vkd3d-shader/.libs/libvkd3d_shader_la-dxbc.o b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-dxbc.o
new file mode 100644
index 00000000..9a991a73
--- /dev/null
+++ b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-dxbc.o
Binary files differ
diff --git a/libs/vkd3d-shader/.libs/libvkd3d_shader_la-spirv.o b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-spirv.o
new file mode 100644
index 00000000..f831cb66
--- /dev/null
+++ b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-spirv.o
Binary files differ
diff --git a/libs/vkd3d-shader/.libs/libvkd3d_shader_la-trace.o b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-trace.o
new file mode 100644
index 00000000..d4c5743e
--- /dev/null
+++ b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-trace.o
Binary files differ
diff --git a/libs/vkd3d-shader/.libs/libvkd3d_shader_la-vkd3d_shader_main.o b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-vkd3d_shader_main.o
new file mode 100644
index 00000000..5c7556fe
--- /dev/null
+++ b/libs/vkd3d-shader/.libs/libvkd3d_shader_la-vkd3d_shader_main.o
Binary files differ
diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c
index 9f784a72..56f4e6d6 100644
--- a/libs/vkd3d-shader/spirv.c
+++ b/libs/vkd3d-shader/spirv.c
@@ -5626,6 +5626,14 @@ static void vkd3d_dxbc_compiler_emit_initial_declarations(struct vkd3d_dxbc_comp
case VKD3D_SHADER_TYPE_PIXEL:
vkd3d_spirv_set_execution_model(builder, SpvExecutionModelFragment);
vkd3d_dxbc_compiler_emit_execution_mode(compiler, SpvExecutionModeOriginUpperLeft, NULL, 0);
+ /* We introduce side effects into fragment shaders when we enable descriptor QA,
+ * so try to force EarlyFragmentTests if it's safe to do so. */
+ if ((compiler->shader_interface.flags & VKD3D_SHADER_INTERFACE_DESCRIPTOR_QA_BUFFER) &&
+ !compiler->scan_info->early_fragment_tests && !compiler->scan_info->has_side_effects &&
+ !compiler->scan_info->discards && !compiler->scan_info->needs_late_zs)
+ {
+ vkd3d_dxbc_compiler_emit_execution_mode(compiler, SpvExecutionModeEarlyFragmentTests, NULL, 0);
+ }
break;
case VKD3D_SHADER_TYPE_COMPUTE:
vkd3d_spirv_set_execution_model(builder, SpvExecutionModelGLCompute);
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c
index 54260f92..a72b5438 100644
--- a/libs/vkd3d-shader/vkd3d_shader_main.c
+++ b/libs/vkd3d-shader/vkd3d_shader_main.c
@@ -426,6 +426,16 @@ static bool vkd3d_shader_instruction_is_uav_read(const struct vkd3d_shader_instr
|| ((handler_idx == VKD3DSIH_LD_STRUCTURED || handler_idx == VKD3DSIH_LD_STRUCTURED_FEEDBACK) && instruction->src[2].reg.type == VKD3DSPR_UAV);
}
+static bool vkd3d_shader_instruction_is_uav_write(const struct vkd3d_shader_instruction *instruction)
+{
+ enum VKD3D_SHADER_INSTRUCTION_HANDLER handler_idx = instruction->handler_idx;
+ return (VKD3DSIH_ATOMIC_AND <= handler_idx && handler_idx <= VKD3DSIH_ATOMIC_XOR)
+ || (VKD3DSIH_IMM_ATOMIC_ALLOC <= handler_idx && handler_idx <= VKD3DSIH_IMM_ATOMIC_XOR)
+ || handler_idx == VKD3DSIH_STORE_UAV_TYPED
+ || handler_idx == VKD3DSIH_STORE_RAW
+ || handler_idx == VKD3DSIH_STORE_STRUCTURED;
+}
+
static bool vkd3d_shader_instruction_is_uav_atomic(const struct vkd3d_shader_instruction *instruction)
{
enum VKD3D_SHADER_INSTRUCTION_HANDLER handler_idx = instruction->handler_idx;
@@ -458,6 +468,7 @@ static bool vkd3d_shader_instruction_is_uav_counter(const struct vkd3d_shader_in
static void vkd3d_shader_scan_record_uav_counter(struct vkd3d_shader_scan_info *scan_info,
const struct vkd3d_shader_register *reg)
{
+ scan_info->has_side_effects = true;
vkd3d_shader_scan_set_register_flags(scan_info, VKD3DSPR_UAV,
reg->idx[0].offset, VKD3D_SHADER_UAV_FLAG_ATOMIC_COUNTER);
}
@@ -471,6 +482,24 @@ static void vkd3d_shader_scan_input_declaration(struct vkd3d_shader_scan_info *s
scan_info->use_vocp = true;
}
+static void vkd3d_shader_scan_output_declaration(struct vkd3d_shader_scan_info *scan_info,
+ const struct vkd3d_shader_instruction *instruction)
+{
+ switch (instruction->declaration.dst.reg.type)
+ {
+ case VKD3DSPR_DEPTHOUT:
+ case VKD3DSPR_DEPTHOUTLE:
+ case VKD3DSPR_DEPTHOUTGE:
+ case VKD3DSPR_STENCILREFOUT:
+ case VKD3DSPR_SAMPLEMASK:
+ scan_info->needs_late_zs = true;
+ break;
+
+ default:
+ break;
+ }
+}
+
static void vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_info *scan_info,
const struct vkd3d_shader_instruction *instruction)
{
@@ -482,6 +511,16 @@ static void vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_info *scan_in
case VKD3DSIH_DCL_INPUT:
vkd3d_shader_scan_input_declaration(scan_info, instruction);
break;
+ case VKD3DSIH_DCL_OUTPUT:
+ vkd3d_shader_scan_output_declaration(scan_info, instruction);
+ break;
+ case VKD3DSIH_DISCARD:
+ scan_info->discards = true;
+ break;
+ case VKD3DSIH_DCL_GLOBAL_FLAGS:
+ if (instruction->flags & VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL)
+ scan_info->early_fragment_tests = true;
+ break;
default:
break;
}
@@ -510,6 +549,9 @@ static void vkd3d_shader_scan_instruction(struct vkd3d_shader_scan_info *scan_in
}
}
+ if (vkd3d_shader_instruction_is_uav_write(instruction))
+ scan_info->has_side_effects = true;
+
if (vkd3d_shader_instruction_is_uav_counter(instruction))
vkd3d_shader_scan_record_uav_counter(scan_info, &instruction->src[0].reg);
}