Граф коммитов

117 Коммитов

Автор SHA1 Сообщение Дата
Endre Oma 6ad8b307a1 Use the classic locale when converting floats to string 2017-01-11 17:06:06 +01:00
Bill Hollings 4e915e8c48 Run style formatter. 2017-01-08 08:52:57 -05:00
Bill Hollings 4a6358bb9f Add clean_func_name() to support overrides to function names. 2017-01-07 22:15:58 -05:00
Bill Hollings e6dab816b0 Removed names of unused function parameters. 2017-01-07 15:55:04 -05:00
Bill Hollings 91367799b0 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2017-01-06 14:13:56 -05:00
Hans-Kristian Arntzen 3576cfb158 Fix warning in MSL. 2017-01-05 18:16:22 +01:00
Bill Hollings e27a5f7df6 CompilerMSL refactored to simplify handling of vertex attributes.
Combine all vertex attributes into a single stage_in structure.
Remove unneeded structure members from MSLConfiguration, MSLVertexAttr and Meta::Decoration.
Remove unneeded CompilerMSL functions that supported struct offsets and padding.
2017-01-01 14:43:20 -05:00
Bill Hollings a2b8a0e5c9 Refactor emit_texture_op() function.
CompilerGLSL add to_function_name() and to_function_args() functions to organize
structure of emit_texture_op() function.
CompilerMSL add support for MSL gather(), gather_compare() and sample_compare() functions.
2016-12-28 18:36:42 -05:00
Bill Hollings 7d38f1822a CompilerMSL fixes to support pull-request feedback.
Make Compiler::OpcodeHandler and Compiler::traverse_all_reachable_opcodes protected
instead of private, for use by subclasses.
Add CompilerMSL::CustomFunctionHandler and traverse_all_reachable_opcodes() to detect
active opcodes that require the output of a custom function.
CompilerMSL::custom_function_ops use std::set to retain ordering to improve testability.
2016-12-21 16:31:13 -05:00
Bill Hollings b1b68db835 Resolve conflict with upstream pull. 2016-12-21 11:43:32 -05:00
Bill Hollings 1a5dc0edcd CompilerMSL support emitting custom functions for SPIR-V ops.
CompilerMSL use custom mod() function instead of Metal's fmod() function.
2016-12-18 21:42:10 -05:00
Bill Hollings 32ae2eceed CompilerMSL enhancements to handling of in/out variables.
CompilerMSL sort in/out attributes by attribute number (location). Sort inputs in reverse order.
CompilerMSL propagate incoming vertex attribute offset values.
CompilerMSL elide unused in/out variables.
CompilerMSL replace use of sets with unordered_sets.
2016-12-18 18:48:15 -05:00
Bill Hollings e73e8e4f48 Add support for the BuiltInClipDistance builtin for MSL.
CompilerGLSL builtin_to_glsl() function outputs gl_ClipDistance for BuiltInClipDistance
builtin, and includes builtin code in output when handling unknown builtin code.
CompilerMSL uses type ID instead of type object where appropriate to support array types,
where type.self is not consistent with actual type ID, plus support array stride calc
even when not explicitly set by SPIR-V code.
For output consistency, CompilerMSL prefers use of standard builtin names over specified
names, and output builtins qualified with output struct while in entry function.
2016-12-17 17:07:53 -05:00
Panagiotis Christopoulos Charitos 946f7796c1 Add an option to disable exceptions
Some refactoring in the no-exceptions case

