czwartek, 3 września 2009

Asrock M3A790GXH/128M i Athlon II pod Linuksem

Właśnie złożyłem sobie budżetowego blaszaka ze zintegrowaną grafiką. Zgodnie z moimi odwiecznymi pragnieniami i marzeniami procesor musiał mieć zintegrowany kontroler pamięci i obsługę HyperTransport, a płyta masę różnych niepotrzebnych slotów:)

Wybór
Wybór padł na dwujajecznego Athlona II X2 240, który w przeciwieństwie do Phenoma II X2, ma fizycznie tylko dwa rdzenie (nie da się nic odblokować). Przez to żre mniejsze ilości prądu. Częstotliwość pracy obu jąder zmienia się niezależnie, w zakresie 800-2800 MHz.

Płyta to całkiem wypasiony Asrock M3A790GXH/128M, który różni się od starszej, nieposiadającej przedrostka M3, wersji, współpracą z pamięciami DDR3. Na 2GiB pamięci wykorzystałem na razie tylko jeden z czterech slotów (więc pracuje niestety jednokanałowo:-/)
Pomimo, że ten model posiada trzy sloty "długiego" PCIE i umożliwią pracę wszystkiego co ma w nazwie "Crossfire" (3Way Crossfire, Hybrid Crossfire itp.), to dla mnie ważna była zintegrowana grafika schowana w chipsecie AMD 790GX. Najszybsza zintegrowana, dla AMD, jaką można dostać...
Wbudowany Radeon 3300 posiada 128 MiB własnej, wlutowanej w płytę, pamięci DDR3. Obsługuje Shader Model 4. Wyjścia obrazu to D-Sub, DVI-D i HDMI. Przydałoby mi się S-Video, ale nie ma już płyt (kart graficznych praktycznie też nie), które są w nie wyposażone...

Za zasilanie płyty odpowiada 24-pinowe złącze (można 20-pinowe podłączyć) i dodatkowe ośmio (można cztery). Ja podłączyłem odpowiednio 24 i 4 piny.

Uwaga: Do współpracy z Athlonem II ta płyta potrzebuje BIOSu w wersji 1.10 lub nowszej.

Pingwin wędruje na dysk...
Najpierw wybór padł na 64-bitowe Ubuntu 9.04. Dziesięciominutowa* instalacja i... okazuje się, że nie ma sterownika do modemu** ADSL, dla 64-bitowego systemu! Musiałem stracić kolejne 10 minut na instalację 32-bitowego Ubuntu.

Stery do grafiki
Zapragnąłem akceleracji, więc musiałem zainstalować binarne sterowniki ATI. Te z repozytoriów Ubuntu zawiodły, X-y nie startowały. Ściągnąłem Catalyst 9.8 ze stron AMD/ATI i wydałem tajemne:
sudo sh ./ati-driver-installer-9-8-x86.x86_64.run
Teraz poszło jak po maśle i po restarcie cieszyłem się już bezbłędnie pracującym Compizem i panelem sterowania ATI (podobnym do windowsowego, ale trochę ubogim).

Wydajność
Utarło się twierdzenie, że układy ATI mają mizerną wydajność pod Linuksem, a sterowniki pełne są bugów. To zintegrowane ATI powinno być dramatem...
Chyba muszę zaprzeczyć, do tej pory nie zauważyłem błędów w wyświetlaniu, wydajność też nie jest fatalna. Compiz Fusion (przy 1024x768x32, praktycznie niezależnie od ilości efektów) trzyma ok. 120 kl./s. W ramach wstępnych testów pomęczyłem też "natywne linuksowe" dema dwóch klasycznych gier Dooma 3 i Quake 4. W standardowym ustawieniu "High Quality" oscylują wokół 50 kl./s. Z ciekawości też odpaliłem OpenArenę (natywna), przy 1024x768x32 i wszystko na max było 200-300 kl./s. Przy takich samych ustawieniach, windowsowy Unreal Tournament 2000 pracujący pod Wine miał ok. 100 kl./s - tu zapewne bardzo dławiła "translacja" Direct3D-OpenGL...
UPDATE 4.09: Także linuksowy Quake Live (pod Firefoksem) działa płynnie i bezbłędnie. Również na pełnym ekranie.

