All pastes #1043894 Raw Edit

rockbox on-topic talk in off-top

public text v1 · immutable
#1043894 ·published 2008-06-10 14:52 UTC
rendered paste body
16:13  * Llorean wishes people would stop making wild assumptions like "nobody cares about the 5.5G port" or "my iPod is perfect, so this bug must be a giant
          Rockbox bug and therefor Rockbox is not stable like the wiki says"
16:13 < wpyh> what?
16:13 < wpyh> my 5.5g ipod is running perfectly!
16:13 < wpyh> except for the slow rendering...
16:14 < Llorean> Someone's experiencing constant freezing, and therefor thinks that Rockbox on 5.5G is completely unstable.
16:15 < LambdaCalculus37> Llorean: Where, on the forums?
16:15 < Llorean> Maybe we should just post download numbers of some sort, so people can see "look, there's probably a few thousand other users who haven't
                 said a word: maybe your iPod is damaged, ever drop it?"
16:15 < Llorean> LambdaCalculus37: Most recent post I've responded to
16:15 < LambdaCalculus37> I see it.
16:15  * LambdaCalculus37 reads
16:16 < wpyh> uh
16:16 < LambdaCalculus37> He missed one critical piece of information... what SVN build?
16:17 < wpyh> right
16:17 < LambdaCalculus37> I haven't had freeze issues at all on my iPod. Slow rendering, yes. Freezes? Nope.
16:17 < wpyh> Llorean: maybe we should put user statistics up
16:17 < wpyh> download numbers may not be accurate
16:17 < Llorean> How exactly would we track who uses it?
16:17 < wpyh> LambdaCalculus37: yeah, what's up with the slow rendering?
16:17 < Llorean> wpyh: Big screen, slow processor. That simple
16:17 < wpyh> well, user statistics would be voluntary...
16:18 < LambdaCalculus37> wpyh: What Llorean said. :)
16:18 < wpyh> but the OF draws very smoothly... did it do something different?
16:19 < Llorean> The OF has hardware documentation for the broadcom processor.
16:19 < LambdaCalculus37> wpyh: That's the biggest show-stopper there.
16:19 < Llorean> It probably also makes better use of the second core in the PP processor, which we only really use for video right now.
16:19 < markun> some things could probably be done faster in rockbox too, since we now just redraw every character on screen by looking the glyph up in the
                font
16:20 < markun> which doesn't sound like the most efficient way to scroll a page
16:23 < wpyh> oh..
16:25 < wpyh> markun: can we have some kind of a framebuffer instead?
16:25 < markun> well, we have a framebuffer
16:26 < wpyh> um... then why do we need to redraw every character on-screen?
16:27 < gevaerts> framebuffer == what appears on screen
16:27 < markun> it's what we do, I didn't say we need to do that :)
16:27 < gevaerts> The other ways I can think of need a lot more RAM though
16:27 < wpyh> btw, isn't the broadcom processor used for video only? I didn't know it's used for lcd output
16:27  * wpyh goes to check the wiki
16:27 < Llorean> wpyh: The LCD is hooked up to it, we have to go through it for drawing
16:28 -!- toffe82 [n=chatzill@h-74-0-180-178.snvacaid.covad.net] has joined #rockbox-community
16:29 < wpyh> Llorean: ah... where can I find it in the wiki?
16:29 < Llorean> No clue
16:29 < JdGordon> are the glyphs still drawn one at a time instead of stitching them together into a bmp buffer and then drawing that buffer in 1 hit?
16:29 < amiconn> Llorean: The data transfer through the broadcom isn't the bottleneck nowadays
16:29 < amiconn> The (somewhat) slow rendering is mainly "slow processor and big screen combo"
16:29 < wpyh> markun, gevaerts: I thought we can shift the pixels up with a framebuffer?
16:30 < gevaerts> JdGordon: I'd say the main optimisation would be to then keep that bmp buffer around and reuse it next time you draw the same text. Lots of
                  RAM usage though
16:30 < gevaerts> wpyh: you can, but it's tricky to get it right
16:30 < wpyh> oh..
16:30 < Llorean> amiconn: Depending on what the broadcom chip is capable of, though, might it be possible to offload the drawing work to it?
16:30 < wpyh> by the way, 320*240*2=153600=150KB
16:31 < wpyh> shouldn't be too big, right?
16:31 < amiconn> The mono bitmap drawing has some possibilities for optiomisation, and I still think that the "optimisation" introduced by one of the early
                 gigabeat f/x guys is actually a slowdown
16:31 < gevaerts> wpyh: unless you're careful, you'll occasionally have an off-by-one error, or forget to repaint a pixel somewhere,...
16:31 < amiconn> But I cannot prove my theory without a drawing speed test plugin
16:31 < wpyh> um...
16:32 < amiconn> Scrolling with memmove is rather trivial on 8bit and higher depth displays
16:32 < amiconn> It's rather tricky on < 8 bit depth, and we don't want two different mechanisms depending on depth
16:33 < amiconn> JdGordon: Btw, your 'stitiching together, then transfer' method is actually slower
16:33 < wpyh> maybe we can define a special memmove()?
16:33 < amiconn> ...because it involves an extra copy operation
16:33 < amiconn> wpyh: On 1 bit and 2 bit displays pixels are packed, and the packing is non-trivial
16:33 < amiconn> Take a look at the 1bit and 2bit lcd drivers to see what I mean
16:34 < amiconn> Scrolling involves bit shifting on those for one direction (vertical or horizontal, depending on pixel packing)
16:34 < Llorean> amiconn: Why don't we want tow different mechanisms?
16:34 < wpyh> let's see..
16:35 < amiconn> Llorean: Code complexity
16:35 < Llorean> If code complexity trumped performance, we wouldn't have anything ASM optimized.
16:35 < amiconn> Btw, scrolling the screen pixels is very different to our current way of scrolling. Think about background images...
16:36 -!- JdGordon is now known as JdGordon|zzz
16:36  * gevaerts forgot those...
16:36 < amiconn> Llorean: That's quite different. ASM optimisation often means replacing or modifying a low-level function to use asm code
16:37 < amiconn> Having two drawing mechanisms means rather different execution flow
16:38 < gevaerts> amiconn: you mean memmove-based scrolling on 8+-bit lcds and redraw-based on <-bit ? (That's how I understood you, but I'm not sure)
16:39 < gevaerts> s/<-bit/<8-bit/
16:39  * wpyh is still trying to understand the framebuffer code for 1bit lcd
16:40 < amiconn> wpyh: 1 bit is in fact the simplest one of the packed-pixel formats. 2 bit is more complicated (and exists with 3 different pixel packings)
16:40 < wpyh> oh no :O
16:41 < amiconn> gevaerts: Yes. And btw, the background image problem remains
16:41 < wpyh> background image problem?
16:42 < wpyh> you mean the background image being also "scrolled"?
16:42 < gevaerts> yes
16:42 < wpyh> then we can't use this approach
16:42 < wpyh> let's use multilevel buffers
16:42 < amiconn> More buffers will make things slower, not faster
16:43 < markun> wpyh: one big slowdown is also the fontcache which kicks in with big fonts (in bytes, not pixels)
16:43 < wpyh> it would increase complexity though..
16:43 < markun> can you try with a small font (in bytes) to see if the interface is faster?
16:43 < wpyh> markun: reminds me of the Chinese fonts
16:43 < markun> I promissed amiconn some years ago that I would reimplement it and actually worked on it
16:44 < markun> we should do a rockbox summer camp! :)
16:44  * gevaerts proposes a dynamically sized font cache, and quickly hides under the table
16:44 < wpyh> that would be great
16:44 < wpyh> I mean a summer camp, not the dynamically sized font cache
16:44 < wpyh> :p
16:44 < markun> :)
16:44  * GodEater proposes this all moves back to #rockbox
16:45 < markun> GodEater: even the summer camp? :)
16:45 < gevaerts> GodEater: even disguises malloc() proposals? :)
16:45 < GodEater> yes, it's on topic
16:45 < GodEater> even if it's going to raise merry hell ;)
16:46  * wpyh wonders whether someone should copy & paste the whole discussion to #rockbox
16:46 < LambdaCalculus37> :)
16:46 < GodEater> pastebin it