Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana

Gelip 02 Jan 2019 23:43 1827 4
  • #1
    Gelip
    Level 33  
    Chciałbym zmodyfikować bios starej karty GeForce2 MX400. Pobrałem Nibitor ale ten nie obsługuje tak starych kart - rozpoznaje chyba tylko tekst wyświetlany przy starcie komputera na ekranie. Znalazłem też program X-BIOS Editor (Ray Adams) ale tam nie ma opcji, która mnie interesuje a mianowicie: Non-Native panel control

    Znalazłem artykuł z 2001 dotyczący modyfikacji biosu GeForce2:
    Wersja angielska (nie działają linki do załączników ani obrazki): BiosMod - Initiation to nVidia BIOS modification
    Wersja francuska (działają linki do załączników i obrazki): BiosMod - Initiation à la modification de BIOS nVidia
    Pobrałem wszystkie pliki i wypakowałem do jednego folderu jak pisze w instrukcji. W programie są opcje, które mnie interesują Non-Native Panel Control i Force Adapter Scalling:
    Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana
    Chodzi o to iż na monitorze 16:9 FullHD przez kabel DSub obraz GeForce2 z ekranu POST/CMOS Setup lub MS-DOS jest rozciągnięty przez co obraz nie wygląda poprawnie. Chciałbym aby nie rozciągał obrazu 4:3 na cały ekran 16:9 czyli aby zachował aspect-ratio i były czarne pasy po bokach.
  • #3
    Gelip
    Level 33  
    Niestety okazało się iż nie mam jak sprawdzić tych opcji na GeForce2 MX400 ponieważ obie moje karty mają nietypowe chipy firmware - jeden to OTP AT27C512R a drugi SST 27SF010 wymaga chyba 12V do programowania. W każdym bądź razie program nvflash nie rozpoznaje obu chipów. Próbowałem kilku wersji 4.28, 4.41 i 4.46 - tak że z tymi kartami nic się nie da zrobić.

    Wziąłem na warsztat inną kartę GeForce - 6200 PCIe. Znalazłem pewien sposób aby wyłączyć skalowanie monitora LCD w MS-DOS na kartach NVIDIA - to działa tylko przez połączenie cyfrowe DVI-DVI lub DVI-HDMI. Przy połączeniu analogowym DSub-DSub niestety nie działa. RayeR napisał programik NVSC.COM (dosłownie kilka linii w asemblerze) który to umożliwia:
    Spoiler:
    Code:
    ; NVSC - DOS NVidia Scaler control by Martin Rehak, 13.1.2009
    
    ;
    ; This real-mode DOS program will enable the nVidia GPU to perform
    ; one of the following desired video display options on digital flat
    ; panel displays depending on the DOS command-line option entered.
    ;
    ; NVSC [option #]
    ;
    ; Option  "0" - NVidia GPU scaling enabled,  (default mode)
    ; Option  "1" - NVidia GPU scaling disabled, display centered
    ; Option  "2" - NVidia GPU scaling disabled, display in uppper left corner

            MOV     AX,4F14h        ; nVidia VESA VBE OEM function
            MOV     BX,0102h        ; BL: subfunction code (02h = set/get DFP expansion mode)
                                    ; BH: subfunction mode (00h = get expansion mode)
                                    ;                      (01h = set expansion mode)
            XOR     CX,CX           ; prepare CX register
            MOV     CL,[0082h]      ; get desired nVidia scaler option mode from DOS command-line
            SUB     CL,'0'          ; ASCII to hex adjust
                                    ; CX: 00h = display scaling on (default mode)
                                    ; CX: 01h = display scaling off and centered
                                    ; CX: 02h = display scaling off and top left corner
            INT     10h             ; perform VESA BIOS call
            INT     20h             ; exit to DOS

    Aby wycentrować obraz wystarczy odpalić tak:
    Code:
    nvsc 1

    Aby przywrócić ustawienia domyślne czy skalowanie:
    Code:
    nvsc 0

    Jest jeszcze opcja 2 ale źle wyświetla obraz tzn. wyświetla w lewym górnym rogu, wysokość i szerokość niby się zgadza ale na całej szerokości ekranu jest kolor tła MS-DOS. Opcja 1 czyli obraz wycentrowany działa dobrze. Po odpaleniu MS-DOS 6.22, użyciu nvsc 1 można odpalić GRUB4DOS (grub.exe) a obraz nadal jest wycentrowany więc można testować inne rozdzielczości. Sprawdzamy jakie są dostępne poleceniem vbeprobe np. same 32-bit - zapamiętujemy wartość hex trybu i możemy przełączyć się na daną rozdzielczość za pomocą graphicsmode 0xwartość. Dodatkowo warto zmienić tło na inne niż czarne np. zielony na niebieskim i wyczyścić ekran aby zobaczyć efekt:
    Code:
    color 26
    
    clear

    Próbowałem programu na karcie S3 UniChrome (zintegrowana na płycie VIA) ale niestety nie działa. Czy ktoś zna adresy hex VESA VBE OEM function innych producentów np. ATI, S3, Intel?
    Tutaj znalazłem ciekawy opis VESA i adresy 4Fxx ale nie ma nic o 4F14:
    The VESA BIOS interface is a software interface for detection capabilities, setting modes and setting the bank register.
    Spoiler:
    Code:
    The VESA BIOS interface is a software interface for detection capabilities,
    
    setting modes and setting the bank register.

    VESA 1.0   VESA Standard #VS891001
    VESA 1.1   VESA Standard #VS900602
    VESA 1.2   VESA Standard #VS911022
    VESA 2.0   VESA Standard

    ----------104F00-----------------------------
    INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
            AX = 4F00h
            ES:DI -> 256-byte buffer for SuperVGA information (see below)
    Return: AL = 4Fh function supported
            AH = status
                 00h successful
                 01h failed
                 02h (VBE 2) function not supported by current hardware config
                 03h (VBE 2) function invalid in current mode

    Format of SuperVGA information:
    Offset  Size      Description
     00h   4 BYTEs    Signature ('VESA'). For VBE 2.0 this field must be set to
                      "VBE2" before the call to fill in the version 2.0 fields
     04h    WORD      VESA version number
     06h    DWORD     pointer to OEM name
     0Ah   4 BYTEs    capabilities.
                      Bit  0  Set if the DAC can switch width, clear if it is
                              fixed 6bits per primary color
                           1  (VBE2) non-VGA controller
                           2  (VBE2) Programmed DAC with blank bit
     0Eh    DWORD     pointer to list of supported VESA and OEM video modes
                      Terminated with 0FFFFh.
     12h    WORD      Video memory in 64k blocks
    --- VBE v2.0 ---
     14h    WORD      OEM software version
     16h    DWORD     Pointer to vendor name
     1Ah    DWORD     Pointer to product name
     1Eh    DWORD     Pointer to product revision string
    100h  256 BYTEs   OEM scratchpad
    The buffer is defined as 256bytes for version 1.0 & 1.2, 262 bytes for version
     1.1 and 512 bytes for version 2.0. Note: Some VESA drivers have been known to
     write beoynd the end of the official buffer.
    ----------104F01-----------------------------
    INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
            AX = 4F01h
            CX = SuperVGA video mode
            ES:DI -> 256-byte buffer mode information (see below)
    Return: AL = 4Fh function supported
            AH = status
                 00h successful
                 01h failed

    Format of mode information:
    Offset Size     Description
     00h   WORD     mode attributes
                    bit 0: mode supported if set
                        1: optional information available if set
                        2: BIOS output supported if set
                        3: set if color, clear if monochrome
                        4: set if graphics mode, clear if text mode
                        5: (VBE2) non-VGA mode
                        6: (VBE2) No bank swiotching supported
                        7: (VBE2) Linear framebuffer mode supported
     02h   BYTE     window A attributes
                    bit 0: exists if set
                        1: readable if set
                        2: writable if set
                    bits 3-7 reserved
     03h   BYTE     window B attributes (as for window A)
     04h   WORD     window granularity in K
     06h   WORD     window size in K
     08h   WORD     start segment of window A
     0Ah   WORD     start segment of window B
     0Ch   DWORD -> FAR window positioning function (equivalent to AX=4F05h)
     10h   WORD     bytes per scan line
    ---remainder is optional for VESA modes, needed for OEM modes---
     12h   WORD     width in pixels
     14h   WORD     height in pixels
     16h   BYTE     width of character cell in pixels
     17h   BYTE     height of character cell in pixels
     18h   BYTE     number of memory planes
     19h   BYTE     number of bits per pixel
     1Ah   BYTE     number of banks
     1Bh   BYTE     memory model type
                       0 Text
                       1 CGA graphics
                       2 Hercules Graphics
                       3 EGA 16 color
                       4 Packed pixels
                       5 Non chain 4 256 color modes
                       6 Direct 15/16/24 bit
                       7 YUV (luminance-chrominance, alos called YIQ)
                   8-0Fh Reserved for VESA
                10h-0FFh Reserved for OEM
     1Ch   BYTE     size of bank in K
     1Dh   BYTE     number of image pages
     1Eh   BYTE     reserved(1)
    ------VBE v1.2+ --------------------------
     1Fh   BYTE     Red mask size
     20h   BYTE     Red mask position
     21h   BYTE     Green mask size
     22h   BYTE     Green mask position
     23h   BYTE     Blue mask size
     24h   BYTE     Blue mask position
     25h   BYTE     Reserved mask size
     26h   BYTE     Reserved mask position
     27h   BYTE     Direct Screen mode info
                    Bit  0  If set the color ramp is programmable, if clear fixed
                         1  If set the reserved field (as defined by Bytes 25-26h)
                            can be used by the application, if clear the field is
                            truly reserved.
    --- VBE v2.0 ---
     28h   DWORD    Physical address of linear video buffer
     2Ch   DWORD    Pointer to start of offscreen memory
     30h   WORD     Offscreen memory in Kbytes
    The buffer is defined as 256bytes
    ----------104F02-----------------------------
    INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
            AX = 4F02h
            BX = mode
                 bit 15 set means don't clear video memory
                 bit 14 (VBE2) set to enable linear framebuffer mode
    Return: AL = 4Fh function supported
            AH = status
                 00h successful
                 01h failed

    Values for VESA video mode:
      00h-FFh OEM video modes (see AH=00h)
     100h 640x400x256
     101h 640x480x256
     102h 800x600x16
     103h 800x600x256
     104h 1024x768x16
     105h 1024x768x256
     106h 1280x1024x16
     107h 1280x1024x256
     108h 80x60 text
     109h 132x25 text
     10Ah 132x43 text
     10Bh 132x50 text
     10Ch 132x60 text
     ------------ VBE v1.2+ ------------------
     10Dh 320x200 32k
     10Eh 320x200 64k
     10Fh 320x200 16M
     110h 640x480 32k
     111h 640x480 64k
     112h 640x480 16M
     113h 800x600 32k
     114h 800x600 64k
     115h 800x600 16M
     116h 1024x768 32k
     117h 1024x768 64k
     118h 1024x768 16M
     119h 1280x1024 32k
     11Ah 1280x1024 64k
     11Bh 1280x1024 16M
     ------------ VBE 2.0 --------------------
    81FFh Special full-memory access mode
          Mode 81FFh preserves the contents of video memory and gives access to
          the entire video memory. It is recommanded that mode 81FFh should be a
          packed pixel mode.

    ----------104F03-----------------------------
    INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
            AX = 4F03h
    Return: AL = 4Fh function supported
            AH = status
                 00h successful
                 01h failed
            BX = video mode (see AX=4F02h)
    ----------104F04-----------------------------
    INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
            AX = 4F04h
            DL = subfunction
                 00h get state buffer size
                     Return: BX = number of 64-byte blocks needed
                 01h save video states
                     ES:BX -> buffer
                 02h restore video states
                     ES:BX -> buffer
            CX = flags for states to save/restore
                  bit 0: video hardware state
                  bit 1: video BIOS data state
                  bit 2: video DAC state
                  bit 3: SuperVGA state
    Return: AL = 4Fh function supported
            AH = status
                 00h successful
                 01h failed
    ----------104F05-----------------------------
    INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
            AX = 4F05h
            BH = subfunction
                 00h select video memory window
                     DX = window address in video memory (in granularity units)
                 01h get video memory window
                     Return: DX = window address in video memory (in gran. units)
            BL = window number
                 00h window A
                 01h window B
    Return: AL = 4Fh function supported
            AH = status
                 00h successful
                 01h failed
    ----------104F06-----------------------------
    INT 10 - VESA SuperVGA BIOS 1.1+ - GET/SET LOGICAL SCAN LINE LENGTH
            AX = 4F06h
            BL = function
                 00h set scan line length
                     CX = desired width in pixels
                 01h get scan line length
                 02h (VBE 2) set scan line length
                     CX = desired width in bytes
                 03h (VBE 2) get maximum scan line length
    Return: AL = 4Fh if function supported
            AH = status
                 00h successful
                 01h failed
            BX = bytes per scan line
                 Maximum bytes per scan line for function 03h
            CX = number of pixels per scan line
                 Maximum pixels per scan line for function 03h
            DX = maximum number of scan lines
                 Unchaqnged for function 03h
    Notes: if the desired width is not achievable, the next larger width will be
           set. The scan line may be wider than the visible area of the screen
           this function is valid in text modes, provided that values are
           multiplied by the character cell width/height
    ----------104F07BH00-------------------------
    INT 10 - VESA SuperVGA BIOS 1.1+ - GET/SET DISPLAY START
            AX = 4F07h
            BH = 00h (reserved)
            BL = 00h (or 80h) set display start
                     CX = leftmost displayed pixel in scan line
                     DX = first displayed scan line
               = 01h get display start
                     Return: BH = 00h
                             CX = leftmost displayed pixel in scan line
                             DX = first displayed scan line
    Return: AL = 4Fh if function supported
            AH = status
                 00h successful
                 01h failed
    Note: this function is valid in text modes, provided that values are
          multiplied by the character cell width/height
    ----------104F08-----------------------------
    INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
            AX = 4F08h
            BL = function
                 00h  Set DAC palette width
                      BH = desired number of bits per primary color.
                 01h  Get DAC palette width
    Return: AL = 4Fh if function supported
            AH = status
            BH = Current number of bits per primary color (6 = Standard VGA)
    ----------104F09-----------------------------
    INT 10 - VESA SuperVGA BIOS v2.0+ - GET/SET PALETTE ENTRIES
            AX = 4F09h
            BL = function
                00h set palette
                01h get palette
                02h set secondary palette data
                03h get secondary palette data
                80h set palette during vertical retrace
            CX = number of entries to change
            DX = starting palette index
            ES:DI -> palette buffer (array of 4 bytes per entry)
                     Offset  Size   Description
                       00h   BYTE   Red byte
                       01h   BYTE   Green byte
                       02h   BYTE   Blue byte
                       03h   BYTE   Alpha or alignment byte
    Return: AL = 4Fh if function supported
            AH = status
                00h successful
                01h failed
    ----------104F0A-----------------------------
    INT 10 - VESA SuperVGA BIOS v2.0+ - GET PROTECTED-MODE CODE
            AX = 4F0Ah
            BX = function to be copied
                 0001h  set bank
                 0002h  set display start
                 0003h  set palette
    Return: AL = 4Fh if function supported
            AH = status
                00h successful
                    CX = number of bytes to copy
                    ES:DI -> code for requested function
                01h failed
    ----------104F10-----------------------------
    INT 10 - VESA DPMS - Display Power Management Extensions
            AX = 4F10h
            BL = 00h  Report VBE/PM Capabilities
                      ES:DI = 0000h:0000h
                      Return: BH = Power saving state signals supported:
                                   Bit 0  STAND BY supported if set
                                       1  SUSPEND supported if set
                                       2  OFF supported if set
                                       3  REDUCED On supported if set
                                          (Not supported in DPMS 1.0)
                              BL = VBE/PM Version number:
                                   Bit 0-3  Minor version
                                       4-7  Major version
                 01h  Set Display Power State
                      BH = Requested Power State:
                           00h  ON
                           01h  STAND BY
                           02h  SUSPEND
                           04h  OFF
                           08h  REDUCED ON (for flat screens)
                 02h  Get Display Power State
                      Return: BH = Display Power State
                                   00h  ON
                                   01h  STAND BY
                                   02h  SUSPEND
                                   04h  OFF
                                   08h  REDUCED ON (for flat screens)
    Return: AL = 4Fh if function supported
            AH = status
    ----------104FFF-----------------------------
    INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
            AX = 4FFFh
            DL = new state (00h off, 01h on)

    Podobno adres 4F14 to standard:
    INT 10 - VESA OEM Extensions - API
    Code:
    INT 10 - VESA OEM Extensions - API
    

       AX = 4F14h
       BL = function
           00h installation check / get capabilities
       other registers vary by function
    Return: varies by function
    Note:   this function is provided for OEMs to implement system-specific
         functionality in a VESA-compatible manner


    Dodano po 4 [godziny] 59 [minuty]:

    Udało mi się osiągnąć to samo ale za pomocą edycji biosu karty graficznej. Wystarczy otworzyć bios w programie NiBiTor - testowana wersja 6.03 i zaznaczyć dwie opcje: Force adapter scaling, Non-Native Panel Control
    Teraz od momentu włączenia komputera czyli na ekranie POST oraz w CMOS Setup, GRUB4DOS, iPXE, MS-DOS mam wyśrodkowany obraz 1:1 zamiast rozciągniętego na pełny ekran. Na ekranie FullHD 16:9 ekran POST czy MS-DOS w VGA 640x480 jest mały ale za to ostrość jak żyleta no i zachowane proporcje 4:3
    Po uruchomieniu 32 lub 64-bitowego systemu np. Windows sterownik karty graficznej przejmuje opcje skalowania.

    P.S. Zarówno na oryginalnym jak i modyfikowanym biosie nie da się ustawić w Windows na sterowniku 185.85 skalowania innego niż Używaj wbudowanego skalowania monitora:
    Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana

    Dodano po 2 [godziny] 18 [minuty]:

    Odnośnie PostScriptum to rozwiązałem problem. Próbowałem różnych sterowników:
    • 182.50 - nic się nie zmieniło
    • 307.83 - opcji skalowania w ogóle nie ma - ten sterownik wyszukuje G....e po zapytaniu GeForce 6200

    Natomiast po zapytaniu: nvidia 6200 xp znalazło mi link do wersji 71.89 ale skojarzyłem iż do starszej karty GeForce2 MX400 używam nowszego niż wyszukało dla 6200 czyli 77.72_win2kxp_international_whql.exe. Po zainstalowaniu tego sterownika mamy dostępne opcje skalowania i mogę włączyć opcję Wyświetlanie pośrodku ekranu:
    Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana
  • #4
    Gelip
    Level 33  
    Jednak nie do końca mnie to satysfakcjonuje. Wolałbym aby każda niższa rozdzielczość była skalowana po środku ekranu ale wykorzystując całą wysokość. Aby to działało już na ekranie POST i w DOS to pewnie trzeba inaczej edytować bios karty graficznej i/lub EDID w wyświetlaczu. Natomiast jeśli chodzi o Windows to okazało się iż opcja Skalowanie ze stałym stosunkiem krawędzi działa źle, tak wygląda np. rozdzielczość 800x600 na sterowniku 77.72 - obraz jest wyświetlany z lewej strony i ucięty z prawej:
    Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana

    Na nowszych sterownikach np. 84.21 aby opcje skalowania były dostępne trzeba wyłączyć opcję TRAKTUJ JAKO HDTV ale po włączeniu Skalowanie ze stałym stosunkiem krawędzi wyświetlacz przełącza się z trybu monitora w tryb HDTV z przeplotem (Interlaced) gdzie czcionka jest niewyraźna a kolory zamazane i nie da się tego używać jako monitora. Tak jak pisałem w poprzednim poście - na jeszcze nowszych sterownikach np. 185.85 opcje skalowania są niedostępne a na najnowszych 307.83 nie ma takiej opcji.

    Przetestowałem kilkanaście sterowników NVIDIA i żaden nie pomógł a gdy podłączyłem wyświetlacz do innego komputera z kartą zintegowaną Intel to taka sama funkcja skalowania działa bez problemu.

    Okazuje się iż jest to znany problem ze sterownikami NVIDIA i wyświetlaczami LG (chyba tylko takich z wbudowanym tunerem DVB-T MPEG4) w sytuacji gdy mamy podłączoną kartę graficzną przez DVI do wyświetlacza do portu HDMI.

    Standardowy EDID ma 128 bajtów, natomiast jeśli EDID ma 256 bajtów - jak w moim przypadku, dodatkowe 128 bajtów to rozszerzenie Extension CEA

    Sterowniki NVIDIA działają tak iż jeśli wykryją te rozszerzenie to niepoprawnie działa opcja skalowania z zachowaniem współczynnika proporcji bo wykrywają wyświetlacz jako telewizor a nie monitor i niepoprawnie interpretują dane z rozszerzenia CEA. W wyświetlaczach LG po wciśnięciu OK jest tak:
    • gdy wyświetlacz działa jako monitor to pokazuje np. 1920x1080@60Hz
    • gdy wyświetlacz działa jako HDTV pokazuje np. 16:9 1080i 60Hz
    Aby rozwiązać problem wystarczy wyłączyć używanie rozszerzenia CEA w systemie Windows za pomocą rejestru. Prawdopodobnie można też edytować EDID w wyświetlaczach, usuwając drugie 128 bajtów, niektóre na to pozwalają nawet przez kabel HDMI ale bezpieczniej jest użyć rejestru Windows. Przetestowane na:
    • system WinXP Pro x86 SP2
    • sterownik NVIDIA 77.72
    • karta graficzna PCIe GeForce 6200 TurboCache(TM)
    • wyświetlacz - rozdzielczość natywna FullHD 1920x1080, LG 22MT44DP
    • połączenie DVI-HDMI
    Najlepiej rozpakować sterownik 77.72_win2kxp_international_whql.exe i anulować instalację po rozpakowaniu, edytować plik nv4_disp.inf, który wprowadzi to ustawienie w czasie instalacji sterownika. Będziemy potrzebowali 4 bajty z EDID naszego monitora z offsetu 8-11. Można to odczytać na różne sposoby np. za pomocą programu Monitor Asset Manager, który po uruchomieniu powinien automatycznie odczytać zawartość EDID aktywnego wyświetlacza - patrz okno Display IDs, [Real-time...] i poniżej Raw Data:
    Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana
    • otwieramy plik .inf w Notatniku Windows
    • w sekcji [nv_SoftwareDeviceSettings] dodajemy taki wpis:
      Code:
      HKR,, OverrideEdidFlags0, %REG_BINARY%, xx,xx,xx,xx,00,00,FF,FF,04,00,00,00,7E,01,00

      gdzie xx,xx,xx,xx to nasze 4 bajty, u mnie tak:
      Code:
      HKR,, OverrideEdidFlags0, %REG_BINARY%, 1E,6D,C6,59,00,00,FF,FF,04,00,00,00,7E,01,00
    • zapisujemy zmiany i instalujemy sterownik
    • po instalacji i restarcie systemu funkcja skalowania Skalowanie ze stałym stosunkiem krawędzi powinna działać prawidłowo:
      Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana

    Wpis rejestru powoduje iż sterownik karty graficznej odczytuje tylko pierwsze 128 bajtów EDID z rejestru zamiast z monitora.
    Pomocne informacje znalazłem tutaj, gdzie w obu przypadkach problem dotyczył systemu Windows Vista, karty NVIDIA i wyświetlacza LG:
    image at resolution 1900x1200 is cropped and off-center
    Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana
    DVI to HDMI LCD distortion problem using EDID tweak

    Jak widać trick działa i na WinXP.
  • #5
    Gelip
    Level 33  
    Małe uaktualnienie. Nie sprawdzałem tego osobiście ale podobno jeśli karta graficzna ma na wyjściu HDMI lub DisplayPort wypuszczony dźwięk a wyświetlacz ma wbudowane głośniki to po zastosowaniu tego tricku z rejestrem może nie być dźwięku w głośnikach wyświetlacza. Prawdopodobnie dlatego iż ustawienia dotyczące możliwości dźwiękowych wyświetlacza są właśnie w rozszerzeniu EDID CEA-Extension, którego używanie ten trick wyłącza. Poniżej EDID HDMI monitora z ustawieniami Audio w rozszerzeniu CEA-Extension:
    Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana

    Dlatego zamiast wyłączać rozszerzenie CEA lepiej je edytować i jeśli się da wgrać EDID do wyświetlacza lub w systemach Windows od Vista w górę zastosować nadpisywanie całego EDID by Microsoft - How to Use an INF to Override the Monitor EDID (dla ułatwienia dodam iż taki sterownik .inf monitora potrafi stworzyć program Monitor Asset Manager ze zgranego EDID wyświetlacza)

    Niestety nie wiem, którą opcję w CEA-Extension poprawić aby skalowanie działało poprawnie.

    P.S. Jeśli wyświetlacz pozwala na edycję EDID przez kabel VGA lub HDMI to w prosty sposób po edycji można go podmienić za pomocą Linux'a i narzędzi i2c-tools oraz skryptu write-edid.sh. Przetestowane na Debian 9 amd64 z wyświetlaczem podłączonym do PC przez kabel VGA-VGA - zmieniłem tylko nazwę wyświetlacza. Po tym zabiegu Win7 rozpoznaje wyświetlacz ze zmienioną nazwą:
    Karty NVIDIA - wyśrodkowane rozdzielczości niższe niż natywana