Hello community,

here is the log from the commit of package gfxboot for openSUSE:Factory checked 
in at 2017-09-13 21:35:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gfxboot (Old)
 and      /work/SRC/openSUSE:Factory/.gfxboot.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gfxboot"

Wed Sep 13 21:35:35 2017 rev:132 rq:523610 version:4.5.22

Changes:
--------
--- /work/SRC/openSUSE:Factory/gfxboot/gfxboot.changes  2017-05-17 
10:46:36.060268301 +0200
+++ /work/SRC/openSUSE:Factory/.gfxboot.new/gfxboot.changes     2017-09-13 
21:35:56.302891635 +0200
@@ -1,0 +2,18 @@
+Tue Sep 12 08:50:07 UTC 2017 - wfe...@opensuse.org
+
+- color bits detection: add workaround for broken vbe info
+- better fallback video mode selection
+- 4.5.22
+
+--------------------------------------------------------------------
+Tue Sep 12 08:50:07 UTC 2017 - opensuse-packag...@opensuse.org
+
+- bincode: Fix coreboot LFB mode
+
+--------------------------------------------------------------------
+Tue Sep 12 08:50:07 UTC 2017 - wfe...@opensuse.org
+
+- merge gh#openSUSE/gfxboot#26
+- prefer linear framebuffer modes for drawing (bsc#980570)
+
+--------------------------------------------------------------------

Old:
----
  gfxboot-4.5.21.tar.xz

New:
----
  gfxboot-4.5.22.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gfxboot.spec ++++++
--- /var/tmp/diff_new_pack.WX4Vwe/_old  2017-09-13 21:36:14.456337466 +0200
+++ /var/tmp/diff_new_pack.WX4Vwe/_new  2017-09-13 21:36:14.456337466 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           gfxboot
-Version:        4.5.21
+Version:        4.5.22
 Release:        0
 Summary:        Graphical Boot Logo for GRUB, LILO and SYSLINUX
 License:        GPL-2.0+

++++++ KDE.tar.xz ++++++

++++++ SLED.tar.xz ++++++

++++++ SLES.tar.xz ++++++

++++++ examples.tar.xz ++++++

++++++ gfxboot-4.5.21.tar.xz -> gfxboot-4.5.22.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.5.21/VERSION new/gfxboot-4.5.22/VERSION
--- old/gfxboot-4.5.21/VERSION  2017-05-09 16:34:05.000000000 +0200
+++ new/gfxboot-4.5.22/VERSION  2017-09-12 10:50:07.000000000 +0200
@@ -1 +1 @@
-4.5.21
+4.5.22
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.5.21/bincode.asm 
new/gfxboot-4.5.22/bincode.asm
--- old/gfxboot-4.5.21/bincode.asm      2017-05-09 16:34:05.000000000 +0200
+++ new/gfxboot-4.5.22/bincode.asm      2017-09-12 10:50:07.000000000 +0200
@@ -312,10 +312,12 @@
 gfx_mode               dw 3
 ; != 0 if we're using a vbe mode (hi byte of gfx_mode)
 vbe_active             equ gfx_mode + 1
-pixel_bits             db 0            ; pixel size (8 or 16)
-color_bits             db 0            ; color bits (8, 15 or 16)
+pixel_bits             db 0            ; pixel size (8, 16, or 32)
+color_bits             db 0            ; color bits (8, 15, 16, or 24)
 pixel_bytes            dd 0            ; pixel size in bytes
 
+; framebuffer start
+framebuffer            dd 0            ; (lin)
 ; segment address of writeable window
 window_seg_w           dw 0
 ; segment address of readable window (= gfx_window_seg_w if 0)
@@ -324,6 +326,8 @@
 window_inc             db 0
 ; currently mapped window
 mapped_window          db 0
+; do we use the framebuffer for drawing?
+fb_active              db 0
 
 ; cursor position
 gfx_cur                        equ $           ; both x & y
@@ -3394,6 +3398,14 @@
                pop word [screen_width]
                push word [es:edi+14h]
                pop word [screen_height]
+               xor eax,eax
+               test word [gfx_mode],0x4000
+               jz set_mode_23
+               mov eax,[es:edi+28h]
+set_mode_23:
+               mov [framebuffer],eax
+               or eax,eax
+               setnz byte [fb_active]
 
                movzx eax,byte [es:edi+1dh]
                inc eax
@@ -3413,6 +3425,14 @@
                mov dh,[es:edi+1fh]             ; red
                add dh,[es:edi+21h]             ; green
                add dh,[es:edi+23h]             ; blue
+               mov dl,dh
+               add dl,[es:edi+25h]             ; reserved
+
+               ; workaround for broken VBE info
+               ; assume pixel size (ah) to be at least r+g+b+reserved bits (dl)
+               cmp dl,ah
+               jbe set_mode_40
+               mov ah,dl
                jmp set_mode_40
 set_mode_30:
                cmp al,4                        ; PL 8
@@ -3434,6 +3454,11 @@
                mov [pixel_bytes],ah
                mov [color_bits],dh
 
+               ; VBE linear framebuffer doesn't use win A / win B segments
+               ; skip the test and proceed
+               cmp byte [fb_active],0
+               jnz set_mode_60
+
                ; we check if win A is readable _and_ writable; if not, we want
                ; at least a writable win A and a readable win B
                ; other, even more silly variations are not supported
@@ -3479,6 +3504,7 @@
                jz set_mode_80
                mov [window_inc],al
                mov byte [mapped_window],0ffh
+set_mode_60:
                mov ax,4f02h
                mov bx,[gfx_mode]
                int 10h
@@ -3501,6 +3527,17 @@
 mode_init:
                ; graphics window selectors
 
+               cmp byte [fb_active],0
+               jz mode_init_20
+
+               mov eax,[framebuffer]
+               mov si,pm_seg.screen_w16
+               call set_gdt_base_pm
+               mov si,pm_seg.screen_r16
+               call set_gdt_base_pm
+               jmp mode_init_40
+
+mode_init_20:
                movzx eax,word [window_seg_w]
                shl eax,4
                mov si,pm_seg.screen_w16
@@ -3508,12 +3545,13 @@
 
                movzx ecx,word [window_seg_r]
                shl ecx,4
-               jz mode_init_05
+               jz mode_init_30
                mov eax,ecx
-mode_init_05:
+mode_init_30:
                mov si,pm_seg.screen_r16
                call set_gdt_base_pm
 
+mode_init_40:
                ; pixel get/set functions
 
                mov dword [setpixel],setpixel_8
@@ -7405,6 +7443,25 @@
                ret
 
 
+;; screen.framebuffer - ptr to framebuffer
+;
+; group: draw
+;
+; ( -- ptr1 )
+;
+; ptr1: ptr to framebuffer or undef if no fb mode is active
+;
+; example
+;   screen.framebuffer
+;
+
+               bits 32
+
+prim_screenframebuffer:
+               mov eax,[framebuffer]
+               jmp pr_getptr_or_none
+
+
 ;; screen.size - screen size in pixel
 ;
 ; group: gfx.screen
@@ -9608,10 +9665,23 @@
                jmp prim_setmode_80
 prim_setmode_30:
                xchg [gfx_mode],ax
+
+               ; try fb mode first
+               or byte [gfx_mode + 1],40h
+               push eax
+               call set_mode
+               pop eax
+               jnc prim_setmode_60
+
+prim_setmode_40:
+               ; fall back to windowed mode
+               and byte [gfx_mode + 1],~40h
                push eax
                call set_mode
                pop eax
                jnc prim_setmode_60
+
+                ; restore last mode
                xchg [gfx_mode],ax
                call set_mode
                stc
@@ -12400,6 +12470,32 @@
                jz set_win_90
                cmp [mapped_window],al
                jz set_win_90
+               cmp byte [fb_active],0
+               jz set_win_40
+               pusha
+               mov [mapped_window],al
+               mov ah,0
+               shl eax,10h
+               add eax,[framebuffer]
+               mov si,pm_seg.screen_w16
+               call set_gdt_base_pm
+               mov si,pm_seg.screen_r16
+               call set_gdt_base_pm
+
+               mov ax,fs
+               cmp ax,pm_seg.screen_r16
+               jnz set_win_10
+               mov fs,ax
+set_win_10:
+               mov ax,gs
+               cmp ax,pm_seg.screen_w16
+               jnz set_win_20
+               mov gs,ax
+set_win_20:
+
+               popa
+               jmp set_win_90
+set_win_40:
                pusha
                mov [mapped_window],al
                mov ah,[window_inc]
@@ -12821,6 +12917,23 @@
                movzx eax,word [rm_seg.es]
                shl eax,4
                add eax,ebp
+
+               push eax
+               mov eax,100h*16
+               call calloc
+               xchg eax,edi
+               pop eax
+
+               or edi,edi
+               jz cfont_init_90
+
+               ; copy font for faster access
+               mov esi,eax
+               mov eax,edi
+               mov ecx,100h*16
+               es rep movsb
+
+cfont_init_90:
                mov [cfont.lin],eax
 
                mov dword [cfont_height],16
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.5.21/changelog new/gfxboot-4.5.22/changelog
--- old/gfxboot-4.5.21/changelog        2017-05-09 16:34:05.000000000 +0200
+++ new/gfxboot-4.5.22/changelog        2017-09-12 10:50:07.000000000 +0200
@@ -1,3 +1,10 @@
+2017-06-21:    4.5.22
+       - merge pr gh#openSUSE/gfxboot#26
+       - better fallback video mode selection
+       - color bits detection: add workaround for broken vbe info
+       - bincode: Fix coreboot LFB mode
+       - prefer linear framebuffer modes for drawing (bsc #980570)
+
 2017-05-09:    4.5.21
        - merge pr gh#openSUSE/gfxboot#24
        - fix UK keyboard setting (bsc #1033202)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gfxboot-4.5.21/mk_vocabulary 
new/gfxboot-4.5.22/mk_vocabulary
--- old/gfxboot-4.5.21/mk_vocabulary    2017-05-09 16:34:05.000000000 +0200
+++ new/gfxboot-4.5.22/mk_vocabulary    2017-09-12 10:50:07.000000000 +0200
@@ -17,7 +17,7 @@
   trace dtrace
   malloc free realloc memsize dumpmem
   gettype settype
-  screen.size image.colors vscreen.size monitorsize displaysizes
+  screen.size image.colors vscreen.size monitorsize displaysizes 
screen.framebuffer
   moveto currentpoint lineto setcolor currentcolor putpixel getpixel
   setfont currentfont fontheight strsize show settextmodecolor
   image loadpalette setpalette getpalette

++++++ openSUSE.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/themes/openSUSE/src/common.inc 
new/themes/openSUSE/src/common.inc
--- old/themes/openSUSE/src/common.inc  2017-05-09 16:34:05.000000000 +0200
+++ new/themes/openSUSE/src/common.inc  2017-09-12 10:50:07.000000000 +0200
@@ -1599,6 +1599,47 @@
 
 
 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+% Set video mode.
+%
+% Prefer 32 bit mode with fallback to 16 bit.
+%
+% ( width height -- true|false )
+%
+/set_videomode {
+  over over
+  32 findmode setmode {
+    pop pop true
+  } {
+    16 findmode setmode
+  } ifelse
+} def
+
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+% Find fallback video mode.
+%
+% Pick first mode that is at least 640x480.
+%
+% Return 0 0 if no mode found.
+%
+% ( -- width height )
+%
+/fallback_videomode {
+  0 1 videomodes {
+    videomodeinfo .undef eq {
+     pop
+    } {
+      pop
+      over 640 ge over 480 ge and { return } if
+    } ifelse
+    pop pop
+  } for
+
+  0 0
+} def
+
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 % Set global config variables.
 %
@@ -1618,20 +1659,17 @@
 
 /screen.fallback false def
 
-config.screen.width config.screen.height 32 findmode setmode not {
-  config.screen.width config.screen.height 16 findmode setmode not {
-    /screen.fallback true def
-    640 480 16 findmode setmode not {
-      640 480 32 findmode setmode not {
-        false .end
-      } if
-    } if
-  } if
+config.screen.width config.screen.height set_videomode not {
+  fallback_videomode dup 0 eq { pop pop false .end } if
+  set_videomode not { false .end } if
+  /screen.fallback true def
 } if
 
 % prepend fallback section to layout section list
 screen.fallback {
-  /gfxconfig.layout [ "640x480" gfxconfig.layout { } forall ] gfxconfig.layout 
free def
+  /fb_tmp_buf 64 string def
+  screen.size exch "%dx%d" fb_tmp_buf sprintf
+  /gfxconfig.layout [ fb_tmp_buf gfxconfig.layout { } forall ] 
gfxconfig.layout free def
 } if
 
 

++++++ upstream.tar.xz ++++++


Reply via email to