summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glsl-optimizer/Changelog.md
blob: 39ce18b25416b1da1339da0e10347319ccfad5f4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
GLSL optimizer Change Log
=========================

2016 03
-------

Fixed:

* Fixed translation performance regression in loop analysis (regressed in 2015 06 fixes).


2015 08
-------

Changes:

* 2D shadow and 2D array uniforms got their own glslopt_basic_type entries.

Fixes:

* Fixed translation of 2D texture arrays (GLSL with EXT_texture_array, GLES3 and Metal).


2015 06
-------

Fixes:

* Fixed some cases of different precision matrix assignments being miscompiled on Metal.
* Fixed yet more issues with translation of weird loops.
* Fixed translation of matrix+scalar, matrix-scalar, matrix/scalar operations on Metal.


2015 05
-------

Fixes:

* Fixes some cases of highp/mediump sampler sampling resulting in resulting temporaries wrongly being lowp.


2015 04
-------

Goodies:

* GLES2: support EXT_draw_instanced / gl_InstanceIDEXT.
* Support gl_VertexID in GLSL < 1.30 when EXT_gpu_shader4 is used.

Fixes:

* Metal: fixed some bugs with translation of weird loops.


2015 02
-------

Tweaks:

* Texture LOD sampling functions on GLES2.0 now produce a wrapper call, that does approximation
  (mip bias) on devices that don't support GL_EXT_shader_texture_lod.
* Undefined precision integers on GLES now default to highp.


2015 01
-------

Fixes:

* Float literals are printed with 7 significant digits now.
* Metal: GLSL mod() is properly translated into Metal's fmod().
* Metal: Fixed some cases of reciprocal (1/x) printing missing half precision cast.
* GLES3: textureOffset with a mipmap bias is printed correctly now.
* Fixed a bug with loop inductor detection if the inductor was used before the loop for some things.
* Fixed printing of int/float bitcast operations.
* Improved precision determination of some constructs.


2014 10
-------

Goodies:

* Support for translating GLSL shaders into Apple Metal shading language.
  Exactly same process; GLSL in (preferably ES3 variant), optimization passes, Metal out.
  All uniforms currently will be put into one constant buffer.
  Pass kGlslTargetMetal target to get Metal.
* Shader reflection API. See glslopt_shader_get_* functions. Binding indices
  are only automatically assigned on Metal now; on GL/ES targets the reflection API is only
  useful to get list of inputs/uniforms, their names and types.
* Improved dead code elimation: some cases of swizzled/masked assignments where same variable was on both sides
  were not eliminated if that variable was totally unused later.
* Merged with upstream Mesa, comes with new optimizations (min/max pruning, tree rebalancing, vector_insert lowering).

Fixes:

* sampler3D declarations were missing precision qualifier on GLES3.0.


2014 09
-------

Goodies:

* Supports GL_EXT_draw_buffers in ES2.0, for MRT.


2014 08
-------

Goodies:

* Supports GL_EXT_shader_framebuffer_fetch now, in both ES2.0 & 3.0.

Fixes:

* Fixed printing of infinities & NaNs.
* Fixed vectorization pass in some cases going wrong on texture lookups.


2014 06
-------

Goodies:

* Optimization: split vectors with only some used components into scalars.

Fixes:

* Fixed more issues with for-loop printing.
* Fixed printing of unsigned integer swizzled & constants.

2014 03
-------

Fixes:

* Fixed missing precision qualifier in some ES shaders (mostly due to expansion of ternary ?: check).

2014 02
-------

Fixes:

* Fixed vectorize pass introduced last month going wrong with dot products.

2014 01
-------

Goodies:

* Better optimization: vectorize assignments to individual vector channels.
* More OpenGL ES 2.0 conformant printing of complex for-loops (loop inductions printed
  as += or ++; loop initializers inside loop body).

Fixes:

* Fixed array assignments sometimes appearing in pre-GLSL1.20 versions, especially with
  complex loops that couldn't be unrolled.
* Fixed output of textureOffset and texelFetch.
* Fixed error messages on MRT outputs on GL & GLES3 (now supports 4 MRTs).

2013 12
-------

Goodies:

* Optimized performance; was spending half of the time in stupid string code.
* Added glslopt_shader_get_stats to get *very* approximate shader complexity stats.
* Nicer printing of complicated for-loops.

Fixes:

* Fixed printing of struct initializers.


2013 11
-------

Goodies:

* Better optimizations: CSE; `A+(-B) => A-B`; `!A || !B => !(A && B)`.
* Merged with upstream Mesa.

Fixes:

* Fixed location qualifiers, ES3.0 version printing, samplerCubeShadow sampling operations.


2013 10
-------

Goodies:

* Initial OpenGL ES 3.0 support
* API to query shader input names; glslopt_shader_get_input_count and glslopt_shader_get_input_name

Changes:

* Xcode project files updated to Xcode 5

Fixes:

* VS2013 fixes