Commit Graph

3670 Commits

Author SHA1 Message Date
Hugo Devillers
55e08aff31 use 'op' as the ground truth in is_array and is_pointer 2023-12-04 18:49:46 +01:00
Hugo Devillers
7c7b6e600f msl: look at the pointee type in emit_tessellation_access_chain 2023-12-04 18:49:22 +01:00
Hugo Devillers
8632f67109 msl: look at the actual variable element type in to_member_reference 2023-12-04 18:36:39 +01:00
Hugo Devillers
5b1881041e msl: make build_extended_vector_type deal with compound types better 2023-12-04 18:33:53 +01:00
Hugo Devillers
2c3734df75 msl: fix many instances of SPIRType.self being incorrectly set 2023-12-04 18:33:27 +01:00
Hugo Devillers
ee7aaaf662 msl: fix two more instances of the wrong op in SPIRType 2023-12-04 18:32:56 +01:00
Hugo Devillers
738bfd49e3 msl: fix test regressions with samplemask 2023-12-04 12:47:15 +01:00
Hugo Devillers
af92037acb fix a bunch of case where SPIRType::op is wrong/corrupted 2023-11-30 15:42:46 +01:00
Hugo Devillers
950cad5913 Added an Op field to SPIRType
This field allows telling what the 'head' of the type is, without having to look at parent types.
2023-11-30 12:28:50 +01:00
Hans-Kristian Arntzen
a3da0e87fa
Merge pull request #2235 from KhronosGroup/fix-2212
MSL: Implement MSL 3.1 image atomics natively
2023-11-29 14:48:20 +01:00
Hans-Kristian Arntzen
f3573b9f1e MSL: Throw on emulated image array atomics. 2023-11-29 14:17:57 +01:00
Hans-Kristian Arntzen
a326b3ea3b MSL: Support using the offline Metal Windows toolchain for validation. 2023-11-29 13:53:23 +01:00
Hans-Kristian Arntzen
e33670e794 MSL: Add some image atomic tests for 3.1. 2023-11-29 13:53:23 +01:00
Hans-Kristian Arntzen
2ff08b31c0 MSL: Update test scripts for MSL 3.1 testing. 2023-11-29 13:53:23 +01:00
Hans-Kristian Arntzen
9c054b1f34 MSL: Implement Metal 3.1 image atomics natively.
The check_discard code was too annoying to deal with,
and there is no requirement to return anything meaningful.
Vulkan specs state that values returned by atomic instructions are undefined.
2023-11-29 13:53:23 +01:00
Hans-Kristian Arntzen
50e90dd74e
Merge pull request #2233 from cdavis5e/agx-cube-grad-fixup
MSL: Work around broken cube texture gradients on Apple Silicon.
2023-11-28 12:05:55 +01:00
Chip Davis
18976c4307 Add missing new MSL options to the C API and the CLI. 2023-11-27 15:03:58 -08:00
Chip Davis
7ef52b04c3 MSL: Work around broken cube texture gradients on Apple Silicon.
To date, all released Apple Silicon GPUs incorrectly interpret the
gradient vectors when sampling a cube texture. Specifically, they ignore
one of the three partial derivatives in each gradient depending on the
selected major axis, and they expect the remaining derivatives to be
partially transformed.

h/t @lexaknyazev for the code used in the `spvGradientCube()` function.

Fixes 8 tests under `dEQP-VK.glsl.texture_functions.texturegrad.*`.
2023-11-27 15:03:26 -08:00
Hans-Kristian Arntzen
3717660e14
Merge pull request #2234 from KhronosGroup/fix-2226
MSL: Support std140 half matrices and arrays.
2023-11-27 17:17:13 +01:00
Hans-Kristian Arntzen
2e022dbff5 MSL: Move test files to packing/. 2023-11-27 16:54:27 +01:00
Hans-Kristian Arntzen
3872dcd68f MSL: Don't use swizzle if we have wrapper. 2023-11-27 16:52:32 +01:00
Hans-Kristian Arntzen
61bbcb2705
Merge pull request #2232 from KhronosGroup/fix-2228
MSL: Add divide to reserved function names.
2023-11-27 16:31:01 +01:00
Hans-Kristian Arntzen
81c047c3ed MSL: Use more appropriate padded types. 2023-11-27 16:30:24 +01:00
Hans-Kristian Arntzen
57dbfa0400 MSL: Support std140 half matrices and arrays.
Super awkward since there is no clean way to express this.
2023-11-27 15:28:20 +01:00
Hans-Kristian Arntzen
dddabb9c11 MSL: Add divide to reserved function names. 2023-11-27 12:14:30 +01:00
Hans-Kristian Arntzen
42299f92ef
Merge pull request #2230 from chirsz-ever/chirsz/custom-float-formater
Allow to customize float literals in output
2023-11-24 12:47:51 +01:00
Hans-Kristian Arntzen
3e8e761e49
Apply suggestions from code review 2023-11-24 12:46:50 +01:00
Hans-Kristian Arntzen
94f4c48faf
Apply suggestions from code review 2023-11-24 12:46:28 +01:00
chirsz-ever
20dd53b312
Allow to customize float literals in output 2023-11-22 22:17:24 +08:00
chirsz-ever
ec7a23c826
Add "build" to .gitignore 2023-11-22 20:05:42 +08:00
Hans-Kristian Arntzen
42aac916ab
Merge pull request #2227 from elizagamedev/exv/essl1-uint-bool-hack
Workaround for generating bool uniforms in ESSL1
2023-11-16 15:47:51 +01:00
Hans-Kristian Arntzen
bf059200be
Only use lowp path for legacy ES 2023-11-16 14:00:48 +01:00
Hans-Kristian Arntzen
0e9bc69128
Review nit, update brace placement 2023-11-16 14:00:00 +01:00
Eliza Velasquez
93150ed7fb Workaround for generating bool uniforms in ESSL1
Fixes #2223.
2023-11-13 15:23:36 -08:00
Hans-Kristian Arntzen
4818f7e7ef
Merge pull request #2222 from billhollings/fix-runtime-array-regression
MSL: Fix regression error in argument buffer runtime arrays.
2023-11-03 11:18:21 +01:00
Bill Hollings
4a42191240 MSL: Fix regression error in argument buffer runtime arrays.
Argument buffers can contain multiple runtime arrays if they have fixed
lengths as specified by the binding API. Regression error had assumed each
runtime array is in separate argument buffer with undefined array length.

