AMD 終於把UVD opensource了

還記得幾年前 AMD 第一次把UVD 帶到Linux 上的事嗎?
如果還記的這個,那應該也記得由於沒人維護 VAAPI多次更新後已不相容
最後AMD UVD 面臨被踢掉的命運

今天AMD 終於將UVD 給opensource了

主要opensource 的是UVD 2之後(Radeon HD 4000~ 7000)
使用的也不是XVBA,而是NV導入的VDPAU

應該會在Linux 3.10 整合到kernel 內
相關支援的mesa,Gallium3D 也會在幾個月之內釋出

http://www.phoronix.com/scan.php?page=article&item=amd_opensource_uvd&num=1


這消息不是四月一日的應該不會是開玩笑吧 XD

E-350 GPU compute !?

今天把一直想做的事完成了
也就是GPU對轉檔效能影響到底如何?

想當然而採用的是好用且有用的A’s Video converter
GPU 可介入的運算有三部分,影片解碼,放大縮小,影片編碼

針對這三部分分別做了
CPU(無GPU介入運算) ,純GPU(三部分都有GPU介入運算)
以及靠CPU縮小(其他GPU有介入運算) 靠CPU編碼(其他GPU有介入運算)
註1:A’s Video Converter 無法正確偵測E-350 GPU Load,所以附上GPUZ
註2:這邊的純指的是GPU加入運算的程度

整理成表格是這樣

CPU GPU FPS
CPU 100% 0% 17
GPU 60% 29% 20
CPU encode 66% 13% 21
CPU scale 63% 15% 18

簡單的歸納:
GPU在解碼、放大縮小、編碼都有加速到(但幅度不明顯)
GPU甚至在縮小部分只有減輕CPU負擔,編碼FPS只高純CPU 1 frame
可以注意到除了純CPU之外,GPU(13~29%) CPU(60~66%)都不是高負載狀態
也就是說CPU GPU 存在著一個瓶頸
讓這兩個處理單元需要互相等來等去(沒有充分運算到運算效能)

同場加映 與E-350接近的平台
CPU:K8 X2 3800+(2G);GPU:Radeon HD 4670
(雖然說接近但GPU CPU效能都比E-350 稍微高一些)
測試還是一樣分成四個,純CPU純GPU靠CPU縮小靠CPU編碼

整理成表格是這樣

CPU GPU FPS
CPU 100% 0% 18
GPU 67% 20% 30
CPU encode 75% 11% 29
CPU scale 99% 27% 34


這兩個平台就CPU部分效能來說,同時脈K8跟E-350 相近

(註3:E-350比K10慢10%,K8比K10慢5~15%)
加上時脈的影響K8 X2 3800+ 總效能應該比E-350高10%左右
純CPU編碼的FPS也反應出此現象(K8 X2 3800+ 多了1 frame)
但其他三組測試在GPU加入運算後,E-350就明顯比K8平台低落許多
這邊可以注意到K8平台的 CPU scale部分,整個瓶頸是落在CPU效能上
(Radeon HD 4670 雖然比E-350快不少,
但E-350 GPU load 很輕 問題應該不會是在GPU上)

結論:
為什麼這兩個平台納入GPU運算後效能會差這麼多?
不外乎是APU 通用運算上,GPU、CPU可能出現架構及頻寬衝突
註4:
DDR   400MHz   頻寬(400MHz x 64bit ) / 8bit = 3.2GB/s
DDR3 1066MHz 頻寬(1066MHz x 64bit ) / 8bit = 8.5GB/s
(以上測試這兩個平台都是採單通道)

如果APU會有出頭的一天,AMD必須要解決GPU、CPU的衝突
就AMD釋出消息來看有兩個地方確定有問題
問題1.E-350設計的頻寬遠遠超過記憶體所能負荷的頻寬
由Llano看來 雙通道+1866MHz應該差不多符合 APU設計需求
(不過此時記憶體頻寬
E-3503.5,也就是E-350頻寬嚴重不足)
問題2.當進行Fusion Compute時,CPU存取弱勢必須修正

