| NetSurf Bounty Proposal | page 1 2 3 4 5
|
|---|
|
|---|
Michael Ward USA
| | Posts 176 05 Mar 2010 16:35
| My testing of Netsurf68k last week was done with 5-2009 version. I will run this brand new version over the weekend. I look forward to seeing its improvements. I see mention of optimizing rendering. Being a non-expert, is this the most demanding aspect of a web browser? I assume it is. Would this function be considered the weak link for actual 68K hardware based web browsers? Natami should be quite useful here if its advantages can be leveraged into the equation. Questions.... x11 libs without requirement to actually run x11 itself sounds like a cool thing. Is this a good direction to take with improved 68k browser? These libraries simply route x11 commands to original Amiga graphics chipset? Any good teacher on this subject would be greatly appreciated, I would like to learn.
| |
Bernd Afa Germany
| | Posts 146 05 Mar 2010 19:19
| >My testing of Netsurf68k last week was done with 5-2009 version. Oh this is really really old. i read here that netsurf 68k have no user interface.it have more GUI buttons btw as OWB OS4 I have upload a screenshot. EXTERNAL LINK This show also tha EXTERNAL LINK full load take 8,3 sec on my winuae System.I do that several time, i get 7,5 upto 8,3 sec. But the page is show after 2 sec and then can scroll or click on links.I notice no diffrence in speed in compare to firefox or safari. netsurf MUI version is here for MOS, it can easy get working on 68k, but the Problem is the netsurf devs change the Core since time ago a lot and so there is lots work need to keep MUI upto date. Itix do this not, so Artur use SDL.This can easy keep upto date with their newest core. >libraries simply route x11 commands to original Amiga graphics >chipset? yes X11lib have instructions to open/close windows or blit bitmaps, draw rectangle etc.this is then map to AOS commands. The old X11 font system is also not need anymore in todays programs.all programs need either freetype or pango (which use the bitmap commands of X11 lib to blit char.
| |
Michael Ward USA
| | Posts 176 05 Mar 2010 19:52
| Can't wait to try latest version. I didn't think last version was bad for an initial effort and look forward to the latest. So SDL used as generic way to port and maintain this program then? What is this about the fonts? What is freetype, pango? Being a non-programmer I am only familiar with old Amiga fonts, postscript, and TrueType via your AFA...
| |
Marcel Verdaasdonk Netherlands
| | Posts 2089 05 Mar 2010 22:17
| Richard if that is the case, check the software since i did the same trick with a pentium 3 en I didn't even need to wait that long...
| |
Gunnar von Boehn Germany
| | (Natami Team Member) Posts 3727 06 Mar 2010 06:12
| Regarding the speed of a webbrowser: In a nutshell, a webbrowser does need to do the following jobs: A) Download the files (HTML/CSS/GFX) B) Decode and map the HTML/CSS C) Decode the image files D) Render the screen Different priorities in doing these tasks can mkhe a HUGE difference in total browser speed. Let me give you 1 example: Lets say: - Downloading the files take 2.0 secs - Mapping the HTML takes 0.3 secs - Decoding the images takes 1.5 secs - Rendering the screen takes 0.3 secs Total: 4.2 seconds But in this examples we would do all the tasks sequnetial. You would see nothing for 4.2 seconds and then "plop" the full screen. Typically you want to give the user some more feedback and you render the screen earlier even if the HTML might not be fully mapped and before all images are loaded. Lets say the browser does throw in render events of the screen 1 time per second. Then the calculation looks like this - Downloading the files take 2.0 secs - Mapping the HTML takes 0.3 secs - Decoding the images takes 1.5 secs ----- so far 3.8 seconds - Rendering the screen 4 times 0.3 secs = 1.2 seconds Total: 5.0 seconds What happens if the browser trows in more render events? Maybe 3 times per second? Then the calculation looks like this - Downloading the files take 2.0 secs - Mapping the HTML takes 0.3 secs - Decoding the images takes 1.5 secs ----- so far 3.8 seconds - Rendering the screen 12 times 0.3 secs = 3.6 seconds - But during the 3.6 seconds of the rendering another 3.3 seconds of render events will be generated. This will now take forever. Total Time: several minutes Rendering on the 68k Classic amiga is not really that fast. And the bus to the GFX card is a serious limitation. If the Browsers throws in too many render events, then the system will eat all the performance doing screen display. The Bus to an AMIGA Zorro or PCI bridged GFX card has a typical transfer rate in the range of 10 MB/sec. A screen of 1024x768*32bit has a size of 3 MB. This means you can max do 3 screen refreshed per second. Doing 3 Screenrefreshes will take 100% system time. A careful balance needs to be taken here not to slow down the system too much by too many refresh events. This issue does not exists on the NATAMI by the way, as the NATAMI bus is much faster.
| |
Bernd Afa Germany
| | Posts 146 06 Mar 2010 09:22
| netsurf have settings (see the thread i post the link)to choose the refresh period a system can do. fast gfx transfer speed is usefull for faster scroll, also during load.currently the best settings for a classic is redraw every 5 sec. Also parsing and the big code size does not fit good in the small 68k cache, so there is also a 060 slowedown due to cache miss. because when i disable in winuae the JIT i get half of the Mips of a 68060 with 50 MHZ in sysspeed. only memtransfer fast2fast and transfer to GFX Card is faster on winuae. On netsurf the overall performance is so better as on 060/50 also when scroll. But if nobody release a faster board or show a video how fast netsurf run on this, all is only theory.
| |
Channel Z
| | Posts 213 06 Mar 2010 09:27
| I like browsers that find out the image size (dimensions) at an early point in rendering. That way text won't fly around on the page if you try to read while the page is being rendered.
| |
Bruce Lee
| | Posts 6 06 Mar 2010 11:35
| @Bernd_Afa: Can you (or Artur) add Arexx commands to next netsurf release ? The reason is that since I made some useful scripts for AWeb, I would like to "port them" to NetSurf. The arexx commands I'd need implemented are: - Open a given URL - Get the URL of the current page - Save current page on file (on a given path) These would be enough for the moment. Eventually, I may also give the scripts to Artur to be included in a Netsurf release. AWeb has the possibility to execute arexx commands that are in links; for example: href="x-aweb:rexx/pathname:script.rexx" Can u implement this in NetSurf ?? That would be great!
| |
Asaf Ayoub United Kingdom
| | Posts 240 06 Mar 2010 12:57
| Some web browser developers question the use of Javascript and debate the use of LUA instead.Some question the use of a scripting language and future developments of web technology press to use XRX, REST and XQuery technology.
| |
Bernd Afa Germany
| | Posts 146 06 Mar 2010 14:45
| >Can you (or Artur) add Arexx commands to next netsurf release ? i need this not.but its possible, the ffplay 68k have too a arex Port.So code can reuuse. Only problem i see to save a current page to file.not sure how this is implement in netsurf. to add a amiga GUI to a SDL program is also possible, or make out of netsurf SDL a MUI plugin. because its not much work to change SDL(it was begin in 1.2.6) so that it can render to a given window and draw at coordinates and messages from the AOS window can then preparse and then send to SDL.
| |
Bruce Lee
| | Posts 6 06 Mar 2010 15:05
| bernd afa wrote:
| ... to add a amiga GUI to a SDL program is also possible, or make out of netsurf SDL a MUI plugin. because its not much work to change SDL(it was begin in 1.2.6) so that it can render to a given window and draw at coordinates and messages from the AOS window can then preparse and then send to SDL.
|
This part is *very* interesting. Next release will be very interesting! :)
| |
Gunnar von Boehn Germany
| | (Natami Team Member) Posts 3727 06 Mar 2010 15:24
| bernd afa wrote:
| ... to add a amiga GUI to a SDL program is also possible, or make out of netsurf SDL a MUI plugin. because its not much work to change SDL(it was begin in 1.2.6) so that it can render to a given window and draw at coordinates and messages from the AOS window can then preparse and then send to SDL. |
Yes, instead calling SDL_FLip() you could just do CyberGFX call to copy the render content to any window.You meant something like this right?
| |
Bernd Afa Germany
| | Posts 146 06 Mar 2010 17:27
| >Yes, instead calling SDL_FLip() you could just do CyberGFX call >to copy the render content to any window. >You meant something like this right? yes, i btw change SDL 1.2.13 and above also to work better in that way, because i do when use a Hardware surface in window mode (which netsurf use for faster scrolling) alloc a friend bitmap that contain the data. and on SDL_Flip this Content is copy with bltbitmaprastport correct clip with the GFX Card blitter fast to the visible window and when the window pointer is used from another window it is of course copy to that. this help also to later get SDL programs working as plugin in amiblitz, for example ffplay as the Video player for winuaevidrec or netsurf with a amiblitz GUI and builtin ffplay....
| |
Gunnar von Boehn Germany
| | (Natami Team Member) Posts 3727 06 Mar 2010 17:30
| bernd afa wrote:
| yes, i btw change SDL 1.2.13 and above also to work better in that way, because i do when use a Hardware surface in window mode (which netsurf use for faster scrolling) alloc a friend bitmap that contain the data. and on SDL_Flip this Content is copy with bltbitmaprastport correct clip with the GFX Card blitter fast to the visible bitmap.
|
Can you explain this again? How does NetSurf draw its content? Does it directly draw to a HW surface?
| |
Bernd Afa Germany
| | Posts 146 06 Mar 2010 17:36
| >Does it directly draw to a HW surface? Yes it draw to a HW surface.this is a bitmap alloc on Gfx Card This step is done because when scroll, the gfx cardblitter can scroll 80% of screen and only the rest must move to GFX Card. only problem here is that the screen need rgb16 Pixel format or BGRA32 Pixelformat, because netsurf use RGB16/BGRA32 Pixelformat. on other pixelformat must a byteswap do
| |
Michael Ward USA
| | Posts 176 06 Mar 2010 19:09
| Now running latest netsurf. It does run better than last years version. Various buttons now functioning. As far as speed, it is similar to the last version. Again, I pulled cnn news site up. It took about 1.5 minutes to get it all. My internet is satellite based dsl so it is not the speediest connection. When compared to windows opera, the load times for cnn are nearly identical. So I say this is all good, at least for UAE 68K Amiga people.
| |
Gunnar von Boehn Germany
| | (Natami Team Member) Posts 3727 06 Mar 2010 21:09
| bernd afa wrote:
| >Does it directly draw to a HW surface? Yes it draw to a HW surface. |
The idea to buffer the surface on the GFX-Card to be able to use the Blitter for scrolling is very good. The other thing is that CPU rendering to a HW surface is often a slower solution than doing CPU rendering to a Fastmem-Surface. Especially in a browser type rendering a SW surface should be optimal in my experience. The best idea is often to combine both tricks. Let the CPU render to a Fastmem Surface, copy this to the HW. During the copy any RGB/BGR swapping could be done for free. Then the HW surface is used as buffer to do Blitter supported scrolling. bernd afa wrote:
| only problem here is that .. BGRA32 Pixelformat |
This is fixed? Surprising that this is fixed for a SDL application. Typicaly most applications would support RGB and BGR... Netsurf was not originally an SDL application, right? But actually it does not matter - we could do the byteswap on the flight when Flipping the buffer from SW surface to HW.I have some experience in browser rendering code (aweb..) and I have done several SDL based games. I don't know if any help or review in the SDL rendering is needed at all. But if you/they need a hand - I would be happy to help.
| |
Wawa Tk Germany
| | Posts 351 07 Mar 2010 11:18
| @gunnar: netsurf 68k, unlikely the os4/reaction version is still built around sdl. i think it would be a very cool thing to have an experienced coder help out with the 68k netsurf. hope artur and bernd will accept your proposition.
| |
Bernd Afa Germany
| | Posts 146 07 Mar 2010 12:00
| >The other thing is that CPU rendering to a HW surface is often a >slower solution than doing CPU rendering to a Fastmem-Surface. >Especially in a browser type rendering a SW surface should be >optimal in my experience. the problem is users do not like to help lots on testing, so i have only few results. I get the load time of SW and HW surface from a user that have a slow Zorro 2 GFX Card that work in BGR16. the HW surface /sw surface load time of page is near same, but scroll can faster. display a web page cost not much speed in compare to the overall time. a classic can draw 3 display content /sec but still amigaworld(which use no css) is only in 17 sec complete render on classic so the overall % of the display is very few. >This is fixed? Yes for netsurf there is a plotter interface that convert the native format(netsurf use intern argb for all)to this pixel formats. support of more pixelformats is possible, but its of course work to do and it is not add in offical source. on the classic amiga there is the pixel format mess.I also find not enough users that test the pixelformat test Program i have written so i can see what pixelformats are most used and maybe i can support the pixelformat that work best as native. I decide then to use RGB16 because i think this can support on all Big Endian Amiga systems. now when all is done, the users write netsurf is slow on scroll on many systems.I have no time to change all to use rgb16PC and do the work again some cards use bgr16 some rgb16 PC(they are diffrent) but SDL work on rgb16 in BE Setting and swap all other formats, so the programs need not care about the Pixelformat the amiga HW have. also many programs fail, ffplay for example think in Big Endian Mode the GFX Card support RGB16. the plotter interface of netsurf contain this functions and output is RGB16 #if __BYTE_ORDER == __BIG_ENDIAN static inline nsfb_colour_t nsfb_plot_ablend_be16(nsfb_colour_t pixel,nsfb_colour_t scrpixel) { int opacity = pixel & 0xFF; int transp = 0x100 - opacity; uint32_t rb, g; pixel >>= 8; scrpixel >>= 8; rb = ((pixel & 0xFF00FF) * opacity + (scrpixel & 0xFF00FF) * transp) >> 8; g = ((pixel & 0x00FF00) * opacity + (scrpixel & 0x00FF00) * transp) >> 8; return ((rb & 0xFF00FF) | (g & 0xFF00)) > 16) | ((c & 0xFC0000) >> (16-3)) | ((c & 0xF800) >> 11 ); } #endif >I don't know if any help or review in the SDL rendering is needed >at all. But if you/they need a hand - I would be happy to help. SDL have the problem that it truncate 2 bits when use BGR16PC Mode because C compiler do not rotate.maybe you have time to find a solution that SDL work well in rgb16PC. read here EXTERNAL LINK See this post Posted: 2008-Nov-24 10:14:13 >Again, I pulled cnn news site up. It took about 1.5 minutes to >get it all. My internet is satellite based dsl so it is not the >speediest connection. When compared to windows opera, the load >times for cnn are nearly identical. thats great because netsurf have no diskcache.when netsurf get a diskcache then all go faster(i hope) special on slow Internet. You can try out, disable the diskcache in opera and see how fast it is then.then its a fair compare. I see report that also on fast internet connection diskcache speed up the relaod with ibrowse from 10 sec to 7sec >hope artur and bernd will accept your proposition no problem i do nothing on netsurf since months now. but i think when make really a AOS GUI or update the MUI from MOS, better wait until netsurf team have the diskcache ready and the google of summer code from 2010 is in, so hope that the native system Part in future is not change lots as before. when you look how many changes are done in SDL, to get it working with newest core, then you can see thats a fulltime (hobby job )ti get netsurf upto date.but somebody else on netsurf team do the sdl changes.
| |
Gunnar von Boehn Germany
| | (Natami Team Member) Posts 3727 07 Mar 2010 13:37
| nsfb_colour_t nsfb_plot_ablend_be16(nsfb_colour_t pixel,nsfb_colour_t scrpixel) { int opacity = pixel & 0xFF; int transp = 0x100 - opacity;
This posted code creates more questions :-) 1) "int transp = 0x100 - opacity;" One border is 0xff the other x100, right? How do you set a 100% opaque pixel and how is a 100% tarnsparent pixel set with this encoding? 2) Your pasted code has a "c" variable. Was this a global variable? wrote:
| SDL have the problem that it truncate 2 bits when use BGR16PC Mode because C compiler do |
Yes, SDL always behaved like this. The color is not 565 but 3553 on AMIGA/with PC16 mode. But this is no problem if you do the blit on your own. I would like to understand how NetSurf creates its Screen. * A good practice is to have a Fastmem screen and render to this screen only. * You will copy this screen to a GFX Card screen from time to time. The copy can be optimized using "damaged rectangle management" then you don't need to copy the whole screen everytime but only refresh parts wich were updated. * For just Scrolling you use only the GFX Sceen. The advantages of the above are big. Rendering to the Fastmem screen is 10 times faster then rendering to a GFXcard screen. Reading from the Fastmem screen is magnitures faster then rendering to the GFXCard screen. So ALPHA will only ever work reasonable with such a concept. Also you can always work in ONE screen format fully independant of what the Workbench or GFX-Card is set to. On the Fast to GFX-card access you do the convertion on the flight. This you can optimize with inline assembly for example to be nearlys for free. The SDL-CPUBLit routine is not optimal fast anyhow. So by writing your own Blitroutine you egt more speed anyway. Bernd, I did not fully under how Netsurf does it currently. Its not doing it like this right? Maybe you can explain it again real quick?
| |
|