Home » U++ Library support » Draw, Display, Images, Bitmaps, Icons » BufferPainter::Fill(Image,...) optimization question
Re: BufferPainter::Fill(Image,...) optimization question [message #54161 is a reply to message #54159] |
Thu, 04 June 2020 18:49   |
 |
mirek
Messages: 14255 Registered: November 2005
|
Ultimate Member |
|
|
So this is (likely) the correct code:
void SpanFiller::Render(int val, int len)
{
if(val == 0) {
t += len;
s += len;
return;
}
if(alpha != 256)
val = alpha * val >> 8;
if(val == 256 && ss->opaque) {
const RGBA *e = s + len;
const RGBA *s0 = s;
while(s < e && s->a == 0)
s++;
t += s - s0;
s0 = s;
while(s < e && s->a != 255)
s++;
AlphaBlend(t, s0, val, s - s0);
t += s - s0;
s0 = s;
while(s < e && s->a == 255)
s++;
memcpy32(t, s0, s - s0);
t += s - s0;
s0 = s;
while(s < e && s->a)
s++;
AlphaBlend(t, s0, val, s - s0);
}
else
AlphaBlend(t, s, val, len);
t += len;
s += len;
}
Unfortunately it is then slower than new SSE2 AlphaBlend path, so...
Mirek
|
|
|
 |
|
BufferPainter::Fill(Image,...) optimization question
By: Tom1 on Mon, 27 April 2020 14:51
|
 |
|
Re: BufferPainter::Fill(Image,...) optimization question
By: Tom1 on Mon, 27 April 2020 16:51
|
 |
|
Re: BufferPainter::Fill(Image,...) optimization question
By: mirek on Thu, 04 June 2020 18:38
|
 |
|
Re: BufferPainter::Fill(Image,...) optimization question
By: mirek on Thu, 04 June 2020 18:49
|
 |
|
Re: BufferPainter::Fill(Image,...) optimization question
By: Tom1 on Thu, 04 June 2020 20:17
|
Goto Forum:
Current Time: Mon Apr 28 19:33:14 CEST 2025
Total time taken to generate the page: 0.01021 seconds
|