Bump stored lowp uniform color to 16-bit storage.
This makes loading into 16-bit channels more natural in _lowp.cpp. Change-Id: I1ed393873654060ef52f4632d670465528006bbd Reviewed-on: https://skia-review.googlesource.com/47261 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
This commit is contained in:
parent
57372152b2
commit
d286bfbd96
@ -92,7 +92,13 @@ void SkRasterPipeline::append_constant_color(SkArenaAlloc* alloc, const float rg
|
||||
auto ctx = alloc->make<SkJumper_UniformColorCtx>();
|
||||
Sk4f color = Sk4f::Load(rgba);
|
||||
color.store(&ctx->r);
|
||||
ctx->rgba = Sk4f_toL32(color);
|
||||
|
||||
// To make loads more direct, we store 8-bit values in 16-bit slots.
|
||||
color = color * 255.0f + 0.5f;
|
||||
ctx->rgba[0] = (uint16_t)color[0];
|
||||
ctx->rgba[1] = (uint16_t)color[1];
|
||||
ctx->rgba[2] = (uint16_t)color[2];
|
||||
ctx->rgba[3] = (uint16_t)color[3];
|
||||
|
||||
this->unchecked_append(uniform_color, ctx);
|
||||
INC_COLOR;
|
||||
|
@ -118,7 +118,7 @@ struct SkJumper_2PtConicalCtx {
|
||||
|
||||
struct SkJumper_UniformColorCtx {
|
||||
float r,g,b,a;
|
||||
uint32_t rgba;
|
||||
uint16_t rgba[4]; // [0,255] in a 16-bit lane.
|
||||
};
|
||||
|
||||
struct SkJumper_ColorLookupTableCtx {
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -137,11 +137,10 @@ SI D join(S lo, S hi) {
|
||||
// ~~~~~~ Basic / misc. stages ~~~~~~ //
|
||||
|
||||
STAGE(uniform_color, const SkJumper_UniformColorCtx* c) {
|
||||
auto rgba = (const uint8_t*)&c->rgba;
|
||||
r = rgba[0];
|
||||
g = rgba[1];
|
||||
b = rgba[2];
|
||||
a = rgba[3];
|
||||
r = c->rgba[0];
|
||||
g = c->rgba[1];
|
||||
b = c->rgba[2];
|
||||
a = c->rgba[3];
|
||||
}
|
||||
STAGE(black_color, Ctx::None) { r = g = b = 0; a = 255; }
|
||||
STAGE(white_color, Ctx::None) { r = g = b = 255; a = 255; }
|
||||
|
Loading…
Reference in New Issue
Block a user