Skip navigation.
Home
The QNX Community Portal

View topic - Bizarre low-level io-graphics optimizations!

Bizarre low-level io-graphics optimizations!

Read-only archive of qnx.ddk (Writing device drivers for scanners, video card, optical mouse, etc) at inn.qnx.com

Bizarre low-level io-graphics optimizations!

Postby Mike Gorchak » Tue Dec 12, 2006 4:11 pm

Hello, All!

I've added debug output to all my "core" functions in the graphics driver,
and here is in the attachment sloginfo output, which shows photon problem,
and some comments here:

1) I never saw any pat8x1, pat8x8, trans8x1, trans8x8 function calls in the
log, even after I started each photon application which is exist in the
default QNX6.3SP2 installation. Could anyone tell me is it exists any photon
application in world, which will use "pattern" core functions by indirection
?

Here we go.

2) io-graphics calls few hundreds per second update_pattern function in
graphics driver core module (see the log attached), but why it is doing that
if pattern functions are never called ?

3) Furthermore, update_pattern function in core module designed to reduce
amount of pio/mmio registers access to gain more graphics productivity, to
save CPU ticks while updating the same pattern in consecutive
pattern_fill/span calls. Really it became graphics inhibitor. It has been
called more than thousand times during photon loading process without any
needings. Instead of helping to optimize pio/mmio registers access it raises
pio/mmio usage in incredible ways!!!

4) It's a sample from the attached log of 13 consecutive update_pattern
calls while 8x1 pattern even has not been changed !!!:

Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00
Dec 12 20:26:17 6 8 0 xxxxxx_update_pattern():
pattern_format=0001 pat_xoff=0 pat_yoff=0 pat=FF 00 00 00 01 00 00 00

And that's only for photon loading process, when I drag the window over
screen or just scrolling text in pterm - it becames nightmare thousand of
thousands calls !

Cost to doing mmio operations in my case is big, using simple calculation
I've found that update_pattern call eats near 10-15% of my 2D accelerator
maximum output. And that for pattern functions which are never called !

Any other suprises, guys ?

With best regards, Mike Gorchak. E-mail: mike@malva.com.ua


begin 666 coreupdate.zip
M4$L#!!0````(`&&0C#5G-WR]>P0``-M#`@`.`"0`8V]R975P9&%T92YT>'0*
M`" ```````$`& ".!LO_!A['`8X&R_\&'L<!O/YI1 (>QP'MV4%OVE@4!M!]
M?\5;3J5&&%HR#1*+2%7435>=/7*P`3=@(_N1=/[]!)1VIJ.H2D-5U.<311%%
M@:_'W[W/4?)7M2G#?S\^EK?A0_ZI:<.'JK[_>MDNNQ?ORGD8CL(HFXS.)\/A
M_OO.#]_]]O U"Y\/'[.NC+--4Y1_O)R$^\=AV>;;537OPO[))[_+;EODL9P5
M;7XWZW;M(I_?O^%CKQY_\^K+&//YJBS"H"AO!U5S]B5]<-NL\[;*7H6J"-.0
M_>A_9)O'6+;U'O7P<+9HVDT>IUF6#??/S3XWB\4T.SS\^^O#Z=55R+(OG\.O
MCW]J_NC[^8]]\O/S\S_DC_X]2B\>\C_&O(V3,-AU[6"[:F)3#ZZK>G^N5F>K
MJMW5X>:Z"(LBG!6'PW;_KVTW"IMFUY7W3X3_1;P^\24^+O_X2_SFQ/[C\OGY
M^?GY^?GY^?GY^?GY^?GY^?GY^?GY^5/SN_[\_/S\_/S\_/S\_/S\_/S\_/S\
M_/S\_/S\*?GEFS]^\Z]__>N?G]_^ZU__^N?O@]_Y(]_^\YM__>M?__S\]E__
M^M<_?_I^YX]\^\]O_O6O?_WS\]M__>M?__SI^YT_\NT_O_G7O_[US\]O__6O
M?_WSI^]W_LBW__SF7__ZUS\_O_W7O_[USY^^W_DCW_[SFW_]ZU___/SV7__Z
MUS]_^G[GCWS[SV_^]:]__?/SVW_]ZU___.G[G3_R[3^_^=>__O7/SV__]:]_
M_?.G[W?^R+?__.9?__K7/S^__=>__O7/G[[?^2/?_O.;?_WK7__\_/9?__K7
M/W_Z?N>/?/O/;_[UKW_]\_/;?_WK7__\Z?N=/_+M/[_YU[_^]<_/;__UKW_]
M\Z?O=_[(M__\YE__^M<_/[_]U[_^]<^?OM_Y(]_^\YM__>M?__S\]E__^M<_
M?_I^YX]\^\]O_O6O?_WS\]M__>M?__SI^YT_\NT_O_G7O_[US\]O__6O?_WS
MI^]W_LBW__SF7__ZUS\_O_W7O_[USY^^W_7GY^?GY^?W\[=\\\=O_O6O?_WS
M\]M__>M?__Q^_^W\D2]?OGSY\N7+]_,GO_F3+U^^?/GN?ZZ_?/GRY<MW_^/G
MMW_RY<N7+]_]S_67+U^^?/GN?_S\_/S\_/S\_/S\_/S\_/S\_/S\_/S\_/S\
M_/S\_/S\_/S\_/S\_/S\_/S\_/S\_/+-'[_YT[_KKW]^?ONG?]=?__S\KK]\
M^\]O_O6O?_WS\]M__>M?__Q]\+O^_/S\_/S\_/S\_/S\_/S\_/S\_/S\_/RI
M_?U!OGSYO_/Y-SZQ_[C\OOOERY<OOZ_YSG_7GY^?GY^?GY^?G_]7^>7+ER]?
MOM]_N/_S\_/S\_/S\S_%?WYB_W'Y???+ER]?OOQ^YKO_\_/S\_/S\_/S]\DO
M7[Y\^?+]_N-Y][\_3^P_+K_O?OGRY<N7W\]\]W]^?GY^?G[^9_K'W^0OFCIV
MZW(75Y.PJZ_7S?RFJI=AOJ[*.C[V\M'AA1</+W]?Q7!7Q57HJF6=KR=A.'X5
MNM4NQOV[%,U=_>(?4$L!`AD`% ````@`89",-6<W?+U[! ``VT,"``X`````
M```````@`````````&-O<F5U<&1A=&4N='AT4$L%!@`````!``$`/ ```,L$
$````````
`
end
Mike Gorchak
 

Return to qnx.ddk

Who is online

Users browsing this forum: No registered users and 1 guest