Warto zauważyć, że włączenie Compiza nie zwiększa obciązenia procesora. Oba rdzenie, przez większość czasu, leniwie leża na 800 MHz. Włączenie stardardowego filmu w XviDzie (w Totemie), powoduje obciążenie obu jąder po ok. 20%, pomimo iż dalej pracują na 800 MHz.
Można jedno jądro obciążyć w 100%, a responsywność systemu nie zostanie w żaden sposób zaburzona.
Każdy z rdzeni można ustawić, niezależnie, na 800, 1600, 2100 lub 2800 MHz albo na jeden z trybów: Powersave, Performance, Ondemand, Conservative.

Werdykt
Na razie nie mogę narzekać...

*taki wynik udaje się gdy nośnikiem obrazu CD jest DVD, a nie CD...
**kitajski ZXDSL

Lista rozszerzeń OGL obsługiwanych przez 790GX:
adi@adi-desktop:~$ glxinfo
name of display: :0.0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: ATI
server glx version string: 1.4
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group
client glx vendor string: ATI
client glx version string: 1.4
client glx extensions:
GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_allocate_memory, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_NV_swap_group, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_swap_barrier, GLX_SGIX_swap_group, GLX_SGIX_visual_select_group,
GLX_EXT_texture_from_pixmap, GLX_EXT_framebuffer_sRGB
GLX version: 1.4
GLX extensions:
GLX_ARB_create_context, GLX_ARB_get_proc_address, GLX_ARB_multisample,
GLX_EXT_import_context, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_MESA_swap_control, GLX_NV_swap_group, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_swap_barrier, GLX_SGIX_swap_group, GLX_SGIX_visual_select_group
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI Radeon HD 3300 Graphics
OpenGL version string: 2.1.8870
OpenGL shading language version string: 1.40
OpenGL extensions:
GL_AMD_draw_buffers_blend, GL_AMD_performance_monitor,
GL_ARB_color_buffer_float, GL_ARB_copy_buffer, GL_ARB_depth_buffer_float,
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_instanced,
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
GL_ARB_fragment_shader, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_geometry_shader4, GL_ARB_half_float_pixel,
GL_ARB_half_float_vertex, GL_ARB_instanced_arrays,
GL_ARB_map_buffer_range, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object,
GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shader_objects,
GL_ARB_shader_texture_lod, GL_ARB_shading_language_100, GL_ARB_shadow,
GL_ARB_shadow_ambient, GL_ARB_texture_border_clamp,
GL_ARB_texture_buffer_object, GL_ARB_texture_compression,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_cube_map,
GL_ARB_texture_env_add, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_float, GL_ARB_texture_mirrored_repeat,
GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle,
GL_ARB_texture_rg, GL_ARB_texture_snorm, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_object,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_window_pos, GL_ATI_draw_buffers, GL_ATI_envmap_bumpmap,
GL_ATI_fragment_shader, GL_ATI_meminfo, GL_ATI_separate_stencil,
GL_ATI_texture_compression_3dc, GL_ATI_texture_env_combine3,
GL_ATI_texture_float, GL_ATI_texture_mirror_once, GL_EXT_abgr,
GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_copy_buffer, GL_EXT_copy_texture, GL_EXT_draw_buffers2,
GL_EXT_draw_instanced, GL_EXT_draw_range_elements, GL_EXT_fog_coord,
GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_framebuffer_object, GL_EXT_framebuffer_sRGB,
GL_EXT_geometry_shader4, GL_EXT_gpu_program_parameters,
GL_EXT_gpu_shader4, GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_provoking_vertex, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_specular_color,
GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, GL_EXT_subtexture,
GL_EXT_texgen_reflection, GL_EXT_texture3D, GL_EXT_texture_array,
GL_EXT_texture_buffer_object, GL_EXT_texture_compression_latc,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
GL_EXT_texture_integer, GL_EXT_texture_lod, GL_EXT_texture_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,
GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
GL_EXT_texture_shared_exponent, GL_EXT_texture_snorm,
GL_EXT_texture_swizzle, GL_EXT_transform_feedback, GL_EXT_vertex_array,
GL_EXT_vertex_array_bgra, GL_IBM_texture_mirrored_repeat,
GL_KTX_buffer_region, GL_NV_blend_square, GL_NV_conditional_render,
GL_NV_copy_depth_to_color, GL_NV_explicit_multisample,
GL_NV_primitive_restart, GL_NV_texgen_reflection, GL_SGIS_generate_mipmap,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays,
GL_WIN_swap_hint, WGL_EXT_swap_control

Brak komentarzy:

Prześlij komentarz