- Add CompilerMSL::is_var_runtime_size_array() to include test for
  setting of array length via CompilerMSL::add_msl_resource_binding().

- Fixed unrelated test case MSL compile syntax failure when acceleration
  structure is the first entry point function argument (unrelated).
2023-11-02 23:53:59 -04:00
Hans-Kristian Arntzen
637cff3d05
Merge pull request #2220 from KhronosGroup/pr-2208
Land PR 2208 and fix more issues with sample mask
2023-10-23 15:21:23 +02:00
Hans-Kristian Arntzen
2fba284b4e MSL: Improve handling of sample masks. 2023-10-23 14:40:28 +02:00
Hans-Kristian Arntzen
56bdcfaf0e Add test for sample mask bulk load/store. 2023-10-23 12:45:08 +02:00
Hans-Kristian Arntzen
0bedb69b02 HLSL: Declare sample mask array with proper module type.
GLSL uses int[] and HLSL emits uint[], and to deal properly
with array copies where we lose ability to rewrite arithmetic types,
we need to declare with proper type.
2023-10-23 12:29:25 +02:00
Hans-Kristian Arntzen
f12ee5e0a4 Merge remote-tracking branch 'epic/fixes_hlsl' 2023-10-23 11:54:49 +02:00
Laura Hermanns
5d7ee6ad11 Fix declaration of gl_SampleMaskIn[1] in HLSL backend. 2023-10-17 09:11:09 -04:00
Hans-Kristian Arntzen
2de1265fca
Merge pull request #2218 from KhronosGroup/pr-2217
Merge PR 2217
2023-10-16 12:19:24 +02:00
Hans-Kristian Arntzen
a4b8553982 Style fixups. 2023-10-16 11:55:41 +02:00
Hans-Kristian Arntzen
f30d280e7b Fixup stray comments in test_shaders.sh. 2023-10-16 11:52:21 +02:00
Hans-Kristian Arntzen
2d072c6828 Merge branch 'metal-3-1-regression-fix' of https://github.com/billhollings/SPIRV-Cross 2023-10-16 11:52:11 +02:00
Bill Hollings
16fbf8872a MSL: Workaround Metal 3.1 regression bug on recursive input structs.
Metal 3.1 introduced a Metal regression bug which causes an infinite recursion
crash during Metal's analysis of an entry point input structure that itself
contains internal recursion. This patch works around this by replacing the
recursive input declaration with a alternate variable of type void*, and
then casting to the correct type at the top of the entry point function.

- Add CompilerMSL::Options::replace_recursive_inputs to enable
  replacing recursive input.
- Add Compiler::type_contains_recursion() to determine if a struct
  contains internal recursion, and add custom Decorations to mark
  such structs, to short-cut future similar checks.
- Replace recursive input struct declarations with void*,
  and emit a recast to correct type at top of entry function.
- Add unit test.
- Compiler::type_is_top_level_block() remove hardcode reference to spirv_cross
  namespace, as it interferes with configurable namespaces (unrelated).
2023-10-14 14:46:47 -04:00
Hans-Kristian Arntzen
105d5a8a79 Fix stray namespace issue. 2023-10-14 12:36:49 +02:00
Hans-Kristian Arntzen
724433d729
Merge pull request #2216 from KhronosGroup/buffer-reference-2
GLSL: Use buffer_reference2 instead of 1.
2023-10-11 14:20:36 +02:00
Hans-Kristian Arntzen
082b1df25f
Merge pull request #2215 from KhronosGroup/fix-2210
GLSL: Fix and workaround some awkward code patterns
2023-10-11 14:20:11 +02:00