[HOW TO] S3TC i otwarte sterowniki do kart graficznych

Awatar użytkownika
makson
Redaktor
Redaktor
Posty: 1538
Rejestracja: 23 mar 2009, 07:10
Płeć: Mężczyzna
Wersja Ubuntu: 16.04
Środowisko graficzne: XFCE
Architektura: x86_64

[HOW TO] S3TC i otwarte sterowniki do kart graficznych

Post autor: makson » 22 wrz 2011, 18:01

1. S3 Texture Compression jest wydajną i popularną metodą kompresji tekstur wykorzystywaną w grach komputerowych. Pomimo, iż została ona już wprowadzona w specyfikacji OpenGL 1.3, to nadal brak jest jej implementacji w otwartych sterownikach do kart graficznych na Linuksie. Powoduje to zdecydowane zmniejszenie ilości gier/programów, które działają na otwartych sterownikach. Brak tego rozszerzenia wynika z tego, że algorytm tej metody został opatentowany, a korzystanie z niego bez wykupienia odpowiedniej licencji byłoby nielegalne na terenie Stanów Zjednoczonych.
Na szczęście nie dotyczy to Polski, ani nawet całej Unii Europejskiej. Obsługę S3TC można bardzo łatwo "doinstalować" do otwartych sterowników, a niniejszy przewodnik opisze jak to zrobić.

2. Rozszerzeniem możliwości sterowników będziesz najprawdopodobniej zainteresowany, jeżeli posiadasz jedną z poniższych kart graficznych:

ATI/AMD

Kod: Zaznacz cały

Radeon 9500
Radeon 9500 Pro
Radeon 9700
Radeon 9700 Pro
Radeon 9600
Radeon 9600 Pro
Radeon 9800
Radeon 9800 Pro
Radeon 9800 XT
Radeon Xpress 200M
Radeon X300
Radeon X550
Radeon X1050
Radeon X600, M24
Radeon XPRESS 200/200M IGP
Radeon X700, M26 PCIE
Radeon X800 AGP
Radeon X800, M28 PCIE
Radeon X850 PCIE/AGP
Radeon X1550, X1550 64bit
Radeon X1300, X1400, X1550, X1600; FireGL V3300, V3350
Radeon X1300, X1550, X1550 64bit, X1600; FireMV 2250
Radeon X1800; FireGL V5300, V7200, V7300, V7350
Radeon X1300 XT, X1600, X1600 Pro, X1650; FireGL V3400, V5200
Radeon X1300, X1650
Radeon X2300 HD
Radeon X1650
Radeon X1950, X1950 GT; FireGL V7400
Radeon X1900, X1950; AMD Stream Processor
Intel

Kod: Zaznacz cały

GMA 900
GMA 950
GMA 3000
GMA 3100
GMA 3150
GMA X3000
GMA X3100
GMA X3500
GMA 4500
GMA X4500
GMA X4500HD
GMA 4500MHD
HD Graphics (GMA HD)
HD Graphics (Sandy Bridge)
HD Graphics 2000
HD Graphics 3000
Wirtualne karty graficzne

Kod: Zaznacz cały

VMware's Gallium3D SVGA
Softwarowe karty graficzne

Kod: Zaznacz cały

Software Rasterizer
llvmpipe
W innym przypadku najprawdopodobniej korzystasz albo z zamkniętych sterowników, albo otwarte sterowniki są tak stare/niedorobione, że nie da się zaimplementować S3TC.

3. Sama instalacja jest banalnie prosta i powinna działać na Ubuntu 10.04 i nowszych.

a) System 32 bitowy. Pobieramy dwie paczki:
multiarch-support
libtxc-dxtn0
Instalujemy je dwuklikiem w kolejności w jakiej je wymieniłem.
multiarch-support jest już obecny w Ubuntu 11.10 i nie musi być do tego systemu doinstalowywany. Paczka ta nic nie robi i jest tylko zależnością dla libtxc-dxtn0.
UWAGA! 32 bitowy multiarch-support ma w zależnościach libc6 (>= 2.13-0ubuntu6) i dlatego nie może być zainstalowany na Ubuntu 10.04 i 10.10. To jest chyba jakiś bug, ponieważ wersja 64 bitowa ma jedynie zależność libc6 (>= 2.3.6-2). Dlatego przepakowałem multiarch-support obniżając jego zależności jak dla 64 bitowej wersji. Przepakowaną paczkę można pobrać stąd.

b) System 64 bitowy. Pobieramy dwie paczki:
multiarch-support
libtxc-dxtn0
Instalujemy je dwuklikiem w kolejności w jakiej je wymieniłem.
multiarch-support jest już obecny w Ubuntu 11.10 i nie musi być do tego systemu doinstalowywany.

4. Gotowe. Nie trzeba nawet restartować komputera. Żeby sprawdzić, czy operacja się udała należy zainstalować pakiet mesa-utils (jeżeli wcześniej nie był zainstalowany):

Kod: Zaznacz cały

sudo apt-get install mesa-utils
I wywołać komendę:

Kod: Zaznacz cały

glxinfo | grep GL_
Jeżeli rezultat będzie się kończył tak (wytłuszczone):
...
GL_EXT_vertex_array, GL_EXT_vertex_array_bgra, GL_APPLE_packed_pixels,
GL_ATI_blend_equation_separate, GL_ATI_texture_env_combine3,
GL_ATI_texture_mirror_once, GL_ATI_separate_stencil,
GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_MESA_window_pos,
GL_NV_blend_square, GL_NV_light_max_exponent, GL_NV_packed_depth_stencil,
GL_NV_texture_rectangle, GL_NV_texgen_reflection, GL_NV_vertex_program,
GL_OES_read_format, GL_SGI_color_matrix, GL_SGI_color_table,
GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays,
GL_S3_s3tc
To znaczy, że wszystko się udało. Gry, które opcjonalnie korzystają z S3TC (np. 0 AD), będą działać wyraźnie szybciej, a tytuły które koniecznie wymagają tego rozszerzenia, będą się wreszcie uruchamiać.
Miałem Linuksa, zanim stało się to modne.
ODPOWIEDZ

Wróć do „Hardware-Multimedia”