Commit db9a055
committed
Fix for race condition when caching render tasks.
When the renderer receives multiple Frames from the backend
in a single render loop, it drops the old frames and just
draws the most recent frame.
If that old frame contained a render task to write to the
texture cache, then the texture cache will never be updated.
This patches tracks whether a frame has any texture cache
render tasks, and whether it has been drawn before. If a
frame which meets those conditions is being replaced, then
do a render of that frame first, skipping the main framebuffer
pass.
This is not ideal since we may end up drawing offscreen render
tasks that were batched but which aren't strictly necessary
for the texture cache render target. However, it is very rare
that the render backend is (a) producing frames faster than they
are being consumed by the renderer and (b) also contain texture
cache tasks.1 parent 39abbda commit db9a055
4 files changed
Lines changed: 167 additions & 110 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
261 | 261 | | |
262 | 262 | | |
263 | 263 | | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | | - | |
280 | | - | |
281 | | - | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | | - | |
287 | | - | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
288 | 281 | | |
289 | | - | |
290 | | - | |
291 | 282 | | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
304 | 296 | | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
318 | 324 | | |
319 | 325 | | |
320 | 326 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
| 37 | + | |
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| |||
1757 | 1757 | | |
1758 | 1758 | | |
1759 | 1759 | | |
| 1760 | + | |
1760 | 1761 | | |
1761 | 1762 | | |
1762 | 1763 | | |
| |||
1778 | 1779 | | |
1779 | 1780 | | |
1780 | 1781 | | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
| 1785 | + | |
1781 | 1786 | | |
1782 | 1787 | | |
1783 | 1788 | | |
| |||
1799 | 1804 | | |
1800 | 1805 | | |
1801 | 1806 | | |
| 1807 | + | |
| 1808 | + | |
1802 | 1809 | | |
1803 | 1810 | | |
1804 | 1811 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2377 | 2377 | | |
2378 | 2378 | | |
2379 | 2379 | | |
2380 | | - | |
| 2380 | + | |
| 2381 | + | |
| 2382 | + | |
| 2383 | + | |
| 2384 | + | |
| 2385 | + | |
| 2386 | + | |
| 2387 | + | |
| 2388 | + | |
2381 | 2389 | | |
2382 | 2390 | | |
2383 | 2391 | | |
| |||
2716 | 2724 | | |
2717 | 2725 | | |
2718 | 2726 | | |
2719 | | - | |
| 2727 | + | |
| 2728 | + | |
| 2729 | + | |
| 2730 | + | |
| 2731 | + | |
| 2732 | + | |
| 2733 | + | |
| 2734 | + | |
| 2735 | + | |
| 2736 | + | |
| 2737 | + | |
| 2738 | + | |
2720 | 2739 | | |
2721 | 2740 | | |
2722 | 2741 | | |
| |||
2775 | 2794 | | |
2776 | 2795 | | |
2777 | 2796 | | |
2778 | | - | |
2779 | | - | |
2780 | | - | |
2781 | | - | |
2782 | | - | |
2783 | | - | |
2784 | | - | |
| 2797 | + | |
| 2798 | + | |
| 2799 | + | |
| 2800 | + | |
| 2801 | + | |
| 2802 | + | |
| 2803 | + | |
| 2804 | + | |
2785 | 2805 | | |
2786 | | - | |
2787 | | - | |
2788 | | - | |
2789 | | - | |
2790 | | - | |
2791 | | - | |
2792 | | - | |
2793 | | - | |
2794 | | - | |
2795 | | - | |
| 2806 | + | |
| 2807 | + | |
| 2808 | + | |
| 2809 | + | |
| 2810 | + | |
| 2811 | + | |
| 2812 | + | |
| 2813 | + | |
| 2814 | + | |
| 2815 | + | |
| 2816 | + | |
2796 | 2817 | | |
2797 | 2818 | | |
2798 | 2819 | | |
| |||
2844 | 2865 | | |
2845 | 2866 | | |
2846 | 2867 | | |
2847 | | - | |
2848 | | - | |
2849 | | - | |
2850 | | - | |
2851 | | - | |
2852 | | - | |
2853 | | - | |
2854 | | - | |
2855 | | - | |
2856 | | - | |
2857 | | - | |
2858 | | - | |
| 2868 | + | |
| 2869 | + | |
| 2870 | + | |
| 2871 | + | |
| 2872 | + | |
| 2873 | + | |
| 2874 | + | |
| 2875 | + | |
| 2876 | + | |
| 2877 | + | |
| 2878 | + | |
| 2879 | + | |
| 2880 | + | |
| 2881 | + | |
2859 | 2882 | | |
2860 | 2883 | | |
2861 | 2884 | | |
2862 | 2885 | | |
2863 | 2886 | | |
2864 | | - | |
| 2887 | + | |
2865 | 2888 | | |
2866 | 2889 | | |
2867 | 2890 | | |
| |||
4170 | 4193 | | |
4171 | 4194 | | |
4172 | 4195 | | |
4173 | | - | |
| 4196 | + | |
4174 | 4197 | | |
4175 | 4198 | | |
4176 | 4199 | | |
4177 | 4200 | | |
4178 | 4201 | | |
| 4202 | + | |
4179 | 4203 | | |
4180 | 4204 | | |
4181 | 4205 | | |
| |||
4204 | 4228 | | |
4205 | 4229 | | |
4206 | 4230 | | |
4207 | | - | |
4208 | | - | |
4209 | | - | |
4210 | | - | |
4211 | | - | |
4212 | | - | |
4213 | | - | |
4214 | | - | |
4215 | | - | |
4216 | | - | |
4217 | | - | |
| 4231 | + | |
| 4232 | + | |
4218 | 4233 | | |
4219 | | - | |
4220 | | - | |
4221 | | - | |
4222 | | - | |
4223 | | - | |
4224 | | - | |
4225 | | - | |
4226 | | - | |
4227 | | - | |
4228 | | - | |
4229 | | - | |
4230 | | - | |
| 4234 | + | |
| 4235 | + | |
| 4236 | + | |
| 4237 | + | |
| 4238 | + | |
| 4239 | + | |
| 4240 | + | |
| 4241 | + | |
| 4242 | + | |
| 4243 | + | |
| 4244 | + | |
| 4245 | + | |
| 4246 | + | |
| 4247 | + | |
| 4248 | + | |
| 4249 | + | |
| 4250 | + | |
| 4251 | + | |
| 4252 | + | |
| 4253 | + | |
| 4254 | + | |
| 4255 | + | |
| 4256 | + | |
4231 | 4257 | | |
4232 | 4258 | | |
4233 | 4259 | | |
| |||
4314 | 4340 | | |
4315 | 4341 | | |
4316 | 4342 | | |
4317 | | - | |
4318 | | - | |
| 4343 | + | |
| 4344 | + | |
| 4345 | + | |
| 4346 | + | |
4319 | 4347 | | |
4320 | 4348 | | |
4321 | 4349 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
769 | 769 | | |
770 | 770 | | |
771 | 771 | | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
772 | 788 | | |
773 | 789 | | |
774 | 790 | | |
| |||
0 commit comments