-
-
Notifications
You must be signed in to change notification settings - Fork 61
/
NEWS
4318 lines (3681 loc) · 204 KB
/
NEWS
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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
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
288
289
290
291
292
293
294
295
296
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
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1.7.0
-----
Major new feature:
- task-manager (must be enabled explicitly)
The task manager allows to automatically distribute rendering tasks over
multiple cpu and/or gpu cores. There is an implementation for the generic
(software) driver which can be configured with by setting software-cores=<n>
and task-manager options in the directfbrc.
Merged Projects:
- DirectFB-extra (missing bits)
- SaWMan
- FusionDale
- FusionSound
- DiVine
- ++dfb
New APIs
- Add IDirectFBSurface::DumpRaw() to dump raw pixel data of a surface to a file
- Add IDirectFBSurface::GetFrameTime() to receive the timestamp for the next frame to be rendered
- Add IDirectFBSurface::SetFrameTimeConfig() to configure GetFrameTime()
- Add IDirectFBVideoProvider::SetDestination() to change the destination surface and/or destination rectangle during playback
New System Module
- drm/kms
New ImageProviders
- WebP
- tiff
Tons of bugfixes and performance improvements...
1.6.0
-----
New APIs
- DWOP_STEREO_SIDE_BY_SIDE_HALF to have stereo output without changing buffers
- Increase number of preallocated entries in DFBSurfaceDescription to 3
- Add IDirectFBInputDevice::SetConfiguration() with DFBInputDeviceConfiguration featuring sensitivity setting
- Add IDirectFBFont::GetDescription() to retrieve the font description with which the font had been created
- Add IDirectFBWindow::SetGeometry() to set src and dst geometry in one call
- Add supported HDMI signaling modes (all_framing) to DFBScreenEncoderDescription
- Add DSOR_960_540 to DFBScreenOutputResolution
- Add IDirectFBSurface::GetID() to retrieve the object id of the CoreSurface
- Add IDirectFBSurface::AllowAccess() to allow other process identified by an executable name access to the surface in secure fusion mode
- Add "primary-id" option for CreateSurface(PRIMARY)
- Add IDirectFB::GetSurface(ID)
- Add DFBSurfaceEventType with DSEVT_DESTROYED and DSEVT_UPDATE
- Add DFBSurfaceEvent with type, surface_id and update region for left and right buffer
- Add IDirectFBSurface::CreateEventBuffer, AttachEventBuffer and DetachEventBuffer
- Add DSOR_1440_540 to DFBScreenOutputResolution
- Add IDirectFBSurface::MakeClient() and FrameAck()
- Fixed DFBInputDeviceCapabilities naming, there was a naming clash with DFBImageCapabilities enum
- Add IDirectFBSurface::GetColorSpace()
- Add IDirectFBImageProvider::SetRenderFlags()
- Add DSCAPS_GL to indicate surface data is stored in memory that can be accessed by a GL accelerator
- Add DFBDisplayAspectRatio in caps and config of encoders
- Add DFB_ASPECT_RATIO_eAuto, DFB_ASPECT_RATIO_e4x3, DFB_ASPECT_RATIO_e16x9
- Add DSECAPS_ASPECT_RATIO to DFBScreenEncoderCapabilities
- Add all_aspect_ratio in DFBScreenEncoderDescription
- Add aspect_ratio in DFBScreenEncoderConfig
- Add DSPF_LUT4 and DSPF_ALUT8, only definitions for now
Secure Fusion
- In secure mode all skirmishs are gone
- Performance improvements over non-secure mode
Compositor Support
- New APIs allow compositor application to get access to surfaces and updates of other applications
Mesa incl multi app (experimental)
- New system module with OpenGL based acceleration
Android (highly experimental)
- New system module allowing DirectFB apps to run on Android
...many other changes, must read ChangeLog.
1.5.3
-----
IDirectFB
- Implement primary surface creation with DSCAPS_STEREO in fullscreen and windowed mode.
IDirectFBFont
- Add DFFA_STYLE_BOLD for loading bold face from a file.
IDirectFBScreen
- Add DSECAPS_FRAMING to indicate support for different stereo output modes.
IDirectFBScreen
- Add full resolution side-by-side to DFBScreenEncoderPictureFraming and rework naming.
IDirectFBSurface
- Move _Layer/_Window implementation of Get/SetStereoEye() to generic IDirectFBSurface, add missing generic FlipStereo().
Runtime Options
- Add 'x11-borderless=[x.y]' to disable X11 window borders and optionally position window
Graphics
- Add BatchFill driver function to reduce overhead.
- Add BatchBlit driver function to reduce overhead.
Core
- Fix crash when dfb_wm_update_cursor() is called with 'no-cursor' option.
- In region_buffer_lock() fix surface accessor argument for right buffer lock.
- In dfb_layer_region_flip_update() redirect to dfb_layer_region_flip_update_stereo() automatically.
- In dfb_window_create() add DSCAPS_STEREO when DWCAPS_STEREO is used.
X11
- Add stereo display support via side-by-side output, implement 'x11-borderless' option.
FreeType2
- Add support for DFFA_VERTICAL_LAYOUT and DFFA_STYLE_ITALIC.
dfbtest_stereo_window
- Add simple test for stereo depth of windows.
1.5.2
-----
Core
- Add _GetID() functions for all core objects.
- Add permissions for catcher in throw function, e.g. to ref_up/catch, call, attach to reactor...
- Set object owner to catcher in throw function of surface, window and palette objects for now,
but only if the owner has not been set yet. This is enough for the time being.
- Check object owner in lookup functions and fail if owner is set, but does not match.
- Turn CoreGraphicsState into a FusionObject to handle reference counting and to get rid of
the custom creation/throw/catch code etc.
- Add CoreGraphicsStateClient_Deinit().
- Add CoreLayer::GetPrimaryContext().
- Add CoreLayerRegion::GetSurface() to add surface permissions to region owner.
- Add CoreSurface::GetPalette() to add palette permissions to surface owner.
- Add CoreWindow::GetSurface() to add surface permissions to window owner.
- Add special code for parent and top level window in DFBWindowDescription passing of
CoreLayerContext::CreateWindow(). The windows are passed as object arguments to go
through the object ownership checks on dispatcher side when looked up by id.
- Remove LockBuffer and UnlockBuffer from CoreSurface interface and use dfb_surface_lock_buffer()
at all locations again.
- Add CoreSurface::PreLockBuffer(), PreReadBuffer() and PreWriteBuffer() doing all work that
needs to write to shared memory, e.g. allocating a buffer, syncing allocations, syncing with
accelerator, and then returning the index of the allocation to be used. Call these new functions
from dfb_surface_buffer_lock/read/write() and then call into surface pool implementation locally.
- Add special code for parent window and keys in CoreWindowConfig passing of CoreWindow::SetConfig().
The window is passed as object argument to go through the object ownership checks on dispatcher
side when looked up by id. Separately pass the keys as another argument to have it copied and set
the pointer in a copy of the config on the dispatcher side.
- Add attach/detach permission for everyone to input devices.
- Fix ref up/down for input devices changing from global to local counting.
- Add ref up/down permission for everyone to input devices.
- Add execute permission for everyone to layer call.
- Remove preallocated surface pool for now, instead create a normal surface and copy the data
from preallocated area to new surface buffers. This also reenables acceleration for preallocated
surfaces which had been broken since DirectFB 1.2. In future versions there will be proper
support for preallocated surfaces again.
- Refactor local and shared surface pools and only use local pool in single app and only shared
pool in multi app build.
- The local surface pool has been heavily simplified to just do the malloc/free instead of the
FusionCall code etc.
- The shared surface pool has been reimplemented to create a file in tmpfs per surface buffer
allocation that is writable by slaves, since all Fusion SHM Pools are read only now! This
avoids security holes as no heap information is writable and allows for more fine grained
permission management per surface buffer. The tmpfs files are currently mapped/unmapped on
Lock/Unlock.
- Add CSPCAPS_READ and CSPCAPS_WRITE being set automatically when the surface pool provides
a Read and Write function.
Fusion
- Use new security mechanism in linux-fusion 8.5.0
- Add generic fusion_entry_add_permissions() with plain bit mask.
- Add per entity type functions, e.g. fusion_call_add_permissions() with specific bit mask.
- Map shared shared root page read only in slaves.
- Remove writable flag in shared memory pools (all read only in secure mode). This change
is needed as the heap information was writable and therefore not secure enough. Writable
shared memory will only exist outside of shared memory pools, e.g. a separate file per
surface buffer allocation.
- Enforce shared memory permissions on file system level, using 0640 instead of 0660, so the
master may be run as a different user, but with the slaves being in the same group, see also
the shmfile-group option to control which group is being used.
- Add a field to FusionObject to store the owner's FusionID. At the moment this stays zero
until it is set.
- For now, all skirmishs have default permission to allow lock/unlock for all other Fusionees.
Flux
- Generate TypeName_GetID( ptr ) instead of ptr->object.id.
1.5.1
-----
API | IDirectFBSurface
- Add extended source/destination color keying, no SW implementation so far.
- Add DSBLIT_SRC_COLORKEY_EXTENDED and DSBLIT_DST_COLORKEY_EXTENDED.
- Add DFBColorKeyPolarity with DEFAULT and OTHER.
- Add DFBColorKeyExtended with polarity and lower/upper color.
- Add IDirectFBSurface::SetSrcColorKeyExtended() and SetDstColorKeyExtended().
API | IDirectFBSurface
- Add special monochrome rendering function for characters: DrawMonoGlyphs(). No SW implementation yet.
API | IDirectFBSurface
- Add DSBLIT_SRC_COLORMATRIX and SetSrcColorMatrix(). No SW implementation yet.
API | IDirectFBSurface
- Add DSBLIT_SRC_CONVOLUTION, SetSrcConvolution() and DFBConvolutionFilter with a 3x3 kernel, scale and bias. No SW implementation yet.
API | IDirectFBSurface
- Add RGBAF88871 pixel format support (F is flashing bit, e.g. for ARIB CC)
Fusion
- Fix assertion in single app fusion_call_destroy().
1.5.0
-----
API extensions for stereoscopic viewing
- Add DLCAPS_LR_MONO and DLCAPS_STEREO.
- Add DLOP_LR_MONO and DLOP_STEREO.
- Add DSCAPS_STEREO (both left & right buffers are allocated).
- Add DWCAPS_LR_MONO and DWCAPS_STEREO.
- Add DLSO_FIXED_LIMIT and DWSO_FIXED_LIMIT.
- Add DSECONF_FRAMING.
- Add DFBScreenEncoderPictureFraming (MONO, STEREO_PACKED/HORIZ/VERT and STEREO_SEQUENTIAL for HDMI 1.4).
- Add framing to DFBScreenEncoderConfig.
- Add IDirectFBDisplayLayer::GetStereoDepth() and SetStereoDepth().
- Add DFBSurfaceStereoEye (LEFT and RIGHT).
- Add IDirectFBSurface::GetStereoEye() and SetStereoEye().
- Add IDirectFBSurface::FlipStereo().
- Add IDirectFBWindow::GetStereoDepth() and SetStereoDepth().
Color Space extension
- Add DFBSurfaceColorSpace (RGB, BT601, BT601_FULLRANGE and BT709).
- Add DSDESC_COLORSPACE.
- Add DFB_COLOR_IS_RGB and DFB_COLOR_IS_YUV.
- Add DFB_COLORSPACE_IS_COMPATIBLE and DFB_COLORSPACE_DEFAULT.
- Add colorspace to DFBSurfaceDescription.
- Add colorspace to DFBWindowDescription.
- Add DLCONF_COLORSPACE.
- Add colorspace to DFBDisplayLayerConfig.
- Add dfb_colorspace_name().
- Add colorspace argument to dfb_surface_create_simple().
IDirectFBFont
- Add GetUnderline() to get the position and thickness of the underline.
- Add DFFA_STYLE_ITALIC to load italic style from same file.
- Add DFFA_VERTICAL_LAYOUT to load vertical layout.
IDirectFBSurface
- Add DSRO_WRITE_MASK_BITS and SetWriteMaskBits().
- Add SetRop() with DFBSurfaceRopCode, DFBSurfacePatternMode, fg/bg color and pattern bits
- Add DSPF_ABGR
DirectFBGL2
- Add new interfaces for better OpenGL integration.
API
- Add DFBBox (x1, y1, x2, y2), a rectangle including the top left but not the bottom right endpoint.
- Add lots of macros for geometry, types, etc.
- Add lots of utility functions, make some inline.
- Add DFXL_FILLQUADRANGLE (only internally used so far).
- Add DFBSurfaceID.
- Add DFB_MASK_BYTE0-3 macros, e.g. for SetWriteMaskBits()
Water
- Initial checkin of Water API and simple test implementation.
IDirectFBWindows
- Add extension introducing DFBWindowsWatcher registering, also proxy code.
DFBWindowsWatcher is a function pointer table that can be filled by a client
application to receive all information about the window stack, windows, configs,
states, focus changes etc...
libdirect
- Lots of abstractions added for threads, mutexes, wait queues, files and many more...
- Add fastlz based compression/decompression.
Fusion
- Defer calls from kernel (destructors) to a separate thread.
- Implement fusion_reactor_attach/dispatch_channel() for single app mode.
- Introduce fusion_call_execute3() with variable return data.
A new call handler type gets return pointer and size to return blocks
of data to the caller, instead of the single int value.
- Add reference passing via throw and catch.
A Fusionee having a local reference may call fusion_ref_throw() with
another Fusionee's ID as catcher argument. That Fusionee may then
call fusion_ref_catch() which will remove that local reference of the
thrower. The catcher has to get a local reference itself beforehand,
otherwise the reference is just being removed.
Secure Fusion
- New run time option 'secure-fusion' to select new secure fusion mode
- Mount shared memory pools read only in slaves.
- Use FusionCall v3 for IPC calls instead of modifying shared memory directly
- Flux generates code for replacing all direct core calls by interfaces, more details in Secure Fusion documentation
Voodoo
- Introduce VoodooLink for abstraction of transport, implemented for Win32 and Unix.
- Add VoodooPlayAddressType, VoodooPlayAddress, VOODOO_PLAY_INET_ADDR and voodoo_play_from_inet_addr().
- Add "play-broadcast" option to force a certain address to be used for discovery.
- Single IO thread instead of two, VoodooLink with SendReceive/WakeUp methods.
- Rework Voodoo code using C++, with old C API as wrapper.
- Add a lower level packet layer with transparent compression support.
- New runtime option 'compression-min', when non-zero compress packets with minimum size (default zero, no compression).
- New runtime option 'link-raw' to initiate a connection with old base layer.
- Improved performance using thread local output buffer (async bench 4x speed).
- Compatibility with old and new base protocol, auto compression etc.
- Improve raw connection code, big speedup.
- Major cleanup, optimizations, bug fixes...
- Introduce VoodooDispatcher with thread based implementation
- Add 'link-packet' option to force packet mode link.
- Major improvements, fixes for disconnect, resource cleanup, ref counting...
With these changes you can run a single process dfbproxy and connect with multiple
clients, spawning multiple threads in the server.
- Add voodoo_link_init_local() for Unix Domain sockets.
Proxy
- Implement asynchronous flipping control, e.g. to avoid input lags
- Major improvements, fixes for ref counting, cleanup... IDirectFBDisplayLayer::SetBackgroundMode/Image...
- Add resource-id to be used for surfaces if not specified by application (client config).
Software Renderer
- Optimize fast path ARGB SrcOver and add fast path ARGB SrcOver premultiply.
- Implement TextureTriangles() and split code into a few files.
- Implement Blit() with matrix via gTextureTriangle() for now.
- Use Genefx_TextureTrianglesAffine() for BatchBlit() with matrix.
- DrawString() with matrix is working with ARGB font format now.
- Add software affine transform for StretchBlit
- Implement colorkeyed texture mapping, adding Sop_PFI_TEX_Kto_Dacc.
- Implement clipping in TextureTriangle, add TileBlit with matrix, more accuracy, fixes
Input
- When Shift is pressed in CapsLock state send small letters.
Mesa
- Add Mesa/DRM system module and GLES2 graphics acceleration
- Add IDirectFBGL2 and IDirectFBGL2Context implementation.
GLES2
- Added experimental fragment shader for source colorkeying.
- Fix color keying by using Andi's shader from gl driver.
- other shader fixes
- fix clipping
- fix off-by-one error in DrawRectangle()
- Enable GLES 2.0 acceleration with PVR2D/EGL
VDPAU
- New X11/VDPAU based system module derived from original X11 module.
- Add VDPAU accelerated rendering module (graphics driver).
- Multi application core support (using FusionCall2), major cleanup.
PVR2D
- Preliminary PVR2D system module, using PVR2DMemAlloc.
- Add graphics driver using PVR2DBlt API
VNC
- Almost reimplement VNC system module
PSP
- Initial PSP support added
X11
- Lower X11 surface pool priority as it is currently not writable for slaves.
- Add CSCAPS_PREFER_SHM for testing SecureFusion, otherwise local pool is used, breaking across processes
- Add missing detach from shm images, only master for now.
JPEG
- correctly setup iDCT scale factors for libjpeg version >= 7
MNG
- Add libmng based video provider.
dfbproxy
- Add few more super interfaces
dfbfx
- Add DSBF_SRCALPHASAT implementation, clamp sum of blending.
voodooplay
- Print vendor and model of each received info.
Flux
- Introduce new language for interfaces, with parser/code generator.
- Use Flux to generate all code for hiding FusionCalls behind local/proxy interfaces.
- The Flux compiler generates .cpp and .h containing abstract interface definition
and two implementations, one generated 'requestor' implementation making FusionCalls
and one 'real' implementation only being declared, implemented manually in _real.cpp file.
Next to these there's code generated to dispatch incoming FusionCalls to the real
implementation.
- A C wrapper is also generated for minimizing code changes outside of new files, but the
new C++ API will be used in 1.6 branch, when Secure Fusion has stabilized in 1.5 branch.
Debian Packaging
- first try of 1.5 packages
Win32
- Add Win32 support building the pure Voodoo version of DirectFB with MSVC!
- Added DIRECT/FUSION/VOODOO/DIRECTFB_API macro for imports/exports of public library functions.
- Changed static initializers and constructors/destructors to init/deinit functions called via DllMain.
1.4.6
-----
build fixes for new c++ code
use direct_snputs() instead of snprintf() (also fixes gcc warnings)
configure: add -std=gnu99 to CFLAGS
fonts: Reworked font cache for global cache row management.
map: added map implementation, like hash with custom objects as keys instead of primitives
graphics: Cleanup code by moving font state setup/restore into two functions.
font: Removed default font implementation, use of DGIFF is adviced instead.
list: Change direct_list_check_link to be a macro for getting the actual file:line in assertions.
mkdgifft: New tool to generate DGIFF from a description and image files.
linux_input: Fix build when HAVE_INPUT_ABSINFO is not defined though input_absinfo is available.
linux_input: Query vendor and product id.
input: Add vendor_id and product_id to DFBInputDeviceDescription.
DGIFF: Add blitting flags to structure in file (in place of padding), backward compatible.
generic: Show blend functions in Blit warning.
mkdgiff: Added option --premult (-p) for premultiplied alpha (ARGB only).
sh772x: Remove all jpeg related code
Merge branch 'master' of git+ssh://git.directfb.org/git/directfb/core/DirectFB
directfb-csource: Follow macro name change from previous commit.
dfbtest_font: Extended test to load font at different sizes.
Merge branch 'master' of git+ssh://git.directfb.org/git/directfb/core/DirectFB
header: add some comments to video provider structs to avoid errors in parser
gfx_util: Added dithering for non-RGB16 formats with separate configure option (only ARGB4444 so far)
Merge branch 'master' of git+ssh://git.directfb.org/git/directfb/core/DirectFB
IDirectFBFont: Added Dispose() to free resources used by the font, but keeps it usable, recreating resources as needed.
sh772x: Remove the hook for the BEU IRQ as it isn't used for anything and will soon conflict with kernel resources.
configure: add sh-) to detect toolchain (by [email protected])
Added systems driver specific shared surface data structure
Added surface_pool_get_local
Added layer enumerators to CoreSurfaceAccessorID & updated handling
Default WM clears pending region updates on process_updates failure
options: Added "max-font-rows" and "max-font-row-width" font cache limit options.
linux_input: set DICAPS_KEYS for all input devices with key events
x11: don't blank the cursor
tools: add option 'transparent' to directfb-csource
input: initialize linux_input key states
config: properly allocate memory for getcwd call
options: added "[no-]cursor-automation" for "Automated cursor show/hide for windowed primary surface"
util: added dfb_gfx_stretch_to()
directfb: updated banner, added optional DIRECTFB_VERSION_VENDOR display (just define via CPPFLAGS)
version 1.4.6
debug: added D_DEBUG_CHECK() macro implemented by new function direct_debug_check_domain()
1.4.5
-----
surface: flipping enhancements
- added DSFLIP_QUEUE and DSFLIP_FLUSH
- added CSNF_DISPLAY
- added dfb_surface_notify_display()
- added dfb_gfx_copy_regions() utility function
1.4.4
-----
voodoo: one more warning/error
voodoo: fixed warnings
voodoo: fixed some warnings
voodoo: don't redefine htons
modules: avoid warning by adding missing #ifdef DYNAMIC_LINKING
memcpy: don't include dfb_types.h
direct/interface: Add missing pthread_mutex_unlock call
mach64: Enable auto block writes with WRAM
linux_input: Ignore devices w/o caps
surfaces: Add some missing dfb_surface_buffer_lock_deinit() calls
input: compatibility with system X11
core: Fix to not hold region buffer lock for lifetime of layer
core: Added USB hot-plug support to linux_input and input core.
core: Enable Fusion message dispatching usage during shutdown
core window stack: Fixed _dfb_windowstack_inputdevice_listener race condition with layer context
core: Fix various layer context lock related deadlock scenarios
fusion: Fixed global reaction handling to prevent multiple removals
direct: ntohl normally already defined in either in.h or inet.h
generic: fix software rendering for DSBLIT_FLIP_HORIZONTAL | VERTICAL
generic: use explicit indexes when initialising arrays based on pixelformat
generic: make function tables const where possible
generic: whitespace
pixelformats: add DSPF_YV16
tests: Added simple rectangle filling test.
build: added LIBPNG_CFLAGS to some Makefiles
voodoo: no __swap16
direct: use kill, no sigqueue
thread: added DIRECT_BUILD_NO_PTHREAD_CANCEL
thread: check for PTHREAD_EXPLICIT_SCHED
IDirectFBSurface_Window: use DirectThread for legacy flipping thread
conf: use unsigned long
fusion_bench: use pthread_mutexattr_t for recursive mutex initialization
direct: use sigqueue on own tid and if that returns use exit_group or _exit
voodoo: define htons ourselves
direct: define ntohl ourselves
voodoo: check for EAI_ADDRFAMILY
direct: include <sys/syscall.h>
direct: check for EAI_ADDRFAMILY
direct: use non-recursive mutex for interfaces lock
direct: use fallback killpg
direct: check for signal.h
jpeg: correctly setup iDCT downscale for libjpeg version < 7
fbdev: prevent assertion in debug mode
fusion/ref: prevent invalid assertion when destroying a ref
jpeg: fix libjpeg >= v7 usage
layers: Fix for showing unitialized buffer and superfluous clear at startup.
fusion/lock: fix single app memory corruption
fusion: fix compiler warning
generic: Fixed wrong conversion from A8 to RGBA5551
configure.in: fix --enable-sse help message
convert: handle DSPF_A8 in dfb_pixel_from_color() and dfb_pixel_to_color()
header: add some comments for DWCAPS_COLOR
configure.in: little whitespace cleanup
configure.in: use pkg-config for libpng
configure.in: use AC_HELP_STRING() where appropriate
input: handle button devices with just up/down keys as remote control
FusionRef: Added debugging messages
surface: Debug in error paths of surface_buffer_write()
IDirectFBSurface: Allow negative pitch in Write()
gfx: added LUT8 to LUT8 dest ckey blit fallback 'generic' routine
RGB24: fixed injection
pixelformat: Added DSPF_A1_LSB
fusion lock: single app mode: 'name' storing overwrites pointers
font: drawstring clipping
IDirectFBWindow: Implemented SetSrc/DstGeometry() in Dispatcher/Requestor.
Voodoo: Implemented RLE compression for 16 and 32 bit Write() calls.
Voodoo: Fixed fork bombing until child process accepted connection.
dfbtest_font: Added simple font loading/rendering test.
Voodoo: Support fonts via network just like images (sending encoded/compressed data).
font: Support chunked reading of font data into ctx.content.
voodoo: Print error if manager is quit while waiting for a response.
fbdev: Fix RGBA5551 transparency offset
dfblayer: allow to set layer position and size using command line
IDirectFBScreen: add a DVO 656 'connector' type
dfbinspector: add DSPF_AVYU and DSPF_VYU pixelformats
dfbscreen: little fixes
gfx: LUT8 is not a YUV format
doc: surface: add some source code level documentation
warning: fix
surface: replace GetFramebufferOffset() with GetPhysicalAddress()
font: fix off-by-one bug in IDirectFBFont_GetStringBreak()
jpeg: implement decimated decode for software JPEG decoder
fbdev: Reduce useless nesting
fbdev: Fix mode setting
linux_input: Use MAX() instead of open coding it
linux_input: Don't check quitpipe fd is select() was interrupted
png: support for 1.4.x libpng
IDirectFBScreen: add IDirectFBScreen::GetVSyncCount()
screen: NTSC and PAL60 standards are defined as 59.94Hz not 60Hz
x11: improved GLX-detection
IDirectFBWindow::SetOptions: add DWOP_INPUTONLY
IDirectFBWindow::SetOptions bit handling bug
tests: add fusion_call
x11: preliminary support for IDirectFBScreen functions
font: add API to load font from databuffer
hash: move externally unused func to .c file
X11: add error detection, better depth support
voodoo: Fork server for each client to have different Fusionees with full resource cleanup on disconnect.
gfxcard: Accelerate matrix fallback if possible, for FillRectangle() and Blit().
generic: Added Sop_a4_Sto_Dacc implementation.
configure.in: fix X11 detection - use pkgconfig
1.4.3
-----
Wrap up all the changes since 1.4.2 in a nice package.
The big changes are the API changes: new pixelformats are added, a synchronisation
mechanism is added so you can sync backbufferless window updates, and batchblit2 is added
whichs supports hardware with double input - single output blitters; even
automatically in conjunction with the window composer of SaWMan.
API changes
- added the following pixelformats: YUV444P, AVYU, VYU, ARGB8565
- add IDirectFBWindow::BeginUpdates() and DSFLIP_ONCE to sync updates without double buffer space
- add DWEF_REPEAT flag to signal key repeat
- font: correct documentation of ret_str_length in GetStringBreak()
- IDirectFBSurface: Added DSBLIT_FLIP_HORIZONTAL and DSBLIT_FLIP_VERTICAL
- added IDirectFBSurface::BatchBlit2 (no software fallback offered).
- names: Added DFBScreenEncoderFrequency names.
modules
- add ShutdownLayer() and ShutdownScreen() functions to allow proper driver clean-up.
core
- add several previously added API functions to voodoo.
- shirmish: for single app, make skirmish a pointer so skirmishes can be copied
- colorhash: Commented out annoying assumptions
- surfaces: allow no windows on surfaceless layers
- for non-flipping fullscreen primary surface, force initial update as no Flip() may come from application.
graphics
- Fix combined blend/xor for drawing and blitting
- generic: Added StretchBlit with DSBLIT_FLIP_HORIZONTAL/VERTICAL.
- generic: fixes for big-endian handling for NV12/NV16/NV21
- generic: fixes for Bop_rgb32_toK_Aop_64 and Bop_PFI_OP_Aop_PFI(StoK)
- gfxcard: don't call gfxcard functions in no-hardware mode
- convert: In dfb_pixel_from_color() for RGB32/24 apply 0xffffff mask to fix color keying
- added gfx driver module unregister to reclaim space of unneeded libraries.
- sh772x: support for the new MS7724
- pxa3xx: rewrite of the kernel - userspace interface
- X11: support 3 layers
build system
- now supports compilation with debian packages
- build fix for systems without dynamic library support
- support recent tslib versions
- configure: support uclinux by treating it similar to linux
test suite
- dfbtest_sync: Added StretchBlit() to random operations.
- dfbscreen: Added resolution and frequency switch.
- dfbtest_mirror: Added test that uses scale/mirror with destination color keing.
- dfbtest_window: Added WarpCursor test.
general fixes
- plugged several static memory leaks
- unused header file clean-up
- bump SDL system driver to 1.4.x
- font: fix an UTF-8 problem in GetStringBreak
- debug: prevent deadlock in stack trace with SaWMan active
- input: fix for event completion when missing key ID
- PNG: Don't use fast path if pixels have to be premultiplied.
1.4.2
-----
Time for DirectFB 1.4.2. This release has three main changes.
The three main changes for this release are a changed font API for colours/outline,
the addition of an application_id to a window, and the new PXA3xxx graphics driver.
The full list of changes is:
API changes
- Add application_id to a window with IDirectFBWindow_Set/GetApplicationID.
This is a free-to-use parameter that, on change, results in a WM callback.
- allow the window config value "color" to colorize the window
- Fonts/Colors: API support for colors and multiple layers in a glyph implementing outlines.
Added DFBColorID and DCID_PRIMARY, DCID_OUTLINE
Added IDirectFBSurface::SetColors() that takes an array of IDs and an array of DFBColor
Added DFFA_OUTLINED for loading a font with support for outlines
Added DFDESC_OUTLINE_WIDTH and DFDESC_OUTLINE_OPACITY
Added outline_width and outline_opacity to DFBFontDescription
Added DSTF_OUTLINE that activates the outline per DrawString()
core
- Simplified font rendering in core using the current state instead of its own
drivers
- fbdev: fixed RGB fields sizes in dfb_fbdev_set_gamma_ramp
- pxa3xx: new driver for the 2D graphics accelerator found on PXA3xx processors.
hardware acceleration supported for line drawing, blending/blitting,
rectangle and triangle filling operations and anti-aliased text.
gfx
- Bugs in pixel format convertion fixed (primarily 16 bit formats)
- converting to RGB32 sets alpha to ff
- buffer unlocking fixes in error paths
- add support for the DESTINATION Porter/Duff rule
1.4.1
-----
General bugfixes, and the following:
fbdev
- fix for BGR555
- removal of old code, addition of debug messages.
- Check mode switching result in fbdevSetRegion() by reading back var info.
- Check amount of video memory in fbdevTestRegion() to avoid running over buggy drivers' framebuffer.
- fix spurious timing problems and lockups when vt-switching.
input
- allow linux_input to run without an fbdev system
API
- add resource ID also to window structure in case window has no surface
- add DWCAPS_COLOR: creates a window with a fixed argb colour but no surface
- add IDirectFBWindow::SetAssociation(): dynamic window association
configure
- add #ifdef to direct types to have a possibility to surpress these
- Allow LIBPNG_LIBS and LIBPNG_CFLAGS to overrule nasty libpng-config usage.
- Fixed missing JPEG=yes setting in configure when LIBJPEG is set manually.
1.4.0
-----
General bugfixes, code cleanups and memory leak plugging.
Core
- fix for possible segfault when unloading non-used input/gfx modules.
- fbdev: Allow accelerator ID to be overridden by (existing) runtime option.
- IDirectFBScreen::GetEncoderDescriptions: add enums for NTSC443 and 30Hz + 24Hz
- font: DFFA_NOBITMAP will inhibit loading bitmaps if we have vector fonts too.
Input
- input: Implement driver_get_axis_info() in the linux-input driver
- vt/keyboard: Flush console input when not used; avoids kernel waking up
Gfx
- add optional dithering when loading images into RGB16 surfaces
- surface rotation: more complete support for 16-bit formats
- sis315: support for XGI Z series chip, STRETCHBLIT, and big endian handling
- matrox: use of BES guarantees atomic, tear-free triple buffering
Tools
- directfb-csource: add option to dither RGB16 images
Build Environment
- add missing include path for builddir != srcdir
- libtool for modules: use -module instead of -export-dynamic, since we only dlopen.
1.3.1
-----
Fusion
- update to use new 'unified' fusion kernel module.
When using multi-app, please use fusion 8.1.1 or newer.
- fixed skirmish wait argument not taken as msec but usec
Config
- added 'include' option, to include config files.
- added config option to override module search dir.
- read /proc/self/cmdline if DirectFBInit() does not receive argv/argc.
- added option to override initial screen size.
- Fix build when srcdir != builddir.
Core
- Added IDirectFBSurface::Read and ::Write
- better out-of-memory error handling
- fixed alpha handling for palette SetEntriesYUV
- rectified changes to surface policy in case a surface is allocated again, of reallocated
- fixed memory leak in local "System Memory" pool when deallocating due to IDirectFB::Release
- fix software blending bug when modifying both source and destination
- IDirectFBDisplayLayer::SetSourceRectangle for non-scalable surfaces: change dst size too.
- surfaces: Fixed missing initialization of bridge pointer, crashing when no bridge is available.
- surfaces: clean-up local pool on 'leave' and 'destroy'
- gfx: added RGBA4444 support
- default font: Support premultiplied font formats.
Direct
- include ARM memcpy routines (big endian only)
Documentation
- added documentation for blend functions and some desktop-buffer-mode options
- directfbrc.5: Document triple and windows desktop-buffer-mode options.
Gfxsystems
- matrox: Wrong chroma plane offset was being used with deinterlace blits.
- omap: Added omapfb.h to release zipfile.
- SH772x: LCD parameters not obtained via fbdev ioctl
- SH772x: improved JPEG Encode/decode performance, JPEG fixes, JPU by default disabled due to conflicts
- SH772x: detection broadened to SH772x revisions
- unichrome: support for accel stretchblit YUV->RGB for CX700/M/2.
Input
- Fix possible array overruns
- added direct_modules_unregister() when unloading the module
- linuxinput: Fix LED handling, Count KEY_M
- font loading: Support premultiplied font formats.
- Video4Linux: add sources to release zipfile. Conform v4l and v4l2 to new core architecture.
- zytronic: added zytronic touch screen driver.
- vt: Move the keyboard XLATE/MEDIUMRAW handling to the vt code, to allow concurrent input.
- input: correctly read modifiers for load_keymap
- keyboard: added setting/loading of keyboard keymaps via IDirectFBInputDevice
Systems
- fbdev: Fixes for pan & zoom functionality
- fbdev: corrected ioctl error handling: now stops on error.
- fbdev: Test non-primary layer allocations
- fbdev: use directfbrc for initial screen size, if specified.
- x11: fixes for glx handling, additional logging
- x11: Remember each GLXContext's drawable and set update flag only if it changed.
- x11: Manage second GLX context per thread via another surface accessor ID.
Tools
- dfbdump: fixed to show correct buffer allocation sizes for certain formats.
- dfbinfo: now shows multiple encoder types correctly
Window Manager
- default: Fix DLBM_TILE clipping
- default: Fixed advanced blending with only DSBLIT_BLEND_COLORALPHA being used.
- default: Added Meta-R for window rotation.
1.3.0
-----
API | IDirectFBDisplayLayer
- Added GetRotation() to query the layer rotation.
API | IDirectFBSurface
- Added DSBLIT_ROTATE90 and DSBLIT_ROTATE270. Thanks to Young Hoon for original patch!
- Added DFBSurfaceHintFlags for optimized allocation, format selection etc.
- Added DSDESC_HINTS to DFBSurfaceDescriptionFlags and 'hints' to DFBSurfaceDescription.
- Implemented DSHF_FONT by selecting the configured font format and premultiplication.
- Added DSCAPS_ROTATED to allocate back buffers with width/height swapped (unimplemented).
API | IDirectFBWindow
- Added SetRotation() for 90, 180 and 270 degree rotation per window.
Thanks to Young Hoon for the original patch!
- Added sub window support with each sub window having its own surface (one level only for DirectFB 1.4)...
- Added DWCAPS_SUBWINDOW, DWDESC_TOPLEVEL_ID and "toplevel_id" to DFBWindowDescription.
Manage ref to top level window and vector of sub windows in window core, but leave scaling,
translation and clipping of sub window bounds based on top level bounds to the WM module.
- Added DWOP_FOLLOW_BOUNDS to make bounds follow the parent window (only for window association, sub windows always follow).
Runtime Options
- Allow '90' and '270' for "layer-rotate" option.
Graphics Core
- Implement proper clipping for rotated blits of 90, 180 or 270 degree.
Layer Core
- Implement layer rotation using DSCAPS_ROTATED if available, otherwise using rotated window stack.
With just a single buffer (frontonly), it always uses rotation of the window stack.
Thanks to Young Hoon for the original patch!
- Added magic value to CoreLayerContext structure, improved debug messages.
- Fixed missing lock on surface structure around dfb_surface_allocation_update() call.
Surface Core
- Added Surface Pool Bridge[tm] technology to speed up transfer between pools.
New API can be implemented to do optimized transfer from one surface pool to another.
CheckTransfer() is called to probe each registered CoreSurfacePoolBridge.
CoreSurfacePoolTransfer is allocated with one or more rectangles to be transfered.
StartTransfer() and FinishTransfer() are used to actually execute the transfer
which could be queued, but is synchronous at the moment (Start+Finish).
- Implemented dfb_surface_buffer_write() using Write() on allocation.
- New algorithm for finding the allocation which to Write() to, using last read
allocation or other up to date allocation.
- Remember last read allocation for better negotiation in case of multiple up to
date allocations.
- Implemented dfb_surface_buffer_read() using Read() on allocation
- Added dfb_surface_buffer_lock_deinit(), moved out format conversion.
Window Core
- Added magic value to CoreWindow.
- Set magic value in CoreWindow before calling WM functions.
- Added lock and ref around dfb_wm_close_stack() in dfb_wm_close_all_stacks(), added context magic and lock assertions everywhere!
Pixel Formats
- Added dfb_convert_to_rgb24() and dfb_convert_to_a8(), used for surface dumps to .ppm files.
Software Rendering
- Started implementation of DSBLIT_ROTATE90, DSBLIT_ROTATE180 and DSBLIT_ROTATE270 for all blitting flags...
- Disable MMX functions not supporting rotation (Ostep/Dstep) properly.
Utilities
- Added D_UTIL_SWAP(a,b) to exchange values.
- Added dfb_region_from_rotated(), dfb_rectangle_from_rotated() and dfb_point_from_rotated_region().
- Replaced dfb_back_to_front_copy_180() by dfb_back_to_front_copy_rotation() with extra argument.
Thanks to Young Hoon for the original patch!
OpenGL Driver
- New accelerated driver using OpenGL!
PNG Image Provider
- Use dfb_surface_write_buffer() if possible.
Default WM
- Implement stack rotation and window rotation, thanks to Young Hoon for the original patch!
- In window_at_pointer() use dfb_surface_read_buffer() with 1x1 rectangle instead of lock/unlock.
UniQuE WM
- Added experimental border event handling in test_foo program to move/raise any window :)
- Use dfb_surface_write_buffer() instead of lock/memcpy/unlock for border images (foo).
- Unload foo surface (border tiles) during master shutdown.
X11 System
- Full featured OpenGL based acceleration via GLX!
- Implemented Surface Pool Bridge for fast transfer between XShmImage and GLX pool.
- Use XShmCreatePixmap() and XCopyArea() instead of XShmGet/PutImage() allowing partial transfers in both directions!
- Also tried to make multi application working, but it seems that for an X11 Pixmap there can
only be one process doing a glXCreatePixmap() which also does not allow the GLXPixmap to be shared :(
dfbdump tool
- Show layer and window rotation.
dfbtest_window tool
- Added new program for testing window and sub window features :)
- Added more options, window destroy test and proper cleanup.
- Added test that hides the top level window and shows it again.
- New option to pass window caps for top or sub window.
- Enhanced testing and logging code. Run most tests on sub window, too.
- Added advanced window geometry tests.
- Added options for setting window options and for window association.
- Implemented selection of individual tests for top/sub window and added option to wait at the end.
1.2.6
-----
Core
- Call fusion_stop_dispatcher() before destroying pools to fix lots of shutdown issues.
WM Core
- Lots of useful debug messages.
libfusion
- Added fusion_stop_dispatcher() to be called before destroying pools etc... fixing lots of shutdown issues!
libdirect
- Added direct_thread_wait() / _notify(), _lock(), _unlock() and _terminate().
- Added some debug messages to DirectInterface code.
Utilities
- Added dfb_updates_get_rectangles() for convenience, doing bounding box trade off etc...
X11 System
- Fixed remaining crash with expose events that ran into a NULL window.
1.2.5
-----
Fonts
- Fixed alignment on eight byte boundary, thanks to Nikita Egorov!
Software Rendering
- Don't switch to fill rectangle in DrawLine() if matrix is used.
SH772x
- More fixes for JPEG encoding with up/down scaling and offset.
1.2.4
-----
API | IDirectFBInputDevice
- Added DFBInputDeviceAxisInfo(Flags) with DIAIF_ABS_MIN/MAX flags and abs_min/max fields.
- Added DIEF_MIN/MAX and min/max to DFBInputEvent, e.g. for axis boundaries.
API | IDirectFBWindow
- Added DWCAPS_NOFOCUS: window will never get focus or receive key events, unless it grabs them.
Runtime Options
- New option "[no-]software-trace" to show every stage of the software rendering pipeline.
Build Options
- Switch to pkg-config for SDL and FreeType2, thanks to Keith Mok!
Graphics Core
- Only have DSRO_MATRIX be mandatory for now. Other flags no longer prohibit acceleration.
Worst case was when DSRO_SMOOTH_UP/DOWNSCALE was turned on globally via "smooth-upscale" or "smooth-downscale"
runtime option which caused all operations to use software fallbacks, not only StretchBlit()!
Input Core
- Added GetAxisInfo() to InputDriverFuncs to query information about one axis.
Make use of it in input_driver.h only if driver has defined DFB_INPUTDRIVER_HAS_AXIS_INFO
to avoid having to change all input drivers.
- Query axis information from driver and put it into events.
Layer Core
- Set background mode of new contexts to DLBM_DONTCARE.
Pixel Formats
- Rewrote YCbCr<->RGB conversion routines without lookups which are much more expensive on embedded devices.
- Fixed many NV12, NV16 and NV21 code areas, mostly for big endian.
Software Rendering
- Rewrote Dacc_RGB_to_YCbCr_C and Dacc_YCbCr_to_RGB_C using Duff's device with macros.
Conversion also supports 4:4:4 by this change, not optimizing for 4:2:x cases.
- Get rid of YUV tables saving 5k binary size!
- Added optimized Bop_argb_blend_alphachannel_one_invsrc_Aop_argb() -> 6x speed
Utilities
- Added exported dfb_pixelformat_names[] and replaced relevant code.
libdirect
- Important fix for having multiple interface implementations in one module.
- Added file and symbol lookup functions to trace code for external usage.
New functions are direct_trace_lookup_file(), direct_trace_lookup_symbol() and
a convenience function combining the above called direct_trace_lookup_symbol_at().
- Fixed missing magic value in thread structure created for non-direct threads.
Davinci Driver
- In ARGB OSD dithering use task buffer and add missing locks.
- Raise OSD surface pool priority to allocate in frame buffer rather than /dev/mem.
- Workaround broken DSP cache invalidation function.
SH7722 Driver
- Build only for SH4.
- Fixed missing update of rendering destination buffer.
- Fixes for JPEG encoding with conversion, cleanups...
- Fixed software fallback for JPEG decoding to unsupported formats.
SH7723 Driver
- Added support for SH7723 to SH7722 driver and kernel module.
Default WM
- Use min/max values from absolute axis motion events if present.
- Implemented DWCAPS_NOFOCUS.