綜合以上兩者適度反應出
E-350平台在GPU加入計算之後CPU就在60%上下的原因
雖然下圖是Llano的不過Zacate (Bobcat) APU架構大部分與Llano 幾乎相同


註5:
E-350 採64bit Win7、K8 採32bit WinXP
這部份32bit、64bit、Win7、WinXP是否有很大的影響 是個未知數
(看雙方純CPU的FPS符合預期只差10%,猜測不會影響太大)

以下為預測AMD未來繼續發展APU會碰到的問題
GCN核心通用運算大幅提昇
(VLIW4、VLIW5 所能處理之通用運算的範圍跟效能都遠遠不及GCN)
另外GCN 圖形運算效能比起VLIW4提昇30~40%
(E-350還只是VLIW5,今年會推出的Trinity 則是VLIW4)
GCN效能增進帶來的頻寬需求絕非雙通道+DDR3 1866MHz就可以解決
甚至雙通道+DDR4也幾乎可以確定不夠使用
雖然AMD號稱GCN記憶體控制器有改善,可以抑制頻寬需求對APU有幫助

感想:AMD啊!
你就早點走入三通道 或者把sideport memory復活 還是把記憶體做在APU上吧
這東西沒解決在怎麼畫唬爛,弄漂亮的PPT 也是沒用的

Hardware decode back again!

本來在Linux上是可以硬解的
不過在一段時間沒用硬解後,某天發現竟然不能硬解了

找東找西還是找不到原因,以為是驅動程式的問題就不去理它了
今天發現竟然是下面這個
mplayer-vaapi 搭配vf使用不能硬解
把他去掉馬上就回復可以硬解的狀態(很鳥的原因不知道為什麼以前沒想到)

然後搭配上為了在Linux看HiHD準備的MD-535
使用

tzap -a 0 HiHD + dvbstream -o -a 0 8192|./mplayer - -cache 2048 -va vaapi -vo vaapi

就可以完成一年多以來"在Linux上看HiHD"的目標
可惜AMD還是沒在Linux 驅動程式 加上反交錯的功能

Dynpm in kernel 2.6.35

之前在2.6.33時有介紹過
ATI Opensource driver 在KMS模式下要怎麼開dynpm(動態能源管理)
到了ubuntu 10.10(kernel 2.6.35) 這個方法就不管用了,換成一種方式

能源管理分成兩種方式 dynpm,profile
前者是依照GPU loading 作動態調整,後者是依據profile 強制於某種使用模式下

  • 先介紹比較簡單的dynpm
echo dynpm > /sys/class/drm/card0/device/power_method

這樣就可以啟動dynpm,可以執行下面指令看看有沒有成功

cat /sys/kernel/debug/dri/0/radeon_pm_info
  • 再來是稍微複雜的profile
echo profile > /sys/class/drm/card0/device/power_method

指定好電源管理模式後,profile要怎麼用

echo low > /sys/class/drm/card0/device/power_profile

紅色的地方有default,auto,low,mid,high 這些選項可以選

以上設定只是暫時性的在工作階段有作用 (重開機後設定就消失)
如果要保留設定就把命令寫在/etc/rc.local 裏面

Radeon HD 4670 bios edit

Radeon HD 4670 bios 依據廠商不同 設定有很大的差異
尤其Radeon HD 4670 有powerplay

可以設定boot,UVD,powersaving 時的時脈,電壓
進而達到省電又有效能的目的

注意:更新 or 修改BIOS 有一定風險會失敗,請自行承擔
(修改BIOS之前要知道自己在做什麼)

首先需要GPU-Z 來dump bios

然後開啟RBE (Radeon BIOSeditor)載入這個bios開始編輯
(Bios方面可以參考 Asus 的)
我參考之後再加上自己的一些嘗試結果是這個

修改完後再用winflash載入修改後的bios,在按下程式等一兩秒就完成了

備份載點
atiwinflash20111

RBE

參考用bios(AsusRV730,modRV730,RV730)