Grooming the no-exceptions patch for pull request
2016-12-15 17:49:01 +01:00
Bill Hollings 1358362075 Fixes to non-native row-major matrix support.
Add support for OpLoad. Throw exception for non-square non-native row-major matrix.
Update variable and function names to clarify purposes.
2016-12-14 02:12:52 -05:00
Bill Hollings 343677e639 Support row-major matrices in access chain when not natively supported by backend (MSL). 2016-12-11 11:01:08 -05:00
Hans-Kristian Arntzen 03a26e593d Fixes for MSL and strip redundant parens in some places. 2016-12-06 23:03:35 +01:00
Hans-Kristian Arntzen e67f6f85a4 Defer parenthesis generation until needed.
Previously, we would generate parentheses proactively when generating
binary ops, however, this leads to uglier code and hits warnings in
compilers when used as a conditional.
2016-12-05 10:56:54 +01:00
Bill Hollings 72df15061d CompilerMSL do not clear used_by_shader flag of
contextual vertex attributes and resource bindings.
2016-12-04 21:57:29 -05:00
Bill Hollings aca1b55449 MSL sort interface struct members by offset instead of location.
MSL support OpFMod as fmod() function.
Remove SPIRType::is_packed member.
2016-12-04 12:32:58 -05:00
Bill Hollings c2e6013f4b CompilerMSL supports promoting unnamed global vars to function args.
CompilerMSL use correct MSL type name for 3D textures.
2016-11-27 15:00:06 -05:00
Bill Hollings c5c073699e CompilerMSL fix func_call_arg() cast error when not passed SPIRVariable type.
CompilerGLSL allow retrieval of partial source if an error occurs.
2016-11-27 12:34:04 -05:00
Hans-Kristian Arntzen 67aad48e50 Run format.sh. 2016-11-12 10:04:50 +01:00
Bill Hollings 23ff950390 When flattening global structs for MSL, don't qualify names of built-in members. 2016-11-10 21:07:50 -05:00
Bill Hollings f5f910483b Support MSL-specific functions.
Add CompilerMSL emit_instruction() and emit_glsl_op() functions
to handle MSL-specific operation and function definitions.
Remove CompilerMSL emit_msl_defines() function.
2016-10-27 18:47:17 -04:00
Bill Hollings 943191a1c8 Compliance fixes for pull request.
Use C++ style primitive casts.
Add BackendVariations.discard_literal to support language variation for discard syntax.
Tweaks to custom MSL defines.
2016-10-27 10:20:01 -04:00
Bill Hollings ac00c6032f Run clang-format. 2016-10-24 09:24:24 -04:00
Bill Hollings 0943d9fece MoltenVK shader converter handle missing names.
Use entry point name if no function name provided.
When flattening in/out structs, qualify member names with struct name.
Fix issue when determining declared size of struct types.
Refactor use of m_ name prefix.
Identify header defines in MSL code.
2016-10-23 21:42:54 -04:00
Nathaniel Brown 9577568d56 Corrects some problems converting to compilable MSL from SPIRV. A better solution is to refactor the glsl compiler base-class so some keywords and actions can be overridden, and then the msl subclass can override them - this is a quick & dirty solution.
- adds some common macros that correct for intrinsic differences
 - adds some inline functions to adapt for GLSL terms
 - injects structure member names when the original SPV has been stripped - there is another way to use the correct temporarily assigned member name, but using m_<id> based on the inside SPV code yields metal code that more correctly maps to the original SPV opcodes/slots.
2016-10-21 13:48:21 -07:00
Bill Hollings a759e2c872 Merge Brenwill fork with upstream. 2016-10-19 14:09:51 -07:00
Hans-Kristian Arntzen 5d4bb687bc Support arrays which have spec constant size.
The size of an array can be a specialization constant or a spec constant
op. This complicates things quite a lot.

Reflection becomes very painful in the presence of expressions instead
of literals so add a new array which expresses this.

It is unlikely that we will need to do accurate reflection of interface
types which have specialization constant size.

SSBOs and UBOs will for now throw exception if a dynamic size is used since it
is very difficult to know the real size.
2016-10-03 17:17:11 +02:00
rob 8bdc4060e8 MSL: Add color attribute qualifiers to fragment function outputs 2016-10-01 15:46:43 +09:00
Hans-Kristian Arntzen 6cc9624e88 Run format.sh. 2016-09-17 18:46:10 +02:00
Rob Fischer 691072894f Reset MSL sequential resource binding EACH pass 2016-09-17 18:30:58 +09:00
Rob Fischer e2a37b6301 Emit header_lines for MSL also 2016-09-17 12:21:37 +09:00
Rob Fischer 3e45786fbc Correct vector's size begin checked
This caused a null pointer being used when called with p_vtx_attrs = nullptr and p_res_bindings != nullptr
2016-09-16 09:14:22 +09:00
Bill Hollings b4ce4e4b2f MSL handle input structs originating from HLSL. 2016-08-31 22:51:51 -04:00
Bill Hollings cf476f36d1 Merge MSL with upstream. 2016-08-31 21:00:56 -04:00
Hans-Kristian Arntzen f61a5d1e5d Implement dead variable elimination. 2016-08-26 12:58:50 +02:00
Bill Hollings 0dfeabc6d2 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-08-01 15:38:57 -04:00
Hans-Kristian Arntzen 042475e88e Add support for multiple entry points.
- Only consider I/O variables if part of OpEntryPoint.
- Keep a safe fallback if #entry-points is 1 to avoid potentially
  breaking previously working shaders.
2016-07-28 13:18:55 +02:00
Bill Hollings c45e74f1c0 MSL support global input vars as automatic function args.
Add Decoration qualified_alias element.
Virualize Compiler to_name() function.
MSL use qualified_alias instead of alias when inside entry-point function.
2016-07-08 12:39:22 -04:00
Bill Hollings 65cc931da0 MSL support textures and samplers as global function args. 2016-07-06 21:47:42 -04:00
Bill Hollings b321b83c8f MSL support textures and samplers as function args.
Add automatic sampler func arg when passing SampledImage type.
Pass texture and sampler in thread address space.
2016-07-06 20:30:47 -04:00
Bill Hollings 14f4339b1c Merge upstream.
Add explicit test for uniform var storage class (changed from test of storage class of var type).
2016-07-06 17:10:42 -04:00
Bill Hollings fe8b8604bc For MSL, extract global var refs from within functions and convert them to function args. 2016-07-06 16:55:45 -04:00
Hans-Kristian Arntzen d5dc5f3f1c Fix issue with new glslang behavior for samplers as parameters.
Check case where storage class uniform is passed as function parameter.
2016-07-05 13:21:26 +02:00
Bill Hollings 8f2dec358c Add support for BuiltInFragCoord (changed from BuiltInSamplePosition). 2016-07-04 11:49:46 -04:00
Bill Hollings 449335fd34 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2016-06-13 19:49:43 -04:00
Hans-Kristian Arntzen 5f629276a7 Use Boolean instead of Bool.
Xlib.h header uses a very ugly define for Bool which conflicts with
SPIRV-Cross.

The hassle free solution is to use Boolean instead.
2016-06-05 20:13:45 +02:00
Bill Hollings 691844f9d7 Support builtin inputs glVertexIndex, glVertexID, glInstanceIndex and glInstanceID
even if they are not identified in the SPIR-V.
2016-05-31 20:27:13 -04:00
Hans-Kristian Arntzen 5ea59bd11b Non-functional: Update formatting. 2016-05-23 13:30:02 +02:00
Hans-Kristian Arntzen 6aa2007cba Deal better with OpName and OpMemberName which alias.
OpName is only for debug information, so we must be very careful that
we do not reuse the same name for different variables.

This was previously done for local variables, but this commit extends
this to global variables as well.
2016-05-23 13:19:41 +02:00
Hans-Kristian Arntzen 4b8ed53974 Add Clang format.
Reformats the entire codebase. Better to do it now than later.

Adds .clang-format and a convenience script format_all.sh which formats
everything automatically.
2016-05-05 09:40:58 +02:00
Hans-Kristian Arntzen 926916d745 Add -Wshadow.
Fixes lots of dubious variable shadowing.
2016-05-05 09:15:25 +02:00
Bill Hollings 2436f4cb5c CompilerMSL DimBuffer image type uses 2D MTLTexture. 2016-04-29 15:04:17 +02:00
Bill Hollings 762947e3dd CompilerMSL move Private global variables to entry-point function variables.
CompilerMSL add support for texture read() without sampler for OpImageFetch.
2016-04-27 19:54:33 +02:00
Bill Hollings 5aafb28cc7 Track sampler ID in Meta for OpSampledImage objects.
Add virtual CompilerGLSL emit_sampled_image_op function for OpSampledImage.
Under MSL, set sampler ID for local OpSampledImage objects and extract it when emitting sampler.
2016-04-23 21:47:41 -04:00
Bill Hollings 1dbd18daaf Add pixel type qualifier to MSL image type names.
Add MSL support for half-precision base formats (short, ushort, half).
2016-04-21 20:47:57 -04:00
Bill Hollings fa46c14a78 Clean up commented uniform code and replace with TODO statement. 2016-04-11 17:34:26 -04:00
Bill Hollings 257b10eef4 Fix MSL reference to instruction stream modified in subclass update. 2016-04-11 14:16:12 -04:00
Bill Hollings 78b6877368 MSL outputs vertex input struct even when vertex attribute configuration input is missing. 2016-04-11 13:28:43 -04:00
Bill Hollings b2e313ef3e Support 3 compilation loops for MSL. 2016-04-11 12:23:31 -04:00
Bill Hollings f9e5fb38b8 Fix compiler warnings. 2016-04-11 10:19:20 -04:00
Bill Hollings 6ddd80e3fe Fixes from code review of MSL functionality.
Rename MSLOptions to MSLConfiguration.
Convert tabs to spaces.
Replace Builtin with uint32_t as map key.
2016-04-08 15:12:40 -04:00
Bill Hollings 8f30f07eb5 Clarify CompileMSL config parameters and move to compile() function.
CompileMSL supports marking vertex attributes and resource bindings
as to whether they are used by the shader, and feeding back to caller.
2016-04-07 21:25:51 -04:00
Bill Hollings 103aabf5e8 Initial support for Metal Shading Language. 2016-04-06 17:42:27 -04:00