RetroArch
spirv_glsl.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2018 ARM Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef SPIRV_CROSS_GLSL_HPP
18 #define SPIRV_CROSS_GLSL_HPP
19 
20 #include "spirv_cross.hpp"
21 #include <limits>
22 #include <sstream>
23 #include <unordered_map>
24 #include <unordered_set>
25 #include <utility>
26 #include <stdint.h>
27 
28 namespace spirv_cross
29 {
31 {
32  PlsNone = 0,
33 
40 
43 
48 };
49 
50 struct PlsRemap
51 {
54 };
55 
56 class CompilerGLSL : public Compiler
57 {
58 public:
59  struct Options
60  {
61  // The shading language version. Corresponds to #version $VALUE.
63 
64  // Emit the OpenGL ES shading language instead of desktop OpenGL.
65  bool es = false;
66 
67  // Debug option to always emit temporary variables for all expressions.
68  bool force_temporary = false;
69 
70  // If true, Vulkan GLSL features are used instead of GL-compatible features.
71  // Mostly useful for debugging SPIR-V files.
72  bool vulkan_semantics = false;
73 
74  // If true, gl_PerVertex is explicitly redeclared in vertex, geometry and tessellation shaders.
75  // The members of gl_PerVertex is determined by which built-ins are declared by the shader.
76  // This option is ignored in ES versions, as redeclaration in ES is not required, and it depends on a different extension
77  // (EXT_shader_io_blocks) which makes things a bit more fuzzy.
79 
80  // Flattens multidimensional arrays, e.g. float foo[a][b][c] into single-dimensional arrays,
81  // e.g. float foo[a * b * c].
82  // This function does not change the actual SPIRType of any object.
83  // Only the generated code, including declarations of interface variables are changed to be single array dimension.
85 
86  // For older desktop GLSL targets than version 420, the
87  // GL_ARB_shading_language_420pack extensions is used to be able to support
88  // layout(binding) on UBOs and samplers.
89  // If disabled on older targets, binding decorations will be stripped.
91 
92  enum Precision
93  {
98  };
99 
100  struct
101  {
102  // GLSL: In vertex shaders, rewrite [0, w] depth (Vulkan/D3D style) to [-w, w] depth (GL style).
103  // MSL: In vertex shaders, rewrite [-w, w] depth (GL style) to [0, w] depth.
104  // HLSL: In vertex shaders, rewrite [-w, w] depth (GL style) to [0, w] depth.
105  bool fixup_clipspace = false;
106 
107  // Inverts gl_Position.y or equivalent.
108  bool flip_vert_y = false;
109 
110  // If true, the backend will assume that InstanceIndex will need to apply
111  // a base instance offset. Set to false if you know you will never use base instance
112  // functionality as it might remove some internal uniforms.
114  } vertex;
115 
116  struct
117  {
118  // Add precision mediump float in ES targets when emitting GLES source.
119  // Add precision highp int in ES targets when emitting GLES source.
122  } fragment;
123  };
124 
125  void remap_pixel_local_storage(std::vector<PlsRemap> inputs, std::vector<PlsRemap> outputs)
126  {
127  pls_inputs = std::move(inputs);
128  pls_outputs = std::move(outputs);
130  }
131 
132  CompilerGLSL(std::vector<uint32_t> spirv_)
133  : Compiler(move(spirv_))
134  {
135  init();
136  }
137 
138  CompilerGLSL(const uint32_t *ir, size_t word_count)
139  : Compiler(ir, word_count)
140  {
141  init();
142  }
143 
144  // Deprecate this interface because it doesn't overload properly with subclasses.
145  // Requires awkward static casting, which was a mistake.
146  SPIRV_CROSS_DEPRECATED("get_options() is obsolete, use get_common_options() instead.")
147  const Options &get_options() const
148  {
149  return options;
150  }
151 
153  {
154  return options;
155  }
156 
157  // Deprecate this interface because it doesn't overload properly with subclasses.
158  // Requires awkward static casting, which was a mistake.
159  SPIRV_CROSS_DEPRECATED("set_options() is obsolete, use set_common_options() instead.")
160  void set_options(Options &opts)
161  {
162  options = opts;
163  }
164 
165  void set_common_options(const Options &opts)
166  {
167  options = opts;
168  }
169 
170  std::string compile() override;
171 
172  // Returns the current string held in the conversion buffer. Useful for
173  // capturing what has been converted so far when compile() throws an error.
175 
176  // Adds a line to be added right after #version in GLSL backend.
177  // This is useful for enabling custom extensions which are outside the scope of SPIRV-Cross.
178  // This can be combined with variable remapping.
179  // A new-line will be added.
180  //
181  // While add_header_line() is a more generic way of adding arbitrary text to the header
182  // of a GLSL file, require_extension() should be used when adding extensions since it will
183  // avoid creating collisions with SPIRV-Cross generated extensions.
184  //
185  // Code added via add_header_line() is typically backend-specific.
186  void add_header_line(const std::string &str);
187 
188  // Adds an extension which is required to run this shader, e.g.
189  // require_extension("GL_KHR_my_extension");
190  void require_extension(const std::string &ext);
191 
192  // Legacy GLSL compatibility method.
193  // Takes a uniform or push constant variable and flattens it into a (i|u)vec4 array[N]; array instead.
194  // For this to work, all types in the block must be the same basic type, e.g. mixing vec2 and vec4 is fine, but
195  // mixing int and float is not.
196  // The name of the uniform array will be the same as the interface block name.
198 
199 protected:
200  void reset();
201  void emit_function(SPIRFunction &func, const Bitset &return_flags);
202 
203  bool has_extension(const std::string &ext) const;
204  void require_extension_internal(const std::string &ext);
205 
206  // Virtualize methods which need to be overridden by subclass targets like C++ and such.
207  virtual void emit_function_prototype(SPIRFunction &func, const Bitset &return_flags);
208 
210 
211  virtual void emit_instruction(const Instruction &instr);
213  virtual void emit_glsl_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args,
214  uint32_t count);
215  virtual void emit_spv_amd_shader_ballot_op(uint32_t result_type, uint32_t result_id, uint32_t op,
216  const uint32_t *args, uint32_t count);
218  const uint32_t *args, uint32_t count);
219  virtual void emit_spv_amd_shader_trinary_minmax_op(uint32_t result_type, uint32_t result_id, uint32_t op,
220  const uint32_t *args, uint32_t count);
221  virtual void emit_spv_amd_gcn_shader_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args,
222  uint32_t count);
223  virtual void emit_header();
224  virtual void emit_sampled_image_op(uint32_t result_type, uint32_t result_id, uint32_t image_id, uint32_t samp_id);
225  virtual void emit_texture_op(const Instruction &i);
226  virtual void emit_subgroup_op(const Instruction &i);
227  virtual std::string type_to_glsl(const SPIRType &type, uint32_t id = 0);
229  virtual void emit_struct_member(const SPIRType &type, uint32_t member_type_id, uint32_t index,
230  const std::string &qualifier = "", uint32_t base_offset = 0);
231  virtual std::string image_type_glsl(const SPIRType &type, uint32_t id = 0);
235  virtual void emit_fixup();
236  virtual std::string variable_decl(const SPIRType &type, const std::string &name, uint32_t id = 0);
238  virtual std::string to_function_name(uint32_t img, const SPIRType &imgtype, bool is_fetch, bool is_gather,
239  bool is_proj, bool has_array_offsets, bool has_offset, bool has_grad,
240  bool has_dref, uint32_t lod);
241  virtual std::string to_function_args(uint32_t img, const SPIRType &imgtype, bool is_fetch, bool is_gather,
242  bool is_proj, uint32_t coord, uint32_t coord_components, uint32_t dref,
243  uint32_t grad_x, uint32_t grad_y, uint32_t lod, uint32_t coffset,
245  bool *p_forward);
246  virtual void emit_buffer_block(const SPIRVariable &type);
247  virtual void emit_push_constant_block(const SPIRVariable &var);
248  virtual void emit_uniform(const SPIRVariable &var);
249  virtual std::string unpack_expression_type(std::string expr_str, const SPIRType &type);
250 
251  std::unique_ptr<std::ostringstream> buffer;
252 
253  template <typename T>
254  inline void statement_inner(T &&t)
255  {
256  (*buffer) << std::forward<T>(t);
257  statement_count++;
258  }
259 
260  template <typename T, typename... Ts>
261  inline void statement_inner(T &&t, Ts &&... ts)
262  {
263  (*buffer) << std::forward<T>(t);
264  statement_count++;
265  statement_inner(std::forward<Ts>(ts)...);
266  }
267 
268  template <typename... Ts>
269  inline void statement(Ts &&... ts)
270  {
271  if (force_recompile)
272  {
273  // Do not bother emitting code while force_recompile is active.
274  // We will compile again.
275  statement_count++;
276  return;
277  }
278 
279  if (redirect_statement)
280  redirect_statement->push_back(join(std::forward<Ts>(ts)...));
281  else
282  {
283  for (uint32_t i = 0; i < indent; i++)
284  (*buffer) << " ";
285  statement_inner(std::forward<Ts>(ts)...);
286  (*buffer) << '\n';
287  }
288  }
289 
290  template <typename... Ts>
291  inline void statement_no_indent(Ts &&... ts)
292  {
293  auto old_indent = indent;
294  indent = 0;
295  statement(std::forward<Ts>(ts)...);
296  indent = old_indent;
297  }
298 
299  // Used for implementing continue blocks where
300  // we want to obtain a list of statements we can merge
301  // on a single line separated by comma.
302  std::vector<std::string> *redirect_statement = nullptr;
304 
305  void begin_scope();
306  void end_scope();
307  void end_scope_decl();
308  void end_scope_decl(const std::string &decl);
309 
311 
317 
319  void add_resource_name(uint32_t id);
322 
323  virtual bool is_non_native_row_major_matrix(uint32_t id);
325  bool member_is_packed_type(const SPIRType &type, uint32_t index) const;
326  virtual std::string convert_row_major_matrix(std::string exp_str, const SPIRType &exp_type, bool is_packed);
327 
328  std::unordered_set<std::string> local_variable_names;
329  std::unordered_set<std::string> resource_names;
330  std::unordered_map<std::string, std::unordered_set<uint64_t>> function_overloads;
331 
333 
334  // Can be overriden by subclass backends for trivial things which
335  // shouldn't need polymorphism.
337  {
339  bool float_literal_suffix = false;
343  const char *basic_int_type = "int";
344  const char *basic_uint_type = "uint";
345  const char *half_literal_suffix = "hf";
346  bool swizzle_is_function = false;
347  bool shared_is_implied = false;
349  bool explicit_struct_type = false;
350  bool use_initializer_list = false;
356  bool boolean_mix_support = true;
358  bool can_swizzle_scalar = false;
359  bool force_gl_in_out_block = false;
360  bool can_return_array = true;
362  bool supports_extensions = false;
363  bool supports_empty_struct = false;
364  } backend;
365 
366  void emit_struct(SPIRType &type);
367  void emit_resources();
368  void emit_buffer_block_native(const SPIRVariable &var);
369  void emit_buffer_block_legacy(const SPIRVariable &var);
375  void emit_flattened_io_block(const SPIRVariable &var, const char *qual);
377  void emit_hoisted_temporaries(std::vector<std::pair<uint32_t, uint32_t>> &temporaries);
378  void emit_constant(const SPIRConstant &constant);
379  void emit_specialization_constant_op(const SPIRConstantOp &constant);
380  std::string emit_continue_block(uint32_t continue_block);
383 
384  void branch(uint32_t from, uint32_t to);
386  void branch(uint32_t from, uint32_t cond, uint32_t true_block, uint32_t false_block);
391 
392  bool should_forward(uint32_t id);
393  void emit_mix_op(uint32_t result_type, uint32_t id, uint32_t left, uint32_t right, uint32_t lerp);
395  void emit_quaternary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2,
396  uint32_t op3, const char *op);
397  void emit_trinary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2,
398  const char *op);
399  void emit_binary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op);
400  void emit_binary_func_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op,
401  SPIRType::BaseType input_type, bool skip_cast_if_equal_type);
402  void emit_unary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op);
403  void emit_unrolled_unary_op(uint32_t result_type, uint32_t result_id, uint32_t operand, const char *op);
404  void emit_binary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op);
405  void emit_unrolled_binary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op);
406  void emit_binary_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op,
407  SPIRType::BaseType input_type, bool skip_cast_if_equal_type);
408 
410  uint32_t op0, uint32_t op1, bool skip_cast_if_equal_type);
411 
412  std::string to_ternary_expression(const SPIRType &result_type, uint32_t select, uint32_t true_value,
413  uint32_t false_value);
414 
415  void emit_unary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op);
417  SPIRExpression &emit_op(uint32_t result_type, uint32_t result_id, const std::string &rhs, bool forward_rhs,
418  bool suppress_usage_tracking = false);
419  std::string access_chain_internal(uint32_t base, const uint32_t *indices, uint32_t count, bool index_is_literal,
420  bool chain_only = false, bool *need_transpose = nullptr,
421  bool *result_is_packed = nullptr);
422  std::string access_chain(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type,
423  bool *need_transpose = nullptr, bool *result_is_packed = nullptr);
424 
426  const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride,
427  bool need_transpose);
429  const SPIRType &target_type, uint32_t offset);
431  const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride,
432  bool need_transpose);
434  const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride,
435  bool need_transpose);
436  std::pair<std::string, uint32_t> flattened_access_chain_offset(const SPIRType &basetype, const uint32_t *indices,
438  uint32_t word_stride, bool *need_transpose = nullptr,
439  uint32_t *matrix_stride = nullptr);
440 
441  const char *index_to_swizzle(uint32_t index);
442  std::string remap_swizzle(const SPIRType &result_type, uint32_t input_components, const std::string &expr);
444  void append_global_func_args(const SPIRFunction &func, uint32_t index, std::vector<std::string> &arglist);
456  const char *to_precision_qualifiers_glsl(uint32_t id);
457  virtual const char *to_storage_qualifiers_glsl(const SPIRVariable &var);
458  const char *flags_to_precision_qualifiers_glsl(const SPIRType &type, const Bitset &flags);
464  virtual bool skip_argument(uint32_t id) const;
465  virtual void emit_array_copy(const std::string &lhs, uint32_t rhs_id);
466  virtual void emit_block_hints(const SPIRBlock &block);
468 
469  bool buffer_is_packing_standard(const SPIRType &type, BufferPackingStandard packing, uint32_t start_offset = 0,
470  uint32_t end_offset = UINT32_MAX);
475 
476  std::string bitcast_glsl(const SPIRType &result_type, uint32_t arg);
477  virtual std::string bitcast_glsl_op(const SPIRType &result_type, const SPIRType &argument_type);
478 
480  std::string bitcast_expression(const SPIRType &target_type, SPIRType::BaseType expr_type, const std::string &expr);
481 
485 
486  // Can modify flags to remote readonly/writeonly if image type
487  // and force recompile.
488  bool check_atomic_image(uint32_t id);
489 
490  virtual void replace_illegal_names();
491  virtual void emit_entry_point_declarations();
492 
496  std::string legacy_tex_op(const std::string &op, const SPIRType &imgtype, uint32_t lod, uint32_t id);
497 
499 
500  std::unordered_set<uint32_t> emitted_functions;
501 
502  std::unordered_set<uint32_t> flattened_buffer_blocks;
503  std::unordered_set<uint32_t> flattened_structs;
504 
508 
509  // Usage tracking. If a temporary is used more than once, use the temporary instead to
510  // avoid AST explosion when SPIRV is generated with pure SSA and doesn't write stuff to variables.
511  std::unordered_map<uint32_t, uint32_t> expression_usage_counts;
513 
514  std::vector<std::string> forced_extensions;
515  std::vector<std::string> header_lines;
516 
518 
519  inline bool is_legacy() const
520  {
521  return (options.es && options.version < 300) || (!options.es && options.version < 130);
522  }
523 
524  inline bool is_legacy_es() const
525  {
526  return options.es && options.version < 300;
527  }
528 
529  inline bool is_legacy_desktop() const
530  {
531  return !options.es && options.version < 130;
532  }
533 
534  bool args_will_forward(uint32_t id, const uint32_t *args, uint32_t num_args, bool pure);
538 
539  // GL_EXT_shader_pixel_local_storage support.
540  std::vector<PlsRemap> pls_inputs;
541  std::vector<PlsRemap> pls_outputs;
543  const char *to_pls_qualifiers_glsl(const SPIRVariable &variable);
544  void emit_pls();
545  void remap_pls_variables();
546 
547  void add_variable(std::unordered_set<std::string> &variables, uint32_t id);
548  void add_variable(std::unordered_set<std::string> &variables, std::string &name);
551  void find_static_extensions();
552 
555  bool optimize_read_modify_write(const SPIRType &type, const std::string &lhs, const std::string &rhs);
557 
558  bool type_is_empty(const SPIRType &type);
559 
560  virtual void declare_undefined_values();
561 
563 
564  bool can_use_io_location(spv::StorageClass storage, bool block);
567 
571 
573 
574  // Builtins in GLSL are always specific signedness, but the SPIR-V can declare them
575  // as either unsigned or signed.
576  // Sometimes we will need to automatically perform bitcasts on load and store to make this work.
577  virtual void bitcast_to_builtin_store(uint32_t target_id, std::string &expr, const SPIRType &expr_type);
578  virtual void bitcast_from_builtin_load(uint32_t source_id, std::string &expr, const SPIRType &expr_type);
579 
580 private:
581  void init()
582  {
583  if (source.known)
584  {
585  options.es = source.es;
586  options.version = source.version;
587  }
588  }
589 };
590 } // namespace spirv_cross
591 
592 #endif
GLenum GLenum variable
Definition: glext.h:9938
uint32_t type_to_packed_base_size(const SPIRType &type, BufferPackingStandard packing)
Definition: spirv_glsl.cpp:863
void begin_scope()
Definition: spirv_glsl.cpp:9863
virtual void emit_entry_point_declarations()
Definition: spirv_glsl.cpp:1681
bool should_forward(uint32_t id)
Definition: spirv_glsl.cpp:5752
uint32_t version
Definition: spirv_glsl.hpp:62
void register_call_out_argument(uint32_t id)
Definition: spirv_glsl.cpp:5814
std::string flattened_access_chain_vector(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride, bool need_transpose)
Definition: spirv_glsl.cpp:5527
Definition: spirv_glsl.hpp:47
GLuint const GLchar * name
Definition: glext.h:6671
bool long_long_literal_suffix
Definition: spirv_glsl.hpp:342
std::string remap_swizzle(const SPIRType &result_type, uint32_t input_components, const std::string &expr)
Definition: spirv_glsl.cpp:1806
void emit_binary_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op, SPIRType::BaseType input_type, bool skip_cast_if_equal_type)
Definition: spirv_glsl.cpp:3347
bool buffer_is_packing_standard(const SPIRType &type, BufferPackingStandard packing, uint32_t start_offset=0, uint32_t end_offset=UINT32_MAX)
Definition: spirv_glsl.cpp:1059
bool use_typed_initializer_list
Definition: spirv_glsl.hpp:351
SPIRBlock * current_emitting_block
Definition: spirv_glsl.hpp:209
Definition: spirv_glsl.hpp:41
Precision default_float_precision
Definition: spirv_glsl.hpp:120
bool can_declare_struct_inline
Definition: spirv_glsl.hpp:352
void branch_to_continue(uint32_t from, uint32_t to)
Definition: spirv_glsl.cpp:9051
BufferPackingStandard
Definition: spirv_cross.hpp:101
Definition: spirv_common.hpp:283
void emit_interface_block(const SPIRVariable &type)
Definition: spirv_glsl.cpp:1558
#define const
Definition: zconf.h:217
std::vector< std::string > header_lines
Definition: spirv_glsl.hpp:515
Definition: spirv_glsl.hpp:46
Definition: spirv_glsl.hpp:56
set set set set set set set macro pixldst1 op
Definition: pixman-arm-neon-asm.h:54
virtual void declare_undefined_values()
Definition: spirv_glsl.cpp:1996
std::string join(Ts &&... ts)
Definition: spirv_common.hpp:218
void reset()
Definition: spirv_glsl.cpp:270
void flush_undeclared_variables(SPIRBlock &block)
Definition: spirv_glsl.cpp:9500
virtual void emit_header()
Definition: spirv_glsl.cpp:457
void emit_quaternary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2, uint32_t op3, const char *op)
Definition: spirv_glsl.cpp:3432
virtual std::string constant_expression_vector(const SPIRConstant &c, uint32_t vector)
Definition: spirv_glsl.cpp:2913
bool es
Definition: spirv_glsl.hpp:65
std::string load_flattened_struct(SPIRVariable &var)
Definition: spirv_glsl.cpp:5400
const Options & get_common_options() const
Definition: spirv_glsl.hpp:152
std::unordered_map< uint32_t, uint32_t > expression_usage_counts
Definition: spirv_glsl.hpp:511
Definition: spirv_cross.hpp:117
#define T(x)
bool flush_phi_required(uint32_t from, uint32_t to)
Definition: spirv_glsl.cpp:9012
bool for_loop_initializers_are_same_type(const SPIRBlock &block)
Definition: spirv_glsl.cpp:9350
virtual void emit_struct_member(const SPIRType &type, uint32_t member_type_id, uint32_t index, const std::string &qualifier="", uint32_t base_offset=0)
Definition: spirv_glsl.cpp:8171
void emit_flattened_io_block(const SPIRVariable &var, const char *qual)
Definition: spirv_glsl.cpp:1518
StorageClass
Definition: spirv.hpp:137
void emit_struct(SPIRType &type)
Definition: spirv_glsl.cpp:652
std::vector< PlsRemap > pls_inputs
Definition: spirv_glsl.hpp:540
Unknown compiler Device disconnected from port File already exists Saving to backup buffer Got connection from
Definition: msg_hash_ar.h:34
virtual void emit_push_constant_block(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1344
void emit_declared_builtin_block(spv::StorageClass storage, spv::ExecutionModel model)
Definition: spirv_glsl.cpp:1885
Definition: spirv_common.hpp:369
virtual std::string to_function_name(uint32_t img, const SPIRType &imgtype, bool is_fetch, bool is_gather, bool is_proj, bool has_array_offsets, bool has_offset, bool has_grad, bool has_dref, uint32_t lod)
Definition: spirv_glsl.cpp:3959
virtual void emit_buffer_block(const SPIRVariable &type)
Definition: spirv_glsl.cpp:1389
void emit_function(SPIRFunction &func, const Bitset &return_flags)
Definition: spirv_glsl.cpp:8889
const char * format_to_glsl(spv::ImageFormat format)
Definition: spirv_glsl.cpp:772
uint32_t type_to_packed_array_stride(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
Definition: spirv_glsl.cpp:972
GLdouble GLdouble t
Definition: glext.h:6398
void emit_unrolled_binary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op)
Definition: spirv_glsl.cpp:3286
bool member_is_packed_type(const SPIRType &type, uint32_t index) const
Definition: spirv_glsl.cpp:8147
void emit_hoisted_temporaries(std::vector< std::pair< uint32_t, uint32_t >> &temporaries)
std::string emit_continue_block(uint32_t continue_block)
Definition: spirv_glsl.cpp:9236
const SPIRBlock * current_continue_block
Definition: spirv_glsl.hpp:303
Definition: spirv_glsl.hpp:44
std::string flattened_access_chain(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride, bool need_transpose)
Definition: spirv_glsl.cpp:5444
void emit_resources()
Definition: spirv_glsl.cpp:2013
std::string to_enclosed_unpacked_expression(uint32_t id)
Definition: spirv_glsl.cpp:2344
static int cond(LexState *ls)
Definition: lparser.c:1177
virtual void emit_array_copy(const std::string &lhs, uint32_t rhs_id)
Definition: spirv_glsl.cpp:9933
void emit_block_instructions(SPIRBlock &block)
Definition: spirv_glsl.cpp:6086
std::string flattened_access_chain_struct(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, uint32_t offset)
Definition: spirv_glsl.cpp:5458
bool support_nonzero_base_instance
Definition: spirv_glsl.hpp:113
virtual bool is_non_native_row_major_matrix(uint32_t id)
Definition: spirv_glsl.cpp:8103
Definition: spirv_common.hpp:497
void register_impure_function_call()
Definition: spirv_glsl.cpp:5805
GLsizei const GLchar *const * string
Definition: glext.h:6699
std::string emit_for_loop_initializers(const SPIRBlock &block)
Definition: spirv_glsl.cpp:9286
Definition: spirv_glsl.hpp:38
bool fixup_clipspace
Definition: spirv_glsl.hpp:105
typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void *pData)
SPIRV_CROSS_DEPRECATED("set_options() is obsolete, use set_common_options() instead.") void set_options(Options &opts)
Definition: spirv_glsl.hpp:159
SPIRExpression & emit_op(uint32_t result_type, uint32_t result_id, const std::string &rhs, bool forward_rhs, bool suppress_usage_tracking=false)
Definition: spirv_glsl.cpp:3228
bool uint32_t_literal_suffix
Definition: spirv_glsl.hpp:341
virtual std::string image_type_glsl(const SPIRType &type, uint32_t id=0)
Definition: spirv_glsl.cpp:8434
virtual std::string layout_for_member(const SPIRType &type, uint32_t index)
Definition: spirv_glsl.cpp:716
std::unordered_set< uint32_t > flattened_buffer_blocks
Definition: spirv_glsl.hpp:502
const char * to_pls_qualifiers_glsl(const SPIRVariable &variable)
Definition: spirv_glsl.cpp:8326
bool supports_empty_struct
Definition: spirv_glsl.hpp:363
std::string legacy_tex_op(const std::string &op, const SPIRType &imgtype, uint32_t lod, uint32_t id)
Definition: spirv_glsl.cpp:3466
uint32_t id
Definition: spirv_glsl.hpp:52
std::string convert_separate_image_to_combined(uint32_t id)
Definition: spirv_glsl.cpp:4004
std::vector< PlsRemap > pls_outputs
Definition: spirv_glsl.hpp:541
virtual const char * to_storage_qualifiers_glsl(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1496
virtual void emit_sampled_image_op(uint32_t result_type, uint32_t result_id, uint32_t image_id, uint32_t samp_id)
Definition: spirv_glsl.cpp:3765
GLdouble GLdouble right
Definition: glext.h:11766
std::string to_extract_component_expression(uint32_t id, uint32_t index)
Definition: spirv_glsl.cpp:2355
void emit_pls()
Definition: spirv_glsl.cpp:1827
const GLubyte * c
Definition: glext.h:9812
std::unique_ptr< std::ostringstream > buffer
Definition: spirv_glsl.hpp:251
std::string bitcast_glsl(const SPIRType &result_type, uint32_t arg)
Definition: spirv_glsl.cpp:4923
Definition: spirv_glsl.hpp:36
std::string layout_for_variable(const SPIRVariable &variable)
Definition: spirv_glsl.cpp:1178
std::string build_composite_combiner(uint32_t result_type, const uint32_t *elems, uint32_t length)
Definition: spirv_glsl.cpp:5949
GLuint GLuint GLsizei count
Definition: glext.h:6292
CompilerGLSL(std::vector< uint32_t > spirv_)
Definition: spirv_glsl.hpp:132
bool attempt_emit_loop_header(SPIRBlock &block, SPIRBlock::Method method)
Definition: spirv_glsl.cpp:9380
struct spirv_cross::CompilerGLSL::Options::@156 fragment
std::string constant_op_expression(const SPIRConstantOp &cop)
Definition: spirv_glsl.cpp:2487
GLint lod
Definition: glext.h:8462
bool flip_vert_y
Definition: spirv_glsl.hpp:108
bool type_is_empty(const SPIRType &type)
Definition: spirv_glsl.cpp:647
bool swizzle_is_function
Definition: spirv_glsl.hpp:346
std::string to_enclosed_expression(uint32_t id)
Definition: spirv_glsl.cpp:2328
bool can_return_array
Definition: spirv_glsl.hpp:360
virtual void emit_texture_op(const Instruction &i)
Definition: spirv_glsl.cpp:3782
bool is_legacy_es() const
Definition: spirv_glsl.hpp:524
GLint GLvoid * img
Definition: glext.h:6388
void emit_constant(const SPIRConstant &constant)
Definition: spirv_glsl.cpp:1654
std::unordered_set< std::string > resource_names
Definition: spirv_glsl.hpp:329
Precision default_int_precision
Definition: spirv_glsl.hpp:121
static uint32_t mask_relevant_memory_semantics(uint32_t semantics)
Definition: spirv_glsl.cpp:9926
std::vector< std::string > forced_extensions
Definition: spirv_glsl.hpp:514
void init()
Definition: spirv_glsl.hpp:581
void flush_variable_declaration(uint32_t id)
Definition: spirv_glsl.cpp:5836
void emit_mix_op(uint32_t result_type, uint32_t id, uint32_t left, uint32_t right, uint32_t lerp)
Definition: spirv_glsl.cpp:3657
bool is_legacy_desktop() const
Definition: spirv_glsl.hpp:529
const char * basic_uint_type
Definition: spirv_glsl.hpp:344
bool remove_duplicate_swizzle(std::string &op)
Definition: spirv_glsl.cpp:5846
std::string discard_literal
Definition: spirv_glsl.hpp:338
virtual void emit_uniform(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1632
bool allow_precision_qualifiers
Definition: spirv_glsl.hpp:357
virtual std::string unpack_expression_type(std::string expr_str, const SPIRType &type)
Definition: spirv_glsl.cpp:2253
PlsFormat format
Definition: spirv_glsl.hpp:53
void statement_no_indent(Ts &&... ts)
Definition: spirv_glsl.hpp:291
std::string flattened_access_chain_matrix(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, uint32_t offset, uint32_t matrix_stride, bool need_transpose)
Definition: spirv_glsl.cpp:5499
GLenum type
Definition: glext.h:6233
bool remove_unity_swizzle(uint32_t base, std::string &op)
Definition: spirv_glsl.cpp:5910
void emit_unary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op)
Definition: spirv_glsl.cpp:3248
Options options
Definition: spirv_glsl.hpp:310
void replace_fragment_outputs()
Definition: spirv_glsl.cpp:1790
virtual bool skip_argument(uint32_t id) const
Definition: spirv_glsl.cpp:6030
virtual std::string to_initializer_expression(const SPIRVariable &var)
Definition: spirv_glsl.cpp:8299
Definition: spirv_glsl.hpp:42
virtual std::string bitcast_glsl_op(const SPIRType &result_type, const SPIRType &argument_type)
Definition: spirv_glsl.cpp:4887
Definition: barrier.hpp:23
void emit_trinary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, uint32_t op2, const char *op)
Definition: spirv_glsl.cpp:3418
void emit_block_chain(SPIRBlock &block)
Definition: spirv_glsl.cpp:9536
std::string get_partial_source()
Definition: spirv_glsl.cpp:452
void set_common_options(const Options &opts)
Definition: spirv_glsl.hpp:165
GLuint coord
Definition: glext.h:10418
std::string to_expression(uint32_t id)
Definition: spirv_glsl.cpp:2364
PlsFormat
Definition: spirv_glsl.hpp:30
Definition: spirv_glsl.hpp:35
void statement_inner(T &&t, Ts &&... ts)
Definition: spirv_glsl.hpp:261
bool enable_420pack_extension
Definition: spirv_glsl.hpp:90
const char * half_literal_suffix
Definition: spirv_glsl.hpp:345
GLenum func
Definition: glext.h:6668
Definition: spirv_glsl.hpp:39
virtual std::string builtin_to_glsl(spv::BuiltIn builtin, spv::StorageClass storage)
Definition: spirv_glsl.cpp:4957
std::string to_unpacked_expression(uint32_t id)
Definition: spirv_glsl.cpp:2333
std::unordered_set< uint32_t > flattened_structs
Definition: spirv_glsl.hpp:503
virtual bool member_is_non_native_row_major_matrix(const SPIRType &type, uint32_t index)
Definition: spirv_glsl.cpp:8125
Definition: spirv_glsl.hpp:34
bool optimize_read_modify_write(const SPIRType &type, const std::string &lhs, const std::string &rhs)
Definition: spirv_glsl.cpp:6041
std::string pls_decl(const PlsRemap &variable)
Definition: spirv_glsl.cpp:8335
static std::string sanitize_underscores(const std::string &str)
Definition: spirv_glsl.cpp:126
Definition: spirv_glsl.hpp:32
void emit_binary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op)
Definition: spirv_glsl.cpp:3381
virtual void emit_spv_amd_shader_ballot_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
Definition: spirv_glsl.cpp:4516
SPIRType binary_op_bitcast_helper(std::string &cast_op0, std::string &cast_op1, SPIRType::BaseType &input_type, uint32_t op0, uint32_t op1, bool skip_cast_if_equal_type)
Definition: spirv_glsl.cpp:3312
virtual void bitcast_to_builtin_store(uint32_t target_id, std::string &expr, const SPIRType &expr_type)
Definition: spirv_glsl.cpp:9970
SPIRV_CROSS_DEPRECATED("get_options() is obsolete, use get_common_options() instead.") const Options &get_options() const
Definition: spirv_glsl.hpp:146
virtual void emit_spv_amd_shader_explicit_vertex_parameter_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
Definition: spirv_glsl.cpp:4559
GLfloat bias
Definition: glext.h:8812
bool can_use_io_location(spv::StorageClass storage, bool block)
Definition: spirv_glsl.cpp:1142
void fixup_image_load_store_access()
Definition: spirv_glsl.cpp:1860
void add_resource_name(uint32_t id)
Definition: spirv_glsl.cpp:8692
const char * to_precision_qualifiers_glsl(uint32_t id)
Definition: spirv_glsl.cpp:8245
Definition: spirv_glsl.hpp:95
uint32_t type_to_packed_alignment(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
Definition: spirv_glsl.cpp:883
virtual void bitcast_from_builtin_load(uint32_t source_id, std::string &expr, const SPIRType &expr_type)
Definition: spirv_glsl.cpp:9938
bool boolean_mix_support
Definition: spirv_glsl.hpp:356
GLenum GLenum GLvoid * row
Definition: glext.h:6316
bool shared_is_implied
Definition: spirv_glsl.hpp:347
bool to_trivial_mix_op(const SPIRType &type, std::string &op, uint32_t left, uint32_t right, uint32_t lerp)
Definition: spirv_glsl.cpp:3572
dictionary args
Definition: test_shaders.py:20
bool can_declare_arrays_inline
Definition: spirv_glsl.hpp:353
virtual std::string to_interpolation_qualifiers(const Bitset &flags)
Definition: spirv_glsl.cpp:693
virtual void emit_block_hints(const SPIRBlock &block)
Definition: spirv_glsl.cpp:10001
std::unordered_set< std::string > local_variable_names
Definition: spirv_glsl.hpp:328
bool force_gl_in_out_block
Definition: spirv_glsl.hpp:359
void propagate_loop_dominators(const SPIRBlock &block)
Definition: spirv_glsl.cpp:9197
#define UINT32_MAX
Definition: stdint.h:188
bool use_constructor_splatting
Definition: spirv_glsl.hpp:355
virtual std::string to_function_args(uint32_t img, const SPIRType &imgtype, bool is_fetch, bool is_gather, bool is_proj, uint32_t coord, uint32_t coord_components, uint32_t dref, uint32_t grad_x, uint32_t grad_y, uint32_t lod, uint32_t coffset, uint32_t offset, uint32_t bias, uint32_t comp, uint32_t sample, bool *p_forward)
Definition: spirv_glsl.cpp:4035
bool explicit_struct_type
Definition: spirv_glsl.hpp:349
GLuint GLuint GLsizei GLenum const GLvoid * indices
Definition: glext.h:6292
bool can_swizzle_scalar
Definition: spirv_glsl.hpp:358
std::string type_to_array_glsl(const SPIRType &type)
Definition: spirv_glsl.cpp:8393
void require_extension(const std::string &ext)
Definition: spirv_glsl.cpp:8708
void track_expression_read(uint32_t id)
Definition: spirv_glsl.cpp:5761
ExecutionModel
Definition: spirv.hpp:68
Definition: spirv_glsl.hpp:96
void emit_buffer_block_legacy(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1399
std::unordered_set< uint32_t > emitted_functions
Definition: spirv_glsl.hpp:500
static int block
Definition: psp2.c:31
void add_local_variable_name(uint32_t id)
Definition: spirv_glsl.cpp:8687
virtual void emit_fixup()
Definition: spirv_glsl.cpp:8996
void emit_binary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op)
Definition: spirv_glsl.cpp:3255
std::unordered_map< std::string, std::unordered_set< uint64_t > > function_overloads
Definition: spirv_glsl.hpp:330
std::string declare_temporary(uint32_t type, uint32_t id)
Definition: spirv_glsl.cpp:3188
GLuint index
Definition: glext.h:6671
Nieznany kompilator Urządzenie zostało odłączone od portu Plik już istnieje Zapisywanie do bufora kopii zapasowej Mam połączenie Adres publiczny Ustawianie dysku w zasobniku Opuściłeś grę Dołączyłeś z urządzeniami wejściowymi *s *s dołączył jako gracz u Próba połączenia online nie powiodła ponieważ peer nie działa w trybie RetroArch lub używa starej wersji RetroArch użyjcie tej samej wersji użyj tej samej wersji Ten rdzeń nie obsługuje gry online między architekturami Niepoprawne hasło Klient gry online został odłączony Nie masz uprawnień do grania Żądane urządzenia wejściowe nie są dostępne Gracz s wstrzymał grę Nadaj rdzeniom sprzętowym własny prywatny kontekst Unikaj konieczności przejmowania zmian stanu sprzętu pomiędzy klatkami Dostosuj ustawienia wyglądu ekranu menu Poprawia wydajność kosztem opóźnień i częstszego rwania obrazu Używaj tylko gdy nie możesz uzyskać pełnej prędkości w przeciwnym razie Automatyczne wykrywanie Możliwości Łączenie z portem które nie wymagają nie mogą uczestniczyć w grze sieciowej Konta Cheevos Konta Retro osiągniecia Lista Skanuj zawartość Importuj zawartość Zapytać Zablokuj klatki Sterownik audio Włącz dźwięk Turbo Martwa strefa Maksymalne przesunięcie czasowe dźwięku Szybkość wyjścia Dynamiczna kontrola szybkości audio Dźwiek Poziom głośności Tryb WASAPI Współdzielony bufor WASAPI Automatyczne zastępowanie plików Automatycznie załaduj Shadery Potwierdź Wyjdź Przewiń do góry Przełącz klawiaturę Podstawowe ustawienia menu Informacje Przewiń do góry Przełącz klawiaturę Nie zastępuj SaveRAM przy ładowaniu stanu zapisu Adres URL zasobów Buildbot Zezwalaj na kamerę Oszukać Oszukane pliki Załaduj oszukany plik Oszukane przepustki Osiągnięcia trybu hardcore Odznaki osiągnięć Zablokowany Sprawdź nieoficjalne osiągnięcia Odblokowany Osiągnięcia trybu pełnego Zamknij zawartość Załaduj konfigurację Zapisz konfigurację przy wyjściu Baza danych Rozmiar listy historii Szybkie menu Pobrane pliki Liczniki rdzeniowe Informacje podstawowe Kategoria Nazwa rdzenia Licencja Obsługiwane rozszerzenia Nazwa systemu Załaduj rdzeń Rdzeń Automatycznie wyodrębnij pobrane archiwum Aktualizacja Rdzenia Architektura Rdzeń procesora Menedżer kursorów Menedżer bazy danych Usuń< Treść dir >< Żaden > Szczegóły Dołącz obraz dysku Kontrola dysku Pliki do pobrania Program do pobierania treści Nadpisz DPI Atrapa rdzenia przy zatrzymaniu rdzenia Dynamiczne tło Włącz osiągnięcia Normalny kolor menu Mnożnik prędkości Wyświetl ilość klatek na sekundę Manipulacja klatek Automatycznie ładuj zależne od zawartości opcje rdzenia Plik opcji gry Rozwiązywanie problemów audio wideo Podstawowa kontrola menu Ładowanie zawartości Co to jest rdzeń Historia Obraz Informacja Menu sterowania wszystkich użytkowników Lewy analog Lewy analog Lewy analog Y Lewy analog Prawo analog X Prawy analog Prawo analog Y Prawy analog Spust Pomocniczy A Pomocniczy C Wybierz D pad dół D pad prawo Martwa strefa gałki analogowej Powiąż wszystko Limit czasu powiązania Ukryj niezwiązane podstawowe deskryptory wejściowe Indeks urządzeń Indeks myszy Cykl zapisu Włączanie mapowania gamepada klawiatury Przycisk W dół D pad Przycisk L3 Lewy D pad R3 przycisk Prawy D pad Przycisk Start Przycisk Przycisk Mysz Mysz Mysz Kółko do dołu Kółko w prawo Maksymalna liczba użytkowników Indeks kodów Włącz kody Następny dysk Włącz klawisze skrótów Szybkie przewijanie do przodu Przełączanie pełnoekranowe Przełącznik ostrości gry Przełączanie menu Przełącznik wyciszania dźwięku Przełączanie klawiatury ekranowej Wstrzymaj przełącznik Zresetuj grę Zapisz stan Następny moduł cieniujący Zwolnione tempo Slot zapisu Głośność Wyświetl nakładkę Pokaż nakładki na nakładce Zachowanie typu ankiety Późno Preferuj dotyk Włącz sporządzanie mapy powiązań na nowo Sterowanie Włącz dotyk Okres turbo Opóźnienie Wprowadź autoconfig Usługi holenderski esperanto niemiecki japoński polski rosyjski wietnamski Lewy analog Informacje o rdzeniu Liniowy Załaduj ostatnie Wczytaj zapis Sterownik lokalizacji Zalogowanie rozmowy Ustawienia bazy danych Niebieski Ciemny niebieski NVIDIA Shield Żółty Nieprzezroczystość nagłówka Menu obrotowe przepustnicy częstotliwości wyświetlania klatek Menu filtra liniowego Wygląd Nieprzezroczystość tła Multimedia Filtruj nieznane rozszerzenia Najbliższy Zezwalaj na klientów w trybie slave Wejściowe klatki opóźnień Opóźnij klatki gry online Włącz grę online Uruchom hosta gry online Adres serwera Włącz klienta gry online Hasło serwera Zażądaj urządzenia u Ustawienia gry online Max Udostępnianie wejścia cyfrowego Zahacz Żaden Tryb widza gry online Hasło spontaniczne serwera Port TCP gry online Polecenia sieciowe Informacje o sieci Port zdalnej sieci Nie N A Bez rdzenia Brak dostępnych podstawowych informacji Brak wpisów do wyświetlenia Brak informacji Nie znaleziono hostów gry online Brak liczników wydajności Brak dostępnych pozycji na liście odtwarzania Brak parametrów modułu cieniującego Włącz Aktualizacja online Nakładka na ekranie Przeglądaj archiwum Nakładka Nakładka Ustawienia nakładki Nakładka na ekranie Nadrzędny katalog Nie pracuj w tle Listy odtwarzania Listy odtwarzania Port Prywatność Obsługa analog Ocena CERO CRC32 Deweloper Ocena magazynu Edge Ocena ELSPA Ocena ESRB Seria MD5 Pochodzenie Wydawca Rok wydania Kod seryjny Rozpocznij zawartość Restart Wyjście nagrywania Załaduj konfigurację nagrywania Sterownik MIDI Zapisz wyjścia jako Plik zmian Zapisz plik zmiany rdzenia Usuń plik zmiany rdzenia Wymagany Uruchom RetroArch ponownie Wznów zawartość Retro pad Osiągnięcia Przewijanie granularności Przeglądarka plików Wyświetl ekran startowy Dodaj do ulubionych Zresetuj domyślny rdzeń Uruchom muzykę Zapisz plik Automatyczne załadowanie stanu Zapisz stan Zapisz bieżącą konfigurację Zapisz nadpisania katalogu zawartości Zapisz nową konfigurację Zapisywanie Zeskanuj plik Zrzut ekranu Szukaj Ustawienia Shader Shadery Prosty śnieg Pokaż ustawienia zaawansowane Zamknąć Przejdź do przodu w celu skrócenia czasu oczekiwania Sortuj zapisy w folderach Ukryj ostrzeżenia RunAhead Napisz zapis stanów do treści dir Pliki systemowe znajdują się w katalogu treści Włącz SSH Uruchom zdalny Retro pad Slot zapisu Polecenia STDIN Wstrzymaj wygaszacz ekranu System BIOS Obsługa Data Builda Wsparcie Cocoa Obsługa CoreText Wyświetl DPI metryczne Wyświetl szerokość Wsparcie DirectSound Obsługa dynamicznej biblioteki Wsparcie EGL Wsparcie FFmpeg Wsparcie STB TrueType Nazwa frontendu Wersja Git Wsparcie HLSL Obsługa KMS EGL Obsługa LibretroDB Libxml2 obsługa parowania XML Obsługa interfejsu dowodzenia sieciowego Obsługa OpenAL Obsługa OpenGL Obsługa OpenVG Obsługa nakładek Naładowany Rozładowywanie Obsługa PulseAudio Obsługa Poziom Oceny Retro Obsługa RoarAudio Wsparcie RSound Wsparcie SDL2 Wsparcie SDL1 Przewlekanie wsparcia Obsługa Video4Linux2 Wsparcie Vulkan Wsparcie X11 Wsparcie XVideo Zrób zrzut ekranu Miniatury Miniatury dyspozycji pionowej Zaktualizuj miniatury Zrzuty ekranu Pokaż datę czas Prawdziwe Uruchom Companion UI przy włączeniu Uruchom menu okienkowe przy włączeniu Nie można odczytać skompresowanego pliku Cofnij zapisanie stanu Aktualizacja Zaktualizuj profile joypad Zaktualizuj kody Zaktualizuj bazy danych Zaktualizuj Lakka Zaktualizuj Shadery Slang Kbd Język Użyj wbudowanej przeglądarki zdjęć< Użyj tego katalogu > Konfiguruj współczynnik kształtu Proporcja obrazu Przytnij Wyłącz kompozycję pulpitu Sterownik wideo Filtr wideo Włącz powiadomienia na ekranie Rozmiar powiadomienia Wymuś wyłączenie sRGB FBO Użyj trybu pełnoekranowego Użyj zapisu GPU Trudna synchronizacja z GPU Maksymalne obrazy swapchain Pozycja Y powiadomienia Użyj funkcji Nagrywania po filtrowaniu Szacowana liczba klatek na sekundę na ekranie Obrót Skala całkowita Moduł cieniujący wideo Podgląd parametrów modułu cieniującego Zapisz ustawienie Shadera jako Zapisz ustawienie zawartości katalogu zawartości Włącz udostępniony kontekst sprzętu Włącz filtr miękki Wideo Migotanie Niestandardowy współczynnik proporcji Szerokość Niestandardowy współczynnik kształtu Y Poz Synchronizacja Tryb pełnoekranowy z pełnym ekranem Wysokość okna Pełnoekranowa wysokość Wi Fi Kolor czcionki czerwony Kolor czcionki niebieski Niestandardowy Monochromia Systematyczny Pixel RetroSystem Kolor menu Ciemny Poranny błękit Elektryczny błękit Czerwone dziedzictwo Zwykły Czerwień wulkaniczna Współczynnik skali menu Pokaż kartę Historii Pokaż kartę Listy odtwarzania Pokaż kartę Obraz Pokaż kartę Ustawienia Pokaż kartę Gry Online Motyw ikon menu Ustawienia Shader Włącz lub wyłącz nieoficjalne osiągnięcia i lub funkcje beta do celów testowych Włącz lub wyłącz tabele wyników w grze Nie jeśli tryb Hardcore jest wyłączony Włącz lub wyłącz powiadomienia OSD dla osiągnięć Zmień sterowniki używane przez system Zmień ustawienia rdzenia Zmień nakładkę ekranu i nakładkę klawiatury oraz ustawienia powiadomień na ekranie Zmień ustawienia zapisu Zmień ustawienia interfejsu użytkownika Zmień ustawienia prywatności Zmień domyślne w których znajdują się pliki Skonfiguruj ustawienia serwera i sieci Zmień ustawienia wyjścia audio Zapisuje zmiany w pliku konfiguracyjnym przy wyjściu Zarządzaj i twórz pliki konfiguracyjne Wyświetla bieżącą liczbę klatek na sekundę na ekranie Kombinacja przycisków gamepada do przełączania menu Skonfiguruj elementy sterujące dla tego użytkownika Dołącz lub obsługuj sesję gry online Wyświetl informacje o systemie Włącz lub wyłącz udostępnianie sieciowe folderów Pokaż ukryte pliki katalogi w przeglądarce plików Włącz lub wyłącz zdalny dostęp do wiersza poleceń Ustawia rozmiar okna względem głównego rozmiaru wyświetlania Alternatywnie możesz ustawić szerokość i wysokość okna poniżej dla ustalonego rozmiaru okna Wstawia czarną klatke między klatkami Przydatny dla użytkowników z którzy chcą odtwarzać zawartość aby wyeliminować efekt duchów Określa liczbę jaką procesor może uruchomić przed gdy używana jest Trudna synchronizacja z GPU który ekran wyświetlacza ma być używany Częstotliwość odświeżania zgłoszona przez sterownik ekranu Skanuje sieci bezprzewodowe i nawiązuje połączenie Dodano do ulubionych Dołączony dysk Stosowanie zmian w kodzie Wyciszenie Dźwięku Błąd podczas zapisywania pliku autoconfig Nie można zainicjować autozapisu Blokowanie nadpisywania SRAM bajty Tryb Hardcore stan zapisu i przewijanie do tyłu były wyłączone Skompilowany z API Połączony z Pominięto ładowanie treści Implementacja załaduje ją samodzielnie Plik opcji rdzenia został pomyślnie utworzony Nie można znaleźć zgodnego systemu Nie można otworzyć ścieżki danych Nie można odczytać nagłówka filmu Niezgodność sumy kontrolnej CRC32 między plikiem treści a zapisaną sumą kontrolną w nagłówku pliku odtwarzania Powtórka najprawdopodobniej zsynchronizuje się podczas odtwarzania Dekompresja już trwa Wykryty obszar widoku Odłącz urządzenie od poprawnego portu Wyrzucony Index Błąd Rdzeń Libretro wymaga specjalnych ale żadne nie zostały dostarczone Błąd podczas zapisywania pliku opcji podstawowych Błąd podczas usuwania pliku remap Aplikacja zewnętrzna Dir Wyodrębnianie pliku Nie udało się Nie można przydzielić pamięci na poprawioną zawartość Nie powiodło się wiązanie gniazda Nie można wyodrębnić treści ze skompresowanego pliku Nie udało się załadować Nie udało się załadować pliku filmowego Nie udało się załadować stanu z Nie udało się załatać Nie udało się odebrać pseudonimu Nie można odebrać rozmiaru pseudonimu z hosta Nie udało się usunąć dysku z zasobnika Nie udało się zapisać SRAM Nie udało się wysłać pseudonimu Nie udało się wysłać pseudonimu do klienta Nie udało się wysłać danych SRAM do klienta Nie można uruchomić nagrywania filmu Nie udało się zrobić zrzutu ekranu Nie udało się cofnąć stanu zapisania Błąd krytyczny odebrany w Znajdź stan automatycznego zapisywania w Znaleziono pierwszą ścieżkę danych w pliku Znaleziony moduł cieniujący Opcje Otrzymałem nieprawidłowy indeks dysku Skup się na grze Rdzeń Libretro jest renderowany sprzętowo Musi także korzystać z nagrywania po cieniowaniu Wejdź w kod Wprowadź wstępnie ustawioną nazwę pliku Interfejs Magazyn wymienny w bajtach w megabajtach Frontend dla libretro Załadowany stan z gniazda Brak jednego lub więcej plików oprogramowania układowego Ładowanie pliku historii Pamięć Wygląda na to
Definition: msg_hash_pl.h:2324
void emit_push_constant_block_vulkan(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1354
struct spirv_cross::CompilerGLSL::BackendVariations backend
argument_type
Definition: query.c:50
const char * basic_int_type
Definition: spirv_glsl.hpp:343
void emit_unary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op)
Definition: spirv_glsl.cpp:3374
GLsizei GLsizei GLchar * source
Definition: glext.h:6688
void end_scope()
Definition: spirv_glsl.cpp:9869
void register_control_dependent_expression(uint32_t expr)
Definition: spirv_glsl.cpp:6077
virtual void replace_illegal_names()
Definition: spirv_glsl.cpp:1685
std::string variable_decl_function_local(SPIRVariable &variable)
Definition: spirv_glsl.cpp:5823
std::string access_chain(uint32_t base, const uint32_t *indices, uint32_t count, const SPIRType &target_type, bool *need_transpose=nullptr, bool *result_is_packed=nullptr)
Definition: spirv_glsl.cpp:5369
bool vulkan_semantics
Definition: spirv_glsl.hpp:72
const char * index_to_swizzle(uint32_t index)
Definition: spirv_glsl.cpp:5125
std::string type_to_glsl_constructor(const SPIRType &type)
Definition: spirv_glsl.cpp:8516
virtual std::string to_qualifiers_glsl(uint32_t id)
Definition: spirv_glsl.cpp:8250
Definition: ibxm.h:14
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
bool flexible_member_array_supported
Definition: spirv_glsl.hpp:348
bool flatten_multidimensional_arrays
Definition: spirv_glsl.hpp:84
const Instruction * get_next_instruction_in_block(const Instruction &instr)
Definition: spirv_glsl.cpp:9916
bool float_literal_suffix
Definition: spirv_glsl.hpp:339
u32 col
Definition: gx_regdef.h:5093
bool allow_truncated_access_chain
Definition: spirv_glsl.hpp:361
Definition: spirv_common.hpp:803
CompilerGLSL(const uint32_t *ir, size_t word_count)
Definition: spirv_glsl.hpp:138
bool check_explicit_lod_allowed(uint32_t lod)
Definition: spirv_glsl.cpp:3451
uint32_t type_to_packed_size(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
Definition: spirv_glsl.cpp:995
bool is_legacy() const
Definition: spirv_glsl.hpp:519
uint32_t indent
Definition: spirv_glsl.hpp:498
Definition: spirv_glsl.hpp:97
void add_function_overload(const SPIRFunction &func)
Definition: spirv_glsl.cpp:8767
std::string bitcast_expression(SPIRType::BaseType target_type, uint32_t arg)
Definition: spirv_glsl.cpp:4932
void replace_fragment_output(SPIRVariable &var)
Definition: spirv_glsl.cpp:1752
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: glext.h:6293
bool supports_extensions
Definition: spirv_glsl.hpp:362
bool has_extension(const std::string &ext) const
Definition: spirv_glsl.cpp:8702
Definition: spirv_common.hpp:699
void add_header_line(const std::string &str)
Definition: spirv_glsl.cpp:8697
void emit_push_constant_block_glsl(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1359
bool processing_entry_point
Definition: spirv_glsl.hpp:332
void emit_buffer_block_native(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1419
std::string to_combined_image_sampler(uint32_t image_id, uint32_t samp_id)
Definition: spirv_glsl.cpp:3697
std::string to_ternary_expression(const SPIRType &result_type, uint32_t select, uint32_t true_value, uint32_t false_value)
Definition: spirv_glsl.cpp:3626
bool native_row_major_matrix
Definition: spirv_glsl.hpp:354
std::string argument_decl(const SPIRFunction::Parameter &arg)
Definition: spirv_glsl.cpp:8282
void statement(Ts &&... ts)
Definition: spirv_glsl.hpp:269
virtual std::string variable_decl(const SPIRType &type, const std::string &name, uint32_t id=0)
Definition: spirv_glsl.cpp:8162
virtual void emit_glsl_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
Definition: spirv_glsl.cpp:4224
void handle_invalid_expression(uint32_t id)
Definition: spirv_glsl.cpp:2241
void emit_specialization_constant_op(const SPIRConstantOp &constant)
Definition: spirv_glsl.cpp:1647
void require_extension_internal(const std::string &ext)
Definition: spirv_glsl.cpp:8714
void emit_unrolled_unary_op(uint32_t result_type, uint32_t result_id, uint32_t operand, const char *op)
Definition: spirv_glsl.cpp:3265
Definition: spirv_common.hpp:97
void remap_pls_variables()
Definition: spirv_glsl.cpp:312
virtual void emit_spv_amd_shader_trinary_minmax_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
Definition: spirv_glsl.cpp:4583
std::string to_array_size(const SPIRType &type, uint32_t index)
Definition: spirv_glsl.cpp:8365
bool expression_is_forwarded(uint32_t id)
Definition: spirv_glsl.cpp:3223
Definition: spirv_glsl.hpp:50
BaseType
Definition: spirv_common.hpp:376
void flush_phi(uint32_t from, uint32_t to)
Definition: spirv_glsl.cpp:9021
GLsizei const GLfloat * value
Definition: glext.h:6709
void find_static_extensions()
Definition: spirv_glsl.cpp:339
Definition: spirv_common.hpp:554
virtual std::string to_func_call_arg(uint32_t id)
Definition: spirv_glsl.cpp:2236
std::string to_member_name(const SPIRType &type, uint32_t index)
Definition: spirv_glsl.cpp:8073
Unknown compiler Device disconnected from port File already exists Saving to backup buffer Got connection No arguments supplied and no menu builtin
Definition: msg_hash_eo.h:34
BuiltIn
Definition: spirv.hpp:402
void flatten_buffer_block(uint32_t id)
Definition: spirv_glsl.cpp:8723
bool use_initializer_list
Definition: spirv_glsl.hpp:350
void strip_enclosed_expression(std::string &expr)
Definition: spirv_glsl.cpp:2259
static void expr(LexState *ls, expdesc *v)
Definition: lparser.c:1078
virtual void emit_instruction(const Instruction &instr)
Definition: spirv_glsl.cpp:6094
uint32_t to_array_size_literal(const SPIRType &type, uint32_t index) const
Definition: spirv_glsl.cpp:8347
void branch(uint32_t from, uint32_t to)
Definition: spirv_glsl.cpp:9110
void emit_buffer_block_flattened(const SPIRVariable &type)
Definition: spirv_glsl.cpp:1471
std::string compile() override
Definition: spirv_glsl.cpp:410
void add_variable(std::unordered_set< std::string > &variables, uint32_t id)
const char * flags_to_precision_qualifiers_glsl(const SPIRType &type, const Bitset &flags)
Definition: spirv_glsl.cpp:8193
bool check_atomic_image(uint32_t id)
Definition: spirv_glsl.cpp:8742
bool separate_shader_objects
Definition: spirv_glsl.hpp:78
bool force_temporary
Definition: spirv_glsl.hpp:68
std::vector< std::string > * redirect_statement
Definition: spirv_glsl.hpp:302
bool force_recompile
Definition: spirv_cross.hpp:658
void add_member_name(SPIRType &type, uint32_t name)
Definition: spirv_glsl.cpp:8082
Definition: spirv_common.hpp:686
std::string access_chain_internal(uint32_t base, const uint32_t *indices, uint32_t count, bool index_is_literal, bool chain_only=false, bool *need_transpose=nullptr, bool *result_is_packed=nullptr)
Definition: spirv_glsl.cpp:5142
void store_flattened_struct(SPIRVariable &var, uint32_t value)
Definition: spirv_glsl.cpp:5419
std::string convert_double_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
Definition: spirv_glsl.cpp:2837
Definition: video4linux2.c:51
GLintptr offset
Definition: glext.h:6560
GLint left
Definition: glext.h:8393
GLbitfield flags
Definition: glext.h:7828
void remap_pixel_local_storage(std::vector< PlsRemap > inputs, std::vector< PlsRemap > outputs)
Definition: spirv_glsl.hpp:125
std::string enclose_expression(const std::string &expr)
Definition: spirv_glsl.cpp:2284
bool args_will_forward(uint32_t id, const uint32_t *args, uint32_t num_args, bool pure)
Definition: spirv_glsl.cpp:5782
Definition: spirv_glsl.hpp:45
Definition: spirv_common.hpp:350
virtual std::string type_to_glsl(const SPIRType &type, uint32_t id=0)
Definition: spirv_glsl.cpp:8537
Definition: spirv_glsl.hpp:336
void emit_binary_func_op_cast(uint32_t result_type, uint32_t result_id, uint32_t op0, uint32_t op1, const char *op, SPIRType::BaseType input_type, bool skip_cast_if_equal_type)
Definition: spirv_glsl.cpp:3391
virtual std::string convert_row_major_matrix(std::string exp_str, const SPIRType &exp_type, bool is_packed)
Definition: spirv_glsl.cpp:8156
virtual void emit_function_prototype(SPIRFunction &func, const Bitset &return_flags)
Definition: spirv_glsl.cpp:8821
std::string convert_half_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
Definition: spirv_glsl.cpp:2722
bool double_literal_suffix
Definition: spirv_glsl.hpp:340
void check_function_call_constraints(const uint32_t *args, uint32_t length)
Definition: spirv_glsl.cpp:9893
std::string convert_float_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
Definition: spirv_glsl.cpp:2777
std::pair< std::string, uint32_t > flattened_access_chain_offset(const SPIRType &basetype, const uint32_t *indices, uint32_t count, uint32_t offset, uint32_t word_stride, bool *need_transpose=nullptr, uint32_t *matrix_stride=nullptr)
Definition: spirv_glsl.cpp:5590
Definition: spirv_glsl.hpp:59
GLenum GLuint GLenum GLsizei length
Definition: glext.h:6233
virtual void emit_subgroup_op(const Instruction &i)
Definition: spirv_glsl.cpp:4665
void append_global_func_args(const SPIRFunction &func, uint32_t index, std::vector< std::string > &arglist)
Definition: spirv_glsl.cpp:8055
unsigned int uint32_t
Definition: stdint.h:126
virtual std::string constant_expression(const SPIRConstant &c)
Definition: spirv_glsl.cpp:2667
const char *const str
Definition: portlistingparse.c:18
void end_scope_decl()
Definition: spirv_glsl.cpp:9877
virtual void emit_spv_amd_gcn_shader_op(uint32_t result_type, uint32_t result_id, uint32_t op, const uint32_t *args, uint32_t count)
Definition: spirv_glsl.cpp:4629
ImageFormat
Definition: spirv.hpp:180
Definition: spirv_glsl.hpp:37
Definition: spirv_common.hpp:856
void statement_inner(T &&t)
Definition: spirv_glsl.hpp:254
Method
Definition: spirv_common.hpp:590
std::string to_flattened_struct_member(const SPIRVariable &var, uint32_t index)
Definition: spirv_glsl.cpp:5363
Precision
Definition: spirv_glsl.hpp:92
struct spirv_cross::CompilerGLSL::Options::@155 vertex
uint32_t statement_count
Definition: spirv_glsl.hpp:517