由於Radeon HD 4670 有兩種版本 GDDR3 512MB,DDR3 1GB
記憶體方面的設定可能會因為這個不同而不能通用

compile ATi open source driver

最近opensource driver 在R6xx/R7xx 更新蠻多的
可是自從6.13.1釋出後,一直等不到新版出現

所以就打算自己動手編,怎麼編照理說應該不用特別寫出來
可是中間會碰到一兩個卡卡的地方,所以還是寫這篇做註記

1.必須要更新macros

git clone git://anongit.freedesktop.org/git/xorg/util/macros
cd macros

順便指定安裝位置(編譯時需要)

./autogen.sh --prefix=/opt/xorg
make install

然後再指定macros的安裝路徑

export ACLOCAL="aclocal -I /opt/xorg/share/aclocal"

2.編譯driver (注意紅字

git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-ati
cd xf86-video-ati
./autogen.sh --prefix=/usr
make
sudo make install

Catalyst 10.7

Catalyst 10.7 今天釋出了
馬上搭配VLC 1.1.1 試用看看

結果Windows版,稍微有硬解的感覺但是CPU還是負擔重
(會掉格,也會出現硬解畫面錯誤)

Linux 版則是完全沒以硬解(VLC 1.1.1 硬解設定反白不能選)
即便照Wiki 下去重新編譯也是沒辦法硬解
雖然開VLC時 GPU時脈有變高,但完全影片沒硬解的效果

最後還是用回mplayer-vaapi
卻發現之前的libva,libva-dev,xvba-video 沒升級到
不知道是不是這個因素才造成 播放字幕時畫面變白的BUG

升級到最新版的libva,libva-dev,xvba-video後
搭配mplayer-vaapi播放 已經沒有畫面變白的BUG

mplayer-vaapi update

傳出ATi更新他們的XvBA時,注意到了mplayer-vaapi其相關的東西 也跟著更新
據說新版的XvBA對支援UVD2的GPU會比較好,於是順手就更新了mplayer-vaapi看看

可惜試了半天有些許BUG

  • 一出現字幕畫面就會變白
  • 快轉時畫面也會變白

看來要等一段時間才能解決這個問題

簡單安裝fglrx

ATi 昨天釋出Catalyst 10.6版
這版對Linux最大的變動在於使用Direct2D的Code來加強Compiz的效果(效能?)

過去我安裝官方版的都是先移除Ubuntu內建的,再重開機到recovery mode 安裝
今天找到一個簡易的方法,可以直接在X-Windows下直接操作

1.先備份原本的xorg.conf

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf-backup

2.將下載回來的Driver 作成deb檔
(記得ati-driver-installer-10-6-x86.x86_64.run 權限要改成可執行)

sudo ./ati-driver-installer-10-6-x86.x86_64.run --buildpkg Ubuntu/lucid

3.移除原有的驅動程式

sudo apt-get remove --purge fglrx-kernel-source xorg-driver-fglrx fglrx-modaliases libamdxvba1

4.安裝剛剛作好的deb檔案

sudo dpkg -i ./fglrx*.deb

此方法是參考自ubuntu官方討論區

安裝後感覺Compiz真的變很順了

mplayer 1.0 rc3

好久沒更新的mplayer,終於又更新了

This release adds support for a ton of new binary codecs and leverages all the stuff added to FFmpeg. Hardware-accelerated video output over VDPAU is now possible, as is audio output through PulseAudio. MPlayer now runs natively on 64bit OS X, the Wii and on OS/2.

增加了很多codec支援,加入vdpau硬解(for nvidia)

只有vdpau硬解沒有把vaapi 放進來,看了不是很高興
所以就自己patch了
mplayer vaapi deb (AMD64)

使用方法

1.首先準備環境:安裝libva1,libva-dev (請挑自己OS的版本),安裝xvba,vdpau
2.安裝mplayer deb
3.執行./mplayer -vo vaapi -va vaapi 影片,就可以播放
(也可以把這行放進nautilus-scripts 方便播放  mplayer -vo vaapi -va vaapi $1)

Previous Older Entries