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
virtual void emit_buffer_block(const SPIRVariable &type)
Definition: spirv_glsl.cpp:1389
Definition: spirv_glsl.hpp:44
bool processing_entry_point
Definition: spirv_glsl.hpp:332
std::vector< std::string > header_lines
Definition: spirv_glsl.hpp:515
std::string to_expression(uint32_t id)
Definition: spirv_glsl.cpp:2364
virtual void bitcast_from_builtin_load(uint32_t source_id, std::string &expr, const SPIRType &expr_type)
Definition: spirv_glsl.cpp:9938
BuiltIn
Definition: spirv.hpp:402
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:33
bool separate_shader_objects
Definition: spirv_glsl.hpp:78
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
const char * basic_int_type
Definition: spirv_glsl.hpp:343
const char * to_pls_qualifiers_glsl(const SPIRVariable &variable)
Definition: spirv_glsl.cpp:8326
std::string legacy_tex_op(const std::string &op, const SPIRType &imgtype, uint32_t lod, uint32_t id)
Definition: spirv_glsl.cpp:3466
static int cond(LexState *ls)
Definition: lparser.c:1177
std::string discard_literal
Definition: spirv_glsl.hpp:338
void statement_no_indent(Ts &&... ts)
Definition: spirv_glsl.hpp:291
StorageClass
Definition: spirv.hpp:137
std::string to_extract_component_expression(uint32_t id, uint32_t index)
Definition: spirv_glsl.cpp:2355
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
void emit_unary_op(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op)
Definition: spirv_glsl.cpp:3248
virtual void emit_header()
Definition: spirv_glsl.cpp:457
bool double_literal_suffix
Definition: spirv_glsl.hpp:340
const Options & get_common_options() const
Definition: spirv_glsl.hpp:152
std::string build_composite_combiner(uint32_t result_type, const uint32_t *elems, uint32_t length)
Definition: spirv_glsl.cpp:5949
void check_function_call_constraints(const uint32_t *args, uint32_t length)
Definition: spirv_glsl.cpp:9893
CompilerGLSL(std::vector< uint32_t > spirv_)
Definition: spirv_glsl.hpp:132
BufferPackingStandard
Definition: spirv_cross.hpp:101
Definition: spirv_glsl.hpp:38
void flush_phi(uint32_t from, uint32_t to)
Definition: spirv_glsl.cpp:9021
virtual std::string constant_expression_vector(const SPIRConstant &c, uint32_t vector)
Definition: spirv_glsl.cpp:2913
std::unique_ptr< std::ostringstream > buffer
Definition: spirv_glsl.hpp:251
GLbitfield flags
Definition: glext.h:7828
virtual bool is_non_native_row_major_matrix(uint32_t id)
Definition: spirv_glsl.cpp:8103
const char *const str
Definition: portlistingparse.c:18
Definition: spirv_glsl.hpp:45
virtual void emit_texture_op(const Instruction &i)
Definition: spirv_glsl.cpp:3782
std::string to_combined_image_sampler(uint32_t image_id, uint32_t samp_id)
Definition: spirv_glsl.cpp:3697
GLuint GLuint GLsizei count
Definition: glext.h:6292
void end_scope_decl()
Definition: spirv_glsl.cpp:9877
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
argument_type
Definition: query.c:50
dictionary args
Definition: test_shaders.py:20
Definition: spirv_glsl.hpp:36
const char * format_to_glsl(spv::ImageFormat format)
Definition: spirv_glsl.cpp:772
void reset()
Definition: spirv_glsl.cpp:270
std::string argument_decl(const SPIRFunction::Parameter &arg)
Definition: spirv_glsl.cpp:8282
virtual void emit_uniform(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1632
GLsizei GLsizei GLchar * source
Definition: glext.h:6688
ImageFormat
Definition: spirv.hpp:180
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
virtual std::string convert_row_major_matrix(std::string exp_str, const SPIRType &exp_type, bool is_packed)
Definition: spirv_glsl.cpp:8156
void emit_pls()
Definition: spirv_glsl.cpp:1827
std::string emit_continue_block(uint32_t continue_block)
Definition: spirv_glsl.cpp:9236
Definition: ibxm.h:14
void replace_fragment_outputs()
Definition: spirv_glsl.cpp:1790
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
virtual void emit_entry_point_declarations()
Definition: spirv_glsl.cpp:1681
std::string convert_float_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
Definition: spirv_glsl.cpp:2777
BaseType
Definition: spirv_common.hpp:376
void emit_resources()
Definition: spirv_glsl.cpp:2013
Definition: spirv_common.hpp:803
virtual void emit_fixup()
Definition: spirv_glsl.cpp:8996
GLsizei const GLchar *const * string
Definition: glext.h:6699
bool use_initializer_list
Definition: spirv_glsl.hpp:350
static void expr(LexState *ls, expdesc *v)
Definition: lparser.c:1078
std::string declare_temporary(uint32_t type, uint32_t id)
Definition: spirv_glsl.cpp:3188
virtual void emit_push_constant_block(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1344
Definition: spirv_glsl.hpp:47
GLuint const GLchar * name
Definition: glext.h:6671
std::string to_flattened_struct_member(const SPIRVariable &var, uint32_t index)
Definition: spirv_glsl.cpp:5363
std::unordered_set< std::string > resource_names
Definition: spirv_glsl.hpp:329
virtual std::string layout_for_member(const SPIRType &type, uint32_t index)
Definition: spirv_glsl.cpp:716
std::string to_unpacked_expression(uint32_t id)
Definition: spirv_glsl.cpp:2333
bool member_is_packed_type(const SPIRType &type, uint32_t index) const
Definition: spirv_glsl.cpp:8147
static uint32_t mask_relevant_memory_semantics(uint32_t semantics)
Definition: spirv_glsl.cpp:9926
bool enable_420pack_extension
Definition: spirv_glsl.hpp:90
bool uint32_t_literal_suffix
Definition: spirv_glsl.hpp:341
Definition: spirv_glsl.hpp:42
const char * index_to_swizzle(uint32_t index)
Definition: spirv_glsl.cpp:5125
bool remove_unity_swizzle(uint32_t base, std::string &op)
Definition: spirv_glsl.cpp:5910
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
void emit_unrolled_unary_op(uint32_t result_type, uint32_t result_id, uint32_t operand, const char *op)
Definition: spirv_glsl.cpp:3265
bool remove_duplicate_swizzle(std::string &op)
Definition: spirv_glsl.cpp:5846
Definition: spirv_common.hpp:97
GLenum GLenum variable
Definition: glext.h:9938
Definition: spirv_glsl.hpp:46
std::string join(Ts &&... ts)
Definition: spirv_common.hpp:218
void emit_block_instructions(SPIRBlock &block)
Definition: spirv_glsl.cpp:6086
#define T(x)
Definition: spirv_glsl.hpp:50
Definition: spirv_glsl.hpp:35
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
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
Definition: spirv_common.hpp:554
void emit_block_chain(SPIRBlock &block)
Definition: spirv_glsl.cpp:9536
PlsFormat
Definition: spirv_glsl.hpp:30
void add_resource_name(uint32_t id)
Definition: spirv_glsl.cpp:8692
virtual std::string bitcast_glsl_op(const SPIRType &result_type, const SPIRType &argument_type)
Definition: spirv_glsl.cpp:4887
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_push_constant_block_glsl(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1359
void emit_struct(SPIRType &type)
Definition: spirv_glsl.cpp:652
Definition: spirv_glsl.hpp:34
bool swizzle_is_function
Definition: spirv_glsl.hpp:346
bool boolean_mix_support
Definition: spirv_glsl.hpp:356
void statement_inner(T &&t, Ts &&... ts)
Definition: spirv_glsl.hpp:261
struct spirv_cross::CompilerGLSL::BackendVariations backend
Definition: spirv_glsl.hpp:32
bool supports_empty_struct
Definition: spirv_glsl.hpp:363
bool force_recompile
Definition: spirv_cross.hpp:658
void emit_unary_func_op(uint32_t result_type, uint32_t result_id, uint32_t op0, const char *op)
Definition: spirv_glsl.cpp:3374
std::unordered_set< std::string > local_variable_names
Definition: spirv_glsl.hpp:328
Definition: video4linux2.c:51
Precision
Definition: spirv_glsl.hpp:92
ExecutionModel
Definition: spirv.hpp:68
#define const
Definition: zconf.h:217
std::string convert_separate_image_to_combined(uint32_t id)
Definition: spirv_glsl.cpp:4004
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
Definition: spirv_common.hpp:350
GLsizei const GLfloat * value
Definition: glext.h:6709
bool should_forward(uint32_t id)
Definition: spirv_glsl.cpp:5752
std::string to_array_size(const SPIRType &type, uint32_t index)
Definition: spirv_glsl.cpp:8365
Definition: spirv_glsl.hpp:336
uint32_t version
Definition: spirv_glsl.hpp:62
void find_static_extensions()
Definition: spirv_glsl.cpp:339
std::string bitcast_glsl(const SPIRType &result_type, uint32_t arg)
Definition: spirv_glsl.cpp:4923
virtual void bitcast_to_builtin_store(uint32_t target_id, std::string &expr, const SPIRType &expr_type)
Definition: spirv_glsl.cpp:9970
std::vector< PlsRemap > pls_inputs
Definition: spirv_glsl.hpp:540
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
void emit_declared_builtin_block(spv::StorageClass storage, spv::ExecutionModel model)
Definition: spirv_glsl.cpp:1885
void fixup_image_load_store_access()
Definition: spirv_glsl.cpp:1860
uint32_t type_to_packed_array_stride(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
Definition: spirv_glsl.cpp:972
bool can_declare_struct_inline
Definition: spirv_glsl.hpp:352
std::string emit_for_loop_initializers(const SPIRBlock &block)
Definition: spirv_glsl.cpp:9286
void emit_interface_block(const SPIRVariable &type)
Definition: spirv_glsl.cpp:1558
std::vector< std::string > forced_extensions
Definition: spirv_glsl.hpp:514
bool native_row_major_matrix
Definition: spirv_glsl.hpp:354
GLuint GLuint GLsizei GLenum const GLvoid * indices
Definition: glext.h:6292
void init()
Definition: spirv_glsl.hpp:581
void emit_hoisted_temporaries(std::vector< std::pair< uint32_t, uint32_t >> &temporaries)
Definition: spirv_common.hpp:856
const char * half_literal_suffix
Definition: spirv_glsl.hpp:345
virtual std::string image_type_glsl(const SPIRType &type, uint32_t id=0)
Definition: spirv_glsl.cpp:8434
static std::string sanitize_underscores(const std::string &str)
Definition: spirv_glsl.cpp:126
virtual std::string unpack_expression_type(std::string expr_str, const SPIRType &type)
Definition: spirv_glsl.cpp:2253
std::unordered_set< uint32_t > flattened_buffer_blocks
Definition: spirv_glsl.hpp:502
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
std::string to_enclosed_unpacked_expression(uint32_t id)
Definition: spirv_glsl.cpp:2344
virtual void replace_illegal_names()
Definition: spirv_glsl.cpp:1685
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
void track_expression_read(uint32_t id)
Definition: spirv_glsl.cpp:5761
SPIRV_CROSS_DEPRECATED("get_options() is obsolete, use get_common_options() instead.") const Options &get_options() const
Definition: spirv_glsl.hpp:146
void begin_scope()
Definition: spirv_glsl.cpp:9863
void remap_pls_variables()
Definition: spirv_glsl.cpp:312
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
void emit_buffer_block_legacy(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1399
GLuint coord
Definition: glext.h:10418
std::string load_flattened_struct(SPIRVariable &var)
Definition: spirv_glsl.cpp:5400
bool support_nonzero_base_instance
Definition: spirv_glsl.hpp:113
bool flatten_multidimensional_arrays
Definition: spirv_glsl.hpp:84
Options options
Definition: spirv_glsl.hpp:310
bool can_return_array
Definition: spirv_glsl.hpp:360
bool supports_extensions
Definition: spirv_glsl.hpp:362
void register_impure_function_call()
Definition: spirv_glsl.cpp:5805
std::unordered_set< uint32_t > emitted_functions
Definition: spirv_glsl.hpp:500
bool fixup_clipspace
Definition: spirv_glsl.hpp:105
Precision default_float_precision
Definition: spirv_glsl.hpp:120
SPIRV_CROSS_DEPRECATED("set_options() is obsolete, use set_common_options() instead.") void set_options(Options &opts)
Definition: spirv_glsl.hpp:159
Definition: spirv_common.hpp:283
GLdouble GLdouble t
Definition: glext.h:6398
GLint lod
Definition: glext.h:8462
Precision default_int_precision
Definition: spirv_glsl.hpp:121
Definition: spirv_glsl.hpp:56
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
virtual std::string variable_decl(const SPIRType &type, const std::string &name, uint32_t id=0)
Definition: spirv_glsl.cpp:8162
virtual const char * to_storage_qualifiers_glsl(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1496
virtual void emit_block_hints(const SPIRBlock &block)
Definition: spirv_glsl.cpp:10001
std::unordered_set< uint32_t > flattened_structs
Definition: spirv_glsl.hpp:503
uint32_t id
Definition: spirv_glsl.hpp:52
void flush_variable_declaration(uint32_t id)
Definition: spirv_glsl.cpp:5836
static int block
Definition: psp2.c:31
void end_scope()
Definition: spirv_glsl.cpp:9869
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
std::vector< PlsRemap > pls_outputs
Definition: spirv_glsl.hpp:541
bool args_will_forward(uint32_t id, const uint32_t *args, uint32_t num_args, bool pure)
Definition: spirv_glsl.cpp:5782
bool optimize_read_modify_write(const SPIRType &type, const std::string &lhs, const std::string &rhs)
Definition: spirv_glsl.cpp:6041
Definition: spirv_glsl.hpp:95
void handle_invalid_expression(uint32_t id)
Definition: spirv_glsl.cpp:2241
GLint GLvoid * img
Definition: glext.h:6388
bool can_swizzle_scalar
Definition: spirv_glsl.hpp:358
std::string layout_for_variable(const SPIRVariable &variable)
Definition: spirv_glsl.cpp:1178
const GLubyte * c
Definition: glext.h:9812
Definition: spirv_cross.hpp:117
GLenum GLenum GLvoid * row
Definition: glext.h:6316
bool attempt_emit_loop_header(SPIRBlock &block, SPIRBlock::Method method)
Definition: spirv_glsl.cpp:9380
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 Synchronizacja CPU i GPU Zmniejsza opóźnienie kosztem wydajności Głośność dźwięku Automatyczne ładowanie stanu zapisu Łączenie z hostem gry Gniazdo połączenia Hasło Nazwa Użytkownika Lista punktów klienta Lista osiągnięć 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:2319
virtual void emit_instruction(const Instruction &instr)
Definition: spirv_glsl.cpp:6094
void emit_constant(const SPIRConstant &constant)
Definition: spirv_glsl.cpp:1654
bool check_explicit_lod_allowed(uint32_t lod)
Definition: spirv_glsl.cpp:3451
std::string compile() override
Definition: spirv_glsl.cpp:410
void replace_fragment_output(SPIRVariable &var)
Definition: spirv_glsl.cpp:1752
bool is_legacy_es() const
Definition: spirv_glsl.hpp:524
Definition: spirv_common.hpp:369
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
bool force_temporary
Definition: spirv_glsl.hpp:68
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
Definition: spirv_glsl.hpp:96
unsigned int uint32_t
Definition: stdint.h:126
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
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
PlsFormat format
Definition: spirv_glsl.hpp:53
Definition: spirv_glsl.hpp:39
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
Definition: spirv_common.hpp:699
GLenum type
Definition: glext.h:6233
std::string get_partial_source()
Definition: spirv_glsl.cpp:452
virtual std::string to_initializer_expression(const SPIRVariable &var)
Definition: spirv_glsl.cpp:8299
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
CompilerGLSL(const uint32_t *ir, size_t word_count)
Definition: spirv_glsl.hpp:138
GLintptr offset
Definition: glext.h:6560
void set_common_options(const Options &opts)
Definition: spirv_glsl.hpp:165
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
GLint left
Definition: glext.h:8393
void branch(uint32_t from, uint32_t to)
Definition: spirv_glsl.cpp:9110
uint32_t type_to_packed_size(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
Definition: spirv_glsl.cpp:995
bool flip_vert_y
Definition: spirv_glsl.hpp:108
bool type_is_empty(const SPIRType &type)
Definition: spirv_glsl.cpp:647
std::string to_member_name(const SPIRType &type, uint32_t index)
Definition: spirv_glsl.cpp:8073
void add_header_line(const std::string &str)
Definition: spirv_glsl.cpp:8697
Definition: spirv_common.hpp:497
virtual std::string builtin_to_glsl(spv::BuiltIn builtin, spv::StorageClass storage)
Definition: spirv_glsl.cpp:4957
set set set set set set set macro pixldst1 op
Definition: pixman-arm-neon-asm.h:54
virtual std::string constant_expression(const SPIRConstant &c)
Definition: spirv_glsl.cpp:2667
virtual bool member_is_non_native_row_major_matrix(const SPIRType &type, uint32_t index)
Definition: spirv_glsl.cpp:8125
uint32_t type_to_packed_alignment(const SPIRType &type, const Bitset &flags, BufferPackingStandard packing)
Definition: spirv_glsl.cpp:883
void emit_buffer_block_native(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1419
virtual std::string to_interpolation_qualifiers(const Bitset &flags)
Definition: spirv_glsl.cpp:693
Method
Definition: spirv_common.hpp:590
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 propagate_loop_dominators(const SPIRBlock &block)
Definition: spirv_glsl.cpp:9197
bool is_legacy_desktop() const
Definition: spirv_glsl.hpp:529
std::string type_to_glsl_constructor(const SPIRType &type)
Definition: spirv_glsl.cpp:8516
const char * basic_uint_type
Definition: spirv_glsl.hpp:344
void flush_undeclared_variables(SPIRBlock &block)
Definition: spirv_glsl.cpp:9500
void remap_pixel_local_storage(std::vector< PlsRemap > inputs, std::vector< PlsRemap > outputs)
Definition: spirv_glsl.hpp:125
Definition: barrier.hpp:23
std::string variable_decl_function_local(SPIRVariable &variable)
Definition: spirv_glsl.cpp:5823
std::string pls_decl(const PlsRemap &variable)
Definition: spirv_glsl.cpp:8335
Definition: spirv_glsl.hpp:97
bool allow_precision_qualifiers
Definition: spirv_glsl.hpp:357
void store_flattened_struct(SPIRVariable &var, uint32_t value)
Definition: spirv_glsl.cpp:5419
GLenum GLuint GLenum GLsizei length
Definition: glext.h:6233
bool float_literal_suffix
Definition: spirv_glsl.hpp:339
void require_extension_internal(const std::string &ext)
Definition: spirv_glsl.cpp:8714
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 can_use_io_location(spv::StorageClass storage, bool block)
Definition: spirv_glsl.cpp:1142
virtual std::string to_func_call_arg(uint32_t id)
Definition: spirv_glsl.cpp:2236
std::unordered_map< uint32_t, uint32_t > expression_usage_counts
Definition: spirv_glsl.hpp:511
void add_local_variable_name(uint32_t id)
Definition: spirv_glsl.cpp:8687
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
bool expression_is_forwarded(uint32_t id)
Definition: spirv_glsl.cpp:3223
virtual void emit_function_prototype(SPIRFunction &func, const Bitset &return_flags)
Definition: spirv_glsl.cpp:8821
Definition: spirv_glsl.hpp:37
void flatten_buffer_block(uint32_t id)
Definition: spirv_glsl.cpp:8723
std::string convert_half_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
Definition: spirv_glsl.cpp:2722
uint32_t to_array_size_literal(const SPIRType &type, uint32_t index) const
Definition: spirv_glsl.cpp:8347
bool use_typed_initializer_list
Definition: spirv_glsl.hpp:351
GLfloat bias
Definition: glext.h:8812
std::string to_enclosed_expression(uint32_t id)
Definition: spirv_glsl.cpp:2328
const char * to_precision_qualifiers_glsl(uint32_t id)
Definition: spirv_glsl.cpp:8245
std::string remap_swizzle(const SPIRType &result_type, uint32_t input_components, const std::string &expr)
Definition: spirv_glsl.cpp:1806
Definition: spirv_common.hpp:686
const char * flags_to_precision_qualifiers_glsl(const SPIRType &type, const Bitset &flags)
Definition: spirv_glsl.cpp:8193
std::unordered_map< std::string, std::unordered_set< uint64_t > > function_overloads
Definition: spirv_glsl.hpp:330
bool check_atomic_image(uint32_t id)
Definition: spirv_glsl.cpp:8742
GLenum func
Definition: glext.h:6668
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
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
bool can_declare_arrays_inline
Definition: spirv_glsl.hpp:353
void statement_inner(T &&t)
Definition: spirv_glsl.hpp:254
std::string type_to_array_glsl(const SPIRType &type)
Definition: spirv_glsl.cpp:8393
const Instruction * get_next_instruction_in_block(const Instruction &instr)
Definition: spirv_glsl.cpp:9916
bool force_gl_in_out_block
Definition: spirv_glsl.hpp:359
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
Definition: spirv_glsl.hpp:41
bool explicit_struct_type
Definition: spirv_glsl.hpp:349
uint32_t statement_count
Definition: spirv_glsl.hpp:517
bool allow_truncated_access_chain
Definition: spirv_glsl.hpp:361
std::string enclose_expression(const std::string &expr)
Definition: spirv_glsl.cpp:2284
Unknown compiler Device disconnected from port File already exists Saving to backup buffer Got connection from
Definition: msg_hash_ar.h:33
uint32_t indent
Definition: spirv_glsl.hpp:498
virtual bool skip_argument(uint32_t id) const
Definition: spirv_glsl.cpp:6030
virtual void emit_array_copy(const std::string &lhs, uint32_t rhs_id)
Definition: spirv_glsl.cpp:9933
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
void strip_enclosed_expression(std::string &expr)
Definition: spirv_glsl.cpp:2259
struct spirv_cross::CompilerGLSL::Options::@156 fragment
std::string constant_op_expression(const SPIRConstantOp &cop)
Definition: spirv_glsl.cpp:2487
void append_global_func_args(const SPIRFunction &func, uint32_t index, std::vector< std::string > &arglist)
Definition: spirv_glsl.cpp:8055
typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void *pData)
void register_call_out_argument(uint32_t id)
Definition: spirv_glsl.cpp:5814
SPIRBlock * current_emitting_block
Definition: spirv_glsl.hpp:209
void add_variable(std::unordered_set< std::string > &variables, uint32_t id)
void emit_push_constant_block_vulkan(const SPIRVariable &var)
Definition: spirv_glsl.cpp:1354
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
virtual void emit_subgroup_op(const Instruction &i)
Definition: spirv_glsl.cpp:4665
std::vector< std::string > * redirect_statement
Definition: spirv_glsl.hpp:302
virtual void declare_undefined_values()
Definition: spirv_glsl.cpp:1996
void register_control_dependent_expression(uint32_t expr)
Definition: spirv_glsl.cpp:6077
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: glext.h:6293
void emit_function(SPIRFunction &func, const Bitset &return_flags)
Definition: spirv_glsl.cpp:8889
bool shared_is_implied
Definition: spirv_glsl.hpp:347
void emit_specialization_constant_op(const SPIRConstantOp &constant)
Definition: spirv_glsl.cpp:1647
virtual std::string to_qualifiers_glsl(uint32_t id)
Definition: spirv_glsl.cpp:8250
struct spirv_cross::CompilerGLSL::Options::@155 vertex
void add_member_name(SPIRType &type, uint32_t name)
Definition: spirv_glsl.cpp:8082
void statement(Ts &&... ts)
Definition: spirv_glsl.hpp:269
const SPIRBlock * current_continue_block
Definition: spirv_glsl.hpp:303
uint32_t type_to_packed_base_size(const SPIRType &type, BufferPackingStandard packing)
Definition: spirv_glsl.cpp:863
std::string convert_double_to_string(const SPIRConstant &value, uint32_t col, uint32_t row)
Definition: spirv_glsl.cpp:2837
bool use_constructor_splatting
Definition: spirv_glsl.hpp:355
virtual std::string type_to_glsl(const SPIRType &type, uint32_t id=0)
Definition: spirv_glsl.cpp:8537
GLdouble GLdouble right
Definition: glext.h:11766
void require_extension(const std::string &ext)
Definition: spirv_glsl.cpp:8708
bool flexible_member_array_supported
Definition: spirv_glsl.hpp:348
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
bool is_legacy() const
Definition: spirv_glsl.hpp:519
#define UINT32_MAX
Definition: stdint.h:188
void emit_flattened_io_block(const SPIRVariable &var, const char *qual)
Definition: spirv_glsl.cpp:1518
bool es
Definition: spirv_glsl.hpp:65
void emit_buffer_block_flattened(const SPIRVariable &type)
Definition: spirv_glsl.cpp:1471
u32 col
Definition: gx_regdef.h:5093
bool has_extension(const std::string &ext) const
Definition: spirv_glsl.cpp:8702
bool long_long_literal_suffix
Definition: spirv_glsl.hpp:342
void branch_to_continue(uint32_t from, uint32_t to)
Definition: spirv_glsl.cpp:9051
GLuint index
Definition: glext.h:6671