Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Why browsers are bloated

Name: Anonymous 2014-07-27 0:20

https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/Scrollbar.cpp
https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/win/ScrollbarThemeWin.cpp
Let's reinvent the fucking scrollbar, which every goddamn platform with a UI already has, and make it behave subtly different from the native one!

Right-click a native scrollbar in some other app:
- Scroll Here
- Top
- Bottom
- Page Up
- Page Down
- Scroll Up
- Scroll Down

Right-click a scrollbar in Chrome:
- Back
- Forward
- Reload
- Save As...
...

Right-click a scrollbar in Firefox and Opera:
Absolutely fucking nothing happens!

What the fuck!? How did these terminally retarded idiots get involved in creating one of the most important pieces of software to the average user?

Name: Anonymous 2014-10-04 18:27

check 'em

Name: Anonymous 2014-10-07 1:02

>>201
Nice base 200 dubs >>201-san.

Name: Anonymous 2014-10-10 21:38

>>191
Inactive tabs (or minimised windows for that matter) shouldn't need any repainting.

Right. What I was talking about is throttling the JavaScript timer frequency for inactive tabs, ala
https://bugzilla.mozilla.org/show_bug.cgi?id=633421
https://code.google.com/p/chromium/issues/detail?id=66078

I'm sure you'll implement something like this when you write a JS engine for your browser.

>>189
Where can I tweak this parameter? Please expand on this, I'm interested.
dom.min_background_timeout_value

Name: Anonymous 2014-10-10 23:01

>>203
If I ever write a browser, I'm not reimplementing the biggest shits in the broapping world known as JS and HTML.

Name: Anonymous 2014-10-10 23:30

>>204
JS
World's most widely deployed functional programming language son

Name: Anonymous 2014-10-11 10:07

>>205
I never said it wasn't.

Herpes is probably the most widespread STD. So what? It's still a fucking STD.

Name: Anonymous 2014-10-11 10:12

>>206
If I was G-d I would implement it.

Name: Cudder !MhMRSATORI 2014-10-11 12:45

So much work, so little time...

>>192,193
Flicking the mouse wheel just causes a series of scroll events that are indistinguishable from scrolling in a short burst. The smooth wheels generate scroll events the same way. Inertial scrolling requires detecting when the user has taken the finger away from the device so it can continue to scroll, and stop scrolling once the finger touches down again.

>>203
A setting buried in the horribly obscure about:config interface that only takes effect for background tabs, globally, is not quite the same thing as an easily accessible (probably via some menu item) control to modulate the current tab/window's background AND foreground update frequency.

So the question remains, is there a unique DOM event that would fire solely for this throttling, to warn the web app of the slowdown?

Amusing to see the "BUT MUH ANIMATIONS!!!" developers are complaining as usual...

On the subject of Firefox settings accessibility, it would be great if they added the possibility of adding any about:config item as a menu item, like Opera's Quick Preferences but far more flexible.

Name: Cudder !MhMRSATORI 2014-10-11 13:03

>>203,204
If this project ever gets that far I'll definitely be writing one. A browser that doesn't handle at least most of HTML5 and JS won't be so interesting even if it's much less bloated, because most people will just see it as something like a theoretical exercise. A browser that can work with most websites out there now, including the JS-heavy stuff, on par with other major browsers like FF and Chrome, but also much smaller and more flexible, will get noticed. I've mentioned this before in >>120, this is not about finding better protocols and web standards but about better implementations of them.

Name: Anonymous 2014-10-19 8:35

Is there real work being done on a non-bloated browser engine? (and that's feature complete)

Name: Cudder !MhMRSATORI 2014-10-20 6:41

>>210
real slow work. IRL is taking up too much time.

Name: Anonymous 2014-10-20 13:16

>>211
Would you mind sharing your work? Even Nikita has a github.

Name: Anonymous 2014-10-20 14:35

>>212
Github is the last bastion of bourgeois hipster chauvinist pseudo-intellectuals in cyberspace. If we could only nuke the site from orbit and take its inhabitants with it, the shackles of the Von Neumann era would disintegrate and we could finally move on with real, serious, honest-to-god programming.

Name: Anonymous 2014-10-20 14:52

>>212

IIRC Cudder had some imageboard with source code for some Anonix OS, which got merged with Temple OS afterwards.

Name: Anonymous 2014-10-21 1:54

>>213
Christ, it's just a git hosting site. Chill out bro.

Name: Cudder !MhMRSATORI 2014-10-27 6:05

>>212
Not yet... but you're free to beat me to releasing an ultra-tiny HTML5 compatible browser.

Name: Anonymous 2014-10-27 6:08

>>216
html5 technologies

Name: Anonymous 2014-11-01 8:14

>>216
Have you given any thought on how to implement CSS3 yet, Cudder?

At times I've entertained the thought of writing a fully-featured web browser for Plan 9, and what always stops me in my tracks is the CSS3 insanity. I can't conceive of how one could write a box layout engine that supports all those transformation/transition/gradient/box shadow effects without the code coming out looking more like a poor man's Macromedia Flash.

Name: Cudder !MhMRSATORI 2014-11-01 11:23

>>218
Yes, I'm leaning towards "not at all".

The animation stuff (http://www.w3.org/TR/css3-animations/ ) is conceptually easy as all it's doing is modifying properties periodically (and forcing a relayout/redraw), but it's still quite superfluous to the goals of this browser: display the useful content, minimise the eyecandy and extra fluff.

Transformations are also conceptually simple, but implementation is going to involve a lot of extra bitmaps to be rendered to and plenty of pixel-shoving, which would probably be better done on a GPU... again, not a really useful/important thing to have for just displaying documents.

code coming out looking more like a poor man's Macromedia Flash.
I'd rather write a low-bloat Flash-compatible plugin instead (and I actually have a piece of one written already, for a demo over a decade ago); SWF is a great format that Adobe really fucked up when they bought Macromedia.

Name: Cudder !MhMRSATORI 2014-11-01 11:58

Found this interesting chart of Chromium binary size... unfortunately it requires JS to work:
http://neugierig.org/software/chromium/bloat/

The HTML parser is 120.5KB, of which the tokeniser is over 40KB(!) and the tree construction is nearly 30KB. For some reason, there is an "HTMLToken.h" which is itself 2.8KB. The one I currently have is ~1KB tokeniser and 12KB tree construction.

Name: Anonymous 2014-11-01 14:27

let's make a new web browser in 4kb

Name: Anonymous 2014-11-01 16:18

>>219
Can you make a browser engine without all the CSS3 and HTML5 shit? Just something that can render text and pictures, place them on screen readably, and allows the user to control stuff like turning Javascript on/off and configuring proxies? No fucking gradients, graphic effects in CSS, videos, etc. Can you do that?

Name: Anonymous 2014-11-01 16:38

>>222
Can you?

Name: Anonymous 2014-11-01 16:46

>>222
How am I showing my epic three.js animations to my Reddit friends without web 3.0 technologies?!

Name: Anonymous 2014-11-01 19:27

>>222
How about pdf then?

Name: Anonymous 2014-11-01 19:33

>>223
No. I don't even know any assembly.

>>225
Not needed in a web browser. Download it and open in an actual PDF reader. Reading PDF in browsers sucks ass anyway, as it tries to download only a part of the pages and when you want to skip a lot of pages it makes you wait for them to download.

Name: Anonymous 2014-11-01 19:47

>>226
No. I don't even know any assembly.
You don't need assembly.

Name: Anonymous 2014-11-01 20:43

>>222

Most pages today use CSS3, so they will just not work.

Name: Cudder !MhMRSATORI 2014-11-02 15:54

>>221
http://web.archive.org/web/20070609230328/http://www.kakeeware.com/i_kb.php

Although that one is cheating a bit.

>>226
Agreed.

>>228
They just won't look the way the author intended, which is perfectly fine (a big NO THANK YOU to those idiots who think grey-on-black text is anything but completely unreadable...)

Name: Anonymous 2014-11-05 18:17

Cudder, why don't make your browser open-source so others can help with development, criticize, propose ideas, test for bugs, etc.?

pretty pls

Name: Anonymous 2014-11-05 19:10

>>226
You said to make a engine without anything that's used today. So I suggested to use pdf as replacement for html.

Name: Anonymous 2014-11-05 19:20

>>231
I don't know what TMZ's for pussies and housewives you go to, but most of useful sites I go to use just text, images and Javashit.

Name: Anonymous 2014-11-05 19:25

>>232
That's offtopic

Name: Check my straight flush 2014-11-05 20:30

>>233
Ottfopic.

Name: Cudder !MhMRSATORI 2014-11-08 4:44

>>230
It will be (public domain, in fact); there's just not much of any "source" at the moment besides a parser and a crude DOM viewer.

I'm also too busy at the moment so feel free to contribute... a tiny CSS parser and associated datastructures for keeping track of CSS rules would be the next step. Aim for CSS2.1 although there's a useful parsing spec for CSS3 which you can use.

Name: Anonymous 2014-11-09 18:08

http://www.phoronix.com/scan.php?page=news_item&px=MTgzNDA
It's faster because it is less bloated, even if you ignore the multithreading. Chrome's, Cudder's and netsurf's engine is even faster because they are even less bloated.

Name: Anonymous 2014-11-09 18:28

>>235
How the fuck is anyone supposed to contribute if they don't have the source to your code? Even if they did an independent CSS parser, there would be a huge impedance mismatch when you try to combine them later. You'd probably end up rewriting the whole thing anyway.

Stop being autistic and put a tarball up somewhere. You geezers never finish anything because you insist on perfecting it before you show anyone.

Name: Anonymous 2014-11-09 18:34

>>237
We should figure out a way to share code with each other without making it completely public (until an autist leaks it).

Name: Anonymous 2014-11-11 19:16

>>238
Setup some git repository and post the address here.

Name: Anonymous 2014-11-11 19:33

Name: Cudder !MhMRSATORI 2014-11-12 14:07

>>237
Contribute ideas, not code.

Name: Anonymous 2014-11-12 16:09

>>241
Shalom!

Name: Anonymous 2014-11-12 16:52

>>242
Shalom!

Name: Anonymous 2014-11-12 19:15

>>243
check 'em

Name: Anonymous 2014-11-12 20:34

>>241
Make it dependently typed, y'all. Embrace the future now. Ain't no dependently typed browser engines out there yet, right?

Name: Anonymous 2014-11-14 18:57

Error 200 OK

Name: Cudder !MhMRSATORI 2014-11-15 2:51

>>245
"dependently typed"? We don't need any of that academic wank abstract bullshite. All that'll do is introduce bloat.

Name: Anonymous 2014-11-15 7:07

>>247
>abstract
Shalom!

Name: Anonymous 2014-11-15 8:27

>>247
Actually, dependent types help reduce bloat. For instance, runtime array bounds checks become obsolete, which can lead to 10-20% of performance improvement.

Name: Anonymous 2014-11-15 12:13

>>249
runtime array bounds checks
Most of these are used by shitty programmers. You don't need them.

Name: Anonymous 2014-11-15 12:16

>>250
Most of them are baked into most compilers.

Name: Anonymous 2014-11-15 20:11

>>251
The only respectible languages are C and assembly.

Name: Anonymous 2014-11-15 20:16

>>252
no generics
respectable
LOL.

Name: Anonymous 2014-11-15 20:18

>>253
Define "generics" and explain why would I need them.

Name: Anonymous 2014-11-15 20:23

>>254
Duckduckgo it.

Name: Anonymous 2014-11-15 20:45

>>253
Fuck yeah C has generics. And real macros.

https://github.com/eudoxia0/cmacro

Name: Anonymous 2014-11-15 21:02

>>255
There is a reason you are being asked about your definition. DDG can't show what you believe.

Name: Anonymous 2014-11-16 7:27

>>257
Define a container that can hold several types of elements.
Define a fold function that works on several types of containers.
Can C do that without C "macros"?

Name: >>6 2014-11-16 9:25

>>258
Define a container that can hold several types of elements.
Like struct (and maybe with a enum "tag" and a union if you want to save space) or a void *.

Define a fold function that works on several types of containers.
http://bbs.progrider.org/prog/read/1403675318/10
Surely there are more examples.

Can C do that without C "macros"?
Yes as you can see.

Name: >>259 2014-11-16 9:26

I am not >>6, I have no idea how that >>6 was there.

Name: Anonymous 2014-11-16 9:48

>>259
int fn(void *, void *)
No automatic dispatch on the type of the container. Also, type-unsafe shit. Might as well use Lisp instead.

Name: Anonymous 2014-11-16 9:50

>>259
Also:
if (fn(&bp[i * size], arg) == 0)
bp[i * size]
This implies that the container is indexable and, what's worse, contigious. How are you going to fold/map a tree then? C is useless.

Name: L. A. Calculus !jYCj6s4P.g 2014-11-16 10:10

>>261,262

No automatic dispatch ...
DIS AINT UR FUCKIN TAXI SERVICE YA FLASHY PANTS RETOID, DIS IS PROGRAMMIN. IF U CANT HANDLE IT, GO RUN CRYIN 2 MOMMY

This implies that the container is indexable and, what's worse, contigious. How are you going to fold/map a tree then? C is useless.
ARRAYS R DA DATATYPE OF C. IF UR EVEN THINKIN ABOUT DOING UR FLASHY GOOTCHY FUNCTIONAL PROGRAMMIN SHIT WITH UR CUTE TREES N BUSHES U SHUD STAY DA FUCK AWAY FROM C N GO BAK TO BITCHING WITH DA OTHER LADIES ON ##programming ABOUT WICH LANGUAGE IS DA MOST /fa/

N STOP ASKIN TEENAGE GIRLS 2 DO DISGUSTIN SHIT, YA FUCKIN POOP SCOOPING RETOID. ALL DEY WANT IS A RIDE HOME, NOT TO FULFILL UR DISGUSTING KAWAII SAFARI HENTAI FETISHES.

Name: L. A. Calculus !jYCj6s4P.g 2014-11-16 10:11

O YEA, N GET DA FUK OUTTA MY THRED

Name: Anonymous 2014-11-16 10:19

>>262
You can easily modify it to work with any data structure.

Name: Anonymous 2014-11-16 10:59

>>263
Actually, even C++ has std::accumulate which is a generic fold. And C++ is hardcore, painful Sado-Masochistic programming just like you love. So C is a useless archaism even among the imperative posse. You should retire and watch Santa Barbara, gramps, not read the internet.

>>265
No, I can't.

Name: Anonymous 2014-11-16 11:03

>>266
Well, you can't, but other people can.

Name: Anonymous 2014-11-16 12:04

>>267
Only via macros which are bug-ridden, ad hoc implementation of generics.

Name: Anonymous 2014-11-16 16:16

You might be interested in this for your HTML engine:

https://ocharles.org.uk/blog/posts/2014-11-11-memo-html.html

Self-Memoizing HTML Rendering via Mutually Recursive Data Types

Name: Anonymous 2014-11-16 16:57

>>111
>>222
LUDICROUS TRIPS

Also sweet hexadecimal dubs, >>255-san, >>256-san.

Name: Anonymous 2014-11-16 19:01

>>262
You'd have to write a map function for trees (as you would for C++). Fold can be done using the visitor pattern.

Name: Anonymous 2014-11-16 19:38

>>271
So it would be a separate function specifically for trees? C is useless.

Name: Anonymous 2014-11-16 20:50

>>272
So you want to call a function but you don't want to know which one you're going to call?

Name: Anonymous 2014-11-16 20:50

>>272
Everybody uses C. Huskel? Who's that?

Name: Anonymous 2014-11-16 21:14

>>271
visitor pattern
Shalom!

Name: Anonymous 2014-11-16 21:26

>>262
Pass another function pointer as argument that each time it is called it will show the next element to be folded.

Name: Anonymous 2014-11-16 22:16

>>272
It's also a separate function in C++. They just look the same when you call it.

Name: Cudder !MhMRSATORI 2014-11-17 12:49

>>258-277
Traversing an array and calling a function on each element is something like ~5 bytes for the main loop:
array_fold_loop:
lodsd
call ebx
loop array_fold_loop


Calling a function is already 5 bytes, and then you still have to setup the parameters for it, so it's smaller and faster to just write the loop directly.

Traversing a binary tree (pre-order, nodes stored as [data, left, right]) is a bit less than 32 bytes, so it does make some sense to have this be a separate function if you're going to use it more than once:
tree_fold:
lodsd
call ebx
lodsd
test eax, eax
jz no_left
push esi
mov esi, eax
call tree_fold
pop esi
no_left:
lodsd
test eax, eax
jnz has_right
ret
has_right:
mov esi, eax
jmp tree_fold


But the tree structures I'm using for DOM/rendering can be traversed non-recursively, see http://bbs.progrider.org/prog/read/1406427616

>>269
All that looks like it's doing is essentially caching the results of rendering each subtree, which is not anything interesting.

One thing that I don’t yet understand though, is how this plays out with memory usage.
Oblivious dumbfuck... this is why software is so fucking bloated!

Name: Anonymous 2014-11-17 12:53

>>278
>bytes
Shalom!

Name: Anonymous 2014-11-17 17:49

>>272
I want to say fold(container) and have it work, no matter what type "container" is or the type of its elements is. That's fucking generics, if you didn't know: being able to define generic functions, functions that work on general stuff, not just on specific types.

>>277
If the call is the same, then that's one generic function with lots of instances. It's the same in Common Lisp, Haskell and any decent language. But if you have to waste your time on shit like fold_rbtree_double (as in C), then that's not generic, it's useless.

>>278
bytes
bytes
bytes
Programmers don't give a shit about "bytes", "bits", "cycles" or any of that sewer infrastructure that has the honor of running programs. Because wasting time on floor-scrubbery means having less time to actually write useful programs.

Name: Anonymous 2014-11-17 19:45

I think some of your design goals are at odds with each other, Cudder. GDI is ancient shit and it's only going to make your browser harder to port. A D3D or OpenGL renderer would draw significantly faster and allow you to easily render most of the page at once, significantly improving scroll performance (just a blit).

Leaning too heavily on Windows features in general is going to kill any chance of this making waves in the web "developer" community. They're all on OSX and Linux these days.

Name: Anonymous 2014-11-17 20:03

>>278
loop array_fold_loop
U MENA DEC RCX FOLLOWED BY JNZ array_fold_loop ???!??!?

Name: Anonymous 2014-11-17 20:26

>>281
GDI is ancient shit
Damn right. The Brotherhood of NOD is where it's at.

Name: Anonymous 2014-11-17 20:50

>>274
Do you like to eat shit, then? Because billions of flies can't be wrong.

Name: Cudder !MhMRSATORI 2014-11-17 21:49

>>280
Programmers don't give a shit about "bytes", "bits", "cycles" or any of that sewer infrastructure that has the honor of running programs.
Those are not true programmers, they're the head-in-the-sky academics who are so far from knowing what reality is that all they can do is come up with more resource-wasting "solutions" to non-problems.

Because wasting time on floor-scrubbery means having less time to actually write useful programs.
Say that when you figure out how much time you're wasting just waiting for your ultra-bloated system to do the stuff you want to do... now multiply that by everyone else using the same softare... because the id10ts who wrote the software you use followed the same entitled "my time is so precious I'd rather waste YOUR time and money" mentality... fucking retard.

>>281
Ancient but simple and works. I don't need 3D capability anyway. Maybe D3D or OpenGL could be faster, but I don't care because I don't think it's needed and it's quite a step up in complexity. I just want to see the faces on those mainstream browser developers when a pure and simple GDI-based solution blows away their bloated renderer that needs a several-times-faster GPU...)

For example, compare how to do something that should be simple in OpenGL, like rendering some vector graphics, and you find http://gamedev.stackexchange.com/questions/48034/how-do-i-render-a-filled-and-stroked-path-using-opengl which basically says "it's too hard", and the ONE function that GDI can do it with: http://msdn.microsoft.com/en-us/library/windows/desktop/dd145123(v=vs.85).aspx

As for porting, not so concerned - libXt/Xaw or whatever it's called on *nix should provide equivalent functionality on any system with X11. I don't care how hard it is to port because chances are if I want it to be efficient on a specific platform I'm going to have to use platform-specific things and end up rewriting a lot of the code to take advantage of that. Look at something like Dillo for example - I haven't tested it much on *nix, but on Windows it's far more bloated because it has to drag along its own *nix GUI libraries and doesn't even feel like a native application. Forget about making a lowest-common-denominator monstrosity that performs half-decently on a ton of platforms, concentrate on one platform first and others afterward.

Name: Anonymous 2014-11-17 23:11

>>285
Why do you insist on academics being the ones who care about ``understandable programs''? They're exactly the ones who care about microoptimizations and make programs unreadable and full of abstract bullshite.

Are you sure you're not mixing them up with the ENTERPRISE crowd?

Name: Anonymous 2014-11-17 23:41

I just want to see the faces on those mainstream browser developers when a pure and simple GDI-based solution blows away their bloated renderer that needs a several-times-faster GPU...
IIRC GDI is partly hardware accelerated (poorly, since it was never meant to be used that way) since Vista, so I can't see a GDI renderer ever beating a renderer that uses GL/D3D directly.

For example, compare how to do something that should be simple in OpenGL, like rendering some vector graphics
I thought you weren't going to implement the fancy shit like vector graphics and SVG?
The fact that you think bézier curves would be "the one thing that should be simple to implement in OpenGL" shows that you don't have any understanding of the graphics pipeline. GPUs are not magic graphics pixie dust, they're machines that eat vertices and shit pixels.
You can render them in multiple ways with OpenGL; on newer cards, tessellation shaders (and to a lesser extent, geometry shaders) are basically designed for turning bézier surfaces, the 3D equivalent of bézier curves, into triangles. So you could easily do the same thing in 2D. On older cards, you could do the curve->lines->triangles conversion yourself in software, or you could just put all of it on the slow path and render it all in software, like most people do for text. Point is, it's a choice that your application has to make and not something that belongs in DA STANDAD in any way.

And arbitrary path rendering and filling only gets more complicated from there. It's just not a strong suit for GPUs at all. https://en.wikipedia.org/wiki/Direct2D#Implementation

However, if you ignore the arbitrary vector SVG shit like I thought you would want to, then 99.99% of graphics rendering is going to be basic shit like rectangles, lines, circles, and scaled images, that any GPU can chew through with ease.

As for porting, not so concerned - libXt/Xaw or whatever it's called on *nix should provide equivalent functionality on any system with X11.
At least with GDI you have stability on your side, but it's pretty likely that the X11 libs are going to die in a few years when the Wayland/Mir switch happens.

but on Windows it's far more bloated because it has to drag along its own *nix GUI libraries and doesn't even feel like a native application.
There's a difference between not using a native UI for the "chrome" and not wanting the guts of your implementation tied to one platform.

Name: Anonymous 2014-11-18 0:47

>>287
The fact that you think bézier curves would be "the one thing that should be simple to implement in OpenGL" shows that you don't have any understanding of the graphics pipeline. GPUs are not magic graphics pixie dust, they're machines that eat vertices and shit pixels.

I hate to stick up for Cudder, but in the olden days we had some shitty yet remarkable support for analytic objects, which weren't described in verts. So it might just work.

However, if you ignore the arbitrary vector SVG shit like I thought you would want to, then 99.99% of graphics rendering is going to be basic shit like rectangles, lines, circles, and scaled images, that any GPU can chew through with ease.

Not so. Have you heard of floats, reflow? This shit is everywhere and it sucks. Once thats done, you sure can shit it out of a GPU pretty quick, but the GPU does the least of the work in the end so who cares? See also: https://github.com/servo/servo

Don't get me wrong, I think Cudder is crazy and GDI is awful but somehow I think that's probably the point.

Name: Anonymous 2014-11-18 2:38

I hate to stick up for Cudder, but in the olden days we had some shitty yet remarkable support for analytic objects, which weren't described in verts. So it might just work.

I believe most early graphics hardware basically consisted of one or two fast serial DSPs, so it wouldn't have been that weird for them to use a "software" rasterization method like a scanline rasterizer for splines/bézier curves/etc; this is essentially how they implemented triangle rasterization or anything else as well.

You can do anything you want with compute shaders now, but 1. it's not going to take advantage of the fixed-function hardware like the triangle rasterizer, and 2. you're not going to get good parallelism unless you need to render hundreds of bézier curves for some reason; the only legitimate usage I could think of would be high-quality GPU-accelerated font rasterization, which isn't a terrible idea come to think of it. So again, given that there are so many different ways to implement these things with their own tradeoffs, it makes little sense to bake it into an API that is supposed to be a thin shell over the hardware. The fixed-function pipeline is dead.

Aside: lol, Firefox wants to correct "GPU-accelerated" to "GNU-accelerated"

Not so. Have you heard of floats, reflow? This shit is everywhere and it sucks. Once thats done, you sure can shit it out of a GPU pretty quick, but the GPU does the least of the work in the end so who cares?

Because it can save CPU time that would be wasted on a task it isn't suited for while the GPU is mostly sitting idle, because doing very simple rendering on the GPU is going to use less power than doing the same task on the CPU, and because you have to go through the GPU at the end anyway so you might as well take advantage of it.

But hey, it won't run on grandthing Cudder's Win95 Pentium, so it's not acceptable.

Name: Anonymous 2014-11-18 3:39

I believe most early graphics hardware basically consisted of one or two fast serial DSPs,

That's not really the point. All cards can still do it (just not in "modern GL"), and the output quality is as good as the display can handle. If you're linking GL, you might as well use it.

GPU-accelerated font rasterization, which isn't a terrible idea come to think of it.

It's been done. It's neat, but it chews up your entire GPU with only a single column of text. The reflow on a modern web page (or desktop) is harsh.

Because it can save CPU time that would be wasted on a task it isn't suited for while the GPU is mostly sitting idle,

You do get a boost out of it, but it's tiny by comparison. For most of the page you have to construct the pixmaps on the CPU anyway. I don't think anyone would bother if they weren't already linking gl for use with webgl. PS. I hate to break it to you, but scrolling isn't just blitting, a lot of sites modify the DOM in scroll handlers. Yes it's stupid and I hate it but that doesn't change it.

Name: Anonymous 2014-11-18 4:28

That's not really the point. All cards can still do it (just not in "modern GL"), and the output quality is as good as the display can handle. If you're linking GL, you might as well use it.

I can pretty much guarantee you that they're emulating it on the CPU or in a shader. It may be easy to use the fixed function pipeline, but everyone's abandoned it for a reason. You can almost always do things better yourself.
Not to mention, you don't get any fixed function support on GL ES devices, nor in the newer GL or D3D contexts.

It's been done.

I'm aware of a library that precalculates all the glyphs into a texture and renders like a bitmapped font, but that's not exactly the same.

It's neat, but it chews up your entire GPU with only a single column of text. The reflow on a modern web page (or desktop) is harsh.

Eh, I don't see why i.e. FreeType would be any faster at rendering the glyphs.

You do get a boost out of it, but it's tiny by comparison.

[citation needed]

PS. I hate to break it to you, but scrolling isn't just blitting, a lot of sites modify the DOM in scroll handlers.

But Cudder-sama is ignoring those parts of the spec.

Name: Anonymous 2014-11-18 5:54

>>291
You're still missing the point. "You can almost always do things better yourself." Analytic objects? Really? They look really good in GL, for what they are at least. You're going to spend a lot of time doing a bad job of it, that's what you're going to do.

I'm aware of a library that precalculates all the glyphs into a texture and renders like a bitmapped font, but that's not exactly the same.

And not what I'm talking about. If I thought it was, I would have written it off as "looks like shit" and "we stopped using bitmapped fonts for a reason" immediately.

Eh, I don't see why i.e. FreeType would be any faster at rendering the glyphs.

Because merely rendering glyphs doesn't render text.

I forget what the exact problem was, but it was pretty fundamental. I think it had something to do with the amount of data required to represent the glyphs created a lot of tension, and used up a lot of the GPU. Sure, it was faster, but so much less efficient that it isn't really worth it to actually do it (i.e. you do want to draw graphics with your card, right?) Keep in mind you have kerning, reflow and all that stuff to worry about, and yes, you need to do it on the GPU or else you will just waste time copying data back and forth.

Someday I hope it works out well. It's not going to happen on today's hardware though. Moving on.

[citation needed]

If you really think compositing some pixmaps is so hefty when compared to rendering them on a CPU, I would love to hear all about how that's supposed to work. If you think you can do the rendering efficiently on a GPU I encourage you to try. Many people will thank you if it works.

I'll see if I can find you a citation though.

But Cudder-sama is ignoring those parts of the spec.

Fine, but: in that case you can do the same thing on the CPU. I know you still think compositing is so expensive (even when we're not doing blur and other effects, are we?) so there's probably not much in this line of discussion.

Name: Anonymous 2014-11-18 8:41

You're still missing the point. "You can almost always do things better yourself." Analytic objects? Really? They look really good in GL, for what they are at least. You're going to spend a lot of time doing a bad job of it, that's what you're going to do.

Graphics programming, motherfucker. No one cares if your result looks the same, we want you to do it as fast as possible. If you don't want to put the effort in, get the fuck out and become an HTML apper.

Because merely rendering glyphs doesn't render text.
I forget what the exact problem was, but it was pretty fundamental. I think it had something to do with the amount of data required to represent the glyphs created a lot of tension, and used up a lot of the GPU. Sure, it was faster, but so much less efficient that it isn't really worth it to actually do it (i.e. you do want to draw graphics with your card, right?) Keep in mind you have kerning, reflow and all that stuff to worry about, and yes, you need to do it on the GPU or else you will just waste time copying data back and forth.

Text rendering, not layout, kerning, etc. You don't really seem to know what you're talking about, but for the record, I'm talking about RASTERIZING GLYPHS, COMPUTING THE PIXEL COVERAGE OF BÉZIER CURVES on the GPU, and not anything else completely orthogonal to that goal.

Good fonts have kerning information built in, so that you don't need to rasterize the text to tell how the characters should line up. You just plow through the character widths+kerning info on the CPU to produce a stream of characters and their positions, put that in the pipeline, and let a shader running on hundreds of processing elements in parallel compute thousands of perfectly antialiased glyphs without breaking a sweat.

Name: Anonymous 2014-11-18 9:07

>>293
Dude, you're arguing against using a pixel perfect, debugged, optimized function of a library you're already linking in favour of rolling your own, for a task that's easy to fuck up.

Text rendering, not layout, kerning, etc.
It's not rendered text until you've done the rest. Sure, if you want to render glyphs, go ahead. They're pefectly usable individual glyphs that have no place being next to one another. If that's all you want, it's fine... and has nothing to do with anything.

Name: Anonymous 2014-11-19 7:08

this thread perfectly encapsulates all of our disfunctional behaviors.

Name: Anonymous 2014-11-19 7:24

>>295
ENCAPSULATE MY ANUS

Name: Anonymous 2014-11-19 7:26

Analytic objects?

Pffsh.

Big deal.

Man, I'm hungry.

Maybe I can get some pussy outside.

(movement begins to occur in my pants) grumble grumble (something is happening!) ROARRRR ROARRRRR ROARRRRRRRRRRRRRRRR!

Settle! Down, boy!

Name: Anonymous 2014-11-19 7:34

>>297
The reactions of our generation:

Ben Bitdiddle: Who's gonna walk outside with an erection lke that? hahaha

Alyssa P. Hacker: OMG! That poor kitten!

Lem E. Tweakit: That's not how you train a fucking dog, here, let me show you how! *Grabs the dog ...*

Name: Anonymous 2014-11-19 15:38

>>298
That's not how you fuck a training dog
FTFY

Name: Anonymous 2014-11-19 15:52

Alyssa is a dump ugly slut, Eva is much smarter and cute.

Newer Posts