Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 2c62e7e

Browse files
Mike KleinSkia Commit-Bot
authored andcommitted
factor out some helpers in SkVMBlitter
device_coord() and paint_color() get the device coordinate as skvm::Coord and paint color as skvm::Color respectively. Change-Id: Ia35c635d073b5aa7f4369340cff108027728cb74 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319765 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Mike Klein <mtklein@google.com>
1 parent fe1a97a commit 2c62e7e

File tree

1 file changed

+26
-29
lines changed

1 file changed

+26
-29
lines changed

src/core/SkVMBlitter.cpp

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -110,30 +110,38 @@ namespace {
110110

111111
static void release_program_cache() { }
112112

113+
static skvm::Coord device_coord(skvm::Builder* p, skvm::Uniforms* uniforms) {
114+
skvm::I32 dx = p->uniform32(uniforms->base, offsetof(BlitterUniforms, right))
115+
- p->index(),
116+
dy = p->uniform32(uniforms->base, offsetof(BlitterUniforms, y));
117+
return {
118+
to_F32(dx) + 0.5f,
119+
to_F32(dy) + 0.5f,
120+
};
121+
}
122+
123+
static skvm::Color paint_color(skvm::Builder* p, skvm::Uniforms* uniforms) {
124+
return {
125+
p->uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fR)),
126+
p->uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fG)),
127+
p->uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fB)),
128+
p->uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fA)),
129+
};
130+
}
131+
113132
// If build_program() can't build this program, cache_key() sets *ok to false.
114133
static Key cache_key(const Params& params,
115134
skvm::Uniforms* uniforms, SkArenaAlloc* alloc, bool* ok) {
116135
auto hash_shader = [&](const sk_sp<SkShader>& shader) {
117136
const SkShaderBase* sb = as_SB(shader);
118137
skvm::Builder p;
119138

120-
skvm::I32 dx = p.uniform32(uniforms->base, offsetof(BlitterUniforms, right))
121-
- p.index(),
122-
dy = p.uniform32(uniforms->base, offsetof(BlitterUniforms, y));
123-
skvm::Coord device = {to_F32(dx) + 0.5f,
124-
to_F32(dy) + 0.5f},
125-
local = device;
126-
127-
skvm::Color paint = {
128-
p.uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fR)),
129-
p.uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fG)),
130-
p.uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fB)),
131-
p.uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fA)),
132-
};
139+
skvm::Coord device = device_coord(&p, uniforms);
140+
skvm::Color paint = paint_color(&p, uniforms);
133141

134142
uint64_t hash = 0;
135143
if (auto c = sb->program(&p,
136-
device,local, paint,
144+
device,/*local=*/device, paint,
137145
params.matrices, /*localM=*/nullptr,
138146
params.quality, params.dst,
139147
uniforms,alloc)) {
@@ -191,22 +199,11 @@ namespace {
191199
// - MaskLCD16: 565 coverage varying
192200
// - UniformA8: 8-bit coverage uniform
193201

194-
skvm::I32 dx = p->uniform32(uniforms->base, offsetof(BlitterUniforms, right))
195-
- p->index(),
196-
dy = p->uniform32(uniforms->base, offsetof(BlitterUniforms, y));
197-
skvm::Coord device = {to_F32(dx) + 0.5f,
198-
to_F32(dy) + 0.5f},
199-
local = device;
200-
201-
skvm::Color paint = {
202-
p->uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fR)),
203-
p->uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fG)),
204-
p->uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fB)),
205-
p->uniformF(uniforms->base, offsetof(BlitterUniforms, paint.fA)),
206-
};
202+
skvm::Coord device = device_coord(p, uniforms);
203+
skvm::Color paint = paint_color(p, uniforms);
207204

208205
// See note about arguments above... a SpriteShader will call p->arg() once here.
209-
skvm::Color src = as_SB(params.shader)->program(p, device,local, paint,
206+
skvm::Color src = as_SB(params.shader)->program(p, device,/*local=*/device, paint,
210207
params.matrices, /*localM=*/nullptr,
211208
params.quality, params.dst,
212209
uniforms, alloc);
@@ -279,7 +276,7 @@ namespace {
279276
} break;
280277
}
281278
if (params.clip) {
282-
skvm::Color clip = as_SB(params.clip)->program(p, device,local, paint,
279+
skvm::Color clip = as_SB(params.clip)->program(p, device,/*local=*/device, paint,
283280
params.matrices, /*localM=*/nullptr,
284281
params.quality, params.dst,
285282
uniforms, alloc);

0 commit comments

Comments
 (0)