diff options
Diffstat (limited to 'src/opts')
-rw-r--r-- | src/opts/SkRasterPipeline_opts.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/opts/SkRasterPipeline_opts.h b/src/opts/SkRasterPipeline_opts.h index fac5d1b93b..2431ad78f9 100644 --- a/src/opts/SkRasterPipeline_opts.h +++ b/src/opts/SkRasterPipeline_opts.h @@ -1712,15 +1712,23 @@ STAGE(store_u16_be, const SkJumper_MemoryCtx* ctx) { } STAGE(load_f32, const SkJumper_MemoryCtx* ctx) { - auto ptr = ptr_at_xy<const float>(ctx, 4*dx,dy); + auto ptr = ptr_at_xy<const float>(ctx, 4*dx,4*dy); load4(ptr,tail, &r,&g,&b,&a); } STAGE(load_f32_dst, const SkJumper_MemoryCtx* ctx) { - auto ptr = ptr_at_xy<const float>(ctx, 4*dx,dy); + auto ptr = ptr_at_xy<const float>(ctx, 4*dx,4*dy); load4(ptr,tail, &dr,&dg,&db,&da); } +STAGE(gather_f32, const SkJumper_GatherCtx* ctx) { + const float* ptr; + U32 ix = ix_and_ptr(&ptr, ctx, r,g); + r = gather(ptr, 4*ix + 0); + g = gather(ptr, 4*ix + 1); + b = gather(ptr, 4*ix + 2); + a = gather(ptr, 4*ix + 3); +} STAGE(store_f32, const SkJumper_MemoryCtx* ctx) { - auto ptr = ptr_at_xy<float>(ctx, 4*dx,dy); + auto ptr = ptr_at_xy<float>(ctx, 4*dx,4*dy); store4(ptr,tail, r,g,b,a); } |