ector gradient: ++ optmization.

we know what size will be used for every span,
this graident buffer will be overwritten with new one,

So it doesn't need to clear every spans.
This commit is contained in:
Hermet Park 2019-08-30 17:13:31 +09:00
parent 7291c684fb
commit 9a4b6728d5
1 changed files with 6 additions and 6 deletions

View File

@ -318,13 +318,13 @@ _blend_gradient_alpha(int count, const SW_FT_Span *spans, void *user_data)
{
uint32_t *target = buffer + ((sd->raster_buffer->generic->w * spans->y) + spans->x);
uint32_t *mtarget = mbuffer + ((mask->generic->w * spans->y) + spans->x);
uint32_t *temp = gbuffer;
int length = spans->len;
memset(temp, 0x00, sizeof(uint32_t) * spans->len);
while (length)
{
int l = MIN(length, BLEND_GRADIENT_BUFFER_SIZE);
fetchfunc(temp, sd, spans->y, spans->x, l);
fetchfunc(gbuffer, sd, spans->y, spans->x, l);
uint32_t *temp = gbuffer;
for (int i = 0; i < l; i++)
{
@ -366,13 +366,13 @@ _blend_gradient_alpha_inv(int count, const SW_FT_Span *spans, void *user_data)
{
uint32_t *target = buffer + ((sd->raster_buffer->generic->w * spans->y) + spans->x);
uint32_t *mtarget = mbuffer + ((mask->generic->w * spans->y) + spans->x);
uint32_t *temp = gbuffer;
int length = spans->len;
memset(temp, 0x00, sizeof(uint32_t) * spans->len);
while (length)
{
int l = MIN(length, BLEND_GRADIENT_BUFFER_SIZE);
fetchfunc(temp, sd, spans->y, spans->x, l);
fetchfunc(gbuffer, sd, spans->y, spans->x, l);
uint32_t *temp = gbuffer;
for (int i = 0; i < l; i++)
{