Good points Ian, but I don't see why we need to support software drawing when OpengGL supports drawing primitives? Is there a compelling reason that drawing lines with the CPU is better then doing it on the GPU?
Also, I'm a bit tired of the "python is slow so you may as well make everything slow and not expect it to work quickly" attitude. A pygame app burns through the CPU not because of the interpretor, but because it is flipping bits in ram when a GPU could do it. On Mon, Mar 20, 2017 at 12:42 PM, Ian Mallett <i...@geometrian.com> wrote: > Hi, > > As sort of a side-note, since performance has come up . . . > > Per-pixel drawing operations, if they must be individually managed by the > CPU, will always be much faster to do on the CPU. This means things like > Surface.set_at(...) and likely draw.circle(...) as well as potentially > things like draw.rect(...) and draw.line(...). And it means everything, if > there are a lot of calls. The GPU is obviously faster at graphics > operations in-general, but it's still a thorough loss if you have to send > the commands over the PCIe in the first place: if not in processing time, > then in latency. As a matter of fact, this is true for most things people > try to use GPUs for, and mitigating it is why e.g. Vulkan has to be so > complex. > > What does this have to do with anything? > > Well, it's a philosophical question of what we want pygame to be: > > 1: Hardware-accelerated pygame-API-compatible library. (Basically won't > work for reasons above.) > 2: Hardware-accelerated pygame-API-incompatible library. (Fine, but AFAIK > this already exists <https://bitbucket.org/pyglet/pyglet/wiki/Home>. > There are probably other projects too.) > 3: Software pygame-API-compatible library. (We have this now, and any > movement to SDL2 should be considered in light of what features it changes > (i.e. many misc. improvements, but worse (?) blitting).) > 4: Software pygame-API-incompatible library. (Works best, IMO, with any > plan to support SDL2.) > > Python is a slow language, and if you're using it, you're implicitly > saying usability is more important right now. This includes graphics, and > pygame is currently occupying that niche: highly usable, low-level, > slow(ish; still pretty fast) graphics. If we want hardware acceleration > (options 1, 2) then we're moving outside that niche. Ditto, to a lesser > extent, breaking compatibility to add more-modern features (option 4). So > basically, what it comes down to is whether we like our niche, whether > moving to/incorporating SDL2 is focusing on a real problem, if so whether > moving to SDL2 affects our feature set in ways we do like, and if so > whether this affects our niche in ways we don't like. > > Ian >