Lines Matching refs:skvm
30 // rather than by the Shader, which follow this struct in the skvm::Uniforms buffer.
38 static skvm::Coord device_coord(skvm::Builder* p, skvm::Uniforms* uniforms) {
39 skvm::I32 dx = p->uniform32(uniforms->base, offsetof(BlitterUniforms, right))
49 skvm::Color onProgram(skvm::Builder*, skvm::Color c,
50 const SkColorInfo&, skvm::Uniforms*, SkArenaAlloc*) const override {
72 skvm::Color onProgram(skvm::Builder* p,
73 skvm::Coord /*device*/, skvm::Coord /*local*/, skvm::Color /*paint*/,
76 skvm::Uniforms* uniforms, SkArenaAlloc*) const override {
79 skvm::PixelFormat fmt = skvm::SkColorType_to_PixelFormat(ct);
81 skvm::Color c = p->load(fmt, p->varying(SkColorTypeBytesPerPixel(ct)));
98 skvm::Color onProgram(skvm::Builder* p,
99 skvm::Coord device, skvm::Coord local, skvm::Color paint,
102 skvm::Uniforms* uniforms, SkArenaAlloc* alloc) const override {
104 skvm::Color c = as_SB(fShader)->program(p, device,local, paint,
141 skvm::I32 X = trunc(device.x - 0.5f),
146 skvm::I32 M = shl(Y & 1, 5)
161 skvm::F32 dither = to_F32(M) * scale + bias;
186 skvm::Color onProgram(skvm::Builder*,
187 skvm::Coord, skvm::Coord, skvm::Color paint,
189 skvm::Uniforms*, SkArenaAlloc*) const override {
291 skvm::Color SkVMBlitter::DstColor(skvm::Builder* p, const Params& params) {
292 skvm::PixelFormat dstFormat = skvm::SkColorType_to_PixelFormat(params.dst.colorType());
293 skvm::Ptr dst_ptr = p->varying(SkColorTypeBytesPerPixel(params.dst.colorType()));
297 void SkVMBlitter::BuildProgram(skvm::Builder* p, const Params& params,
298 skvm::Uniforms* uniforms, SkArenaAlloc* alloc) {
301 skvm::Ptr dst_ptr = p->varying(SkColorTypeBytesPerPixel(params.dst.colorType()));
310 skvm::Coord device = device_coord(p, uniforms);
311 skvm::Color paint = p->uniformColor(params.paint, uniforms);
314 skvm::Color src = as_SB(params.shader)->program(p, device, /*local=*/device, paint,
319 skvm::F32 M = from_unorm(8, p->load8(p->varying<uint8_t>())),
336 skvm::PixelFormat dstFormat = skvm::SkColorType_to_PixelFormat(params.dst.colorType());
337 skvm::Color dst = p->load(dstFormat, dst_ptr);
348 skvm::Color cov;
364 skvm::PixelFormat fmt = skvm::SkColorType_to_PixelFormat(kRGB_565_SkColorType);
371 skvm::Color clip = as_SB(params.clip)->program(p, device, /*local=*/device, paint,
425 const Params& params, skvm::Uniforms* uniforms, SkArenaAlloc* alloc, bool* ok) {
427 skvm::Uniform r = uniforms->pushF(params.paint.fR),
432 auto hash_shader = [&](skvm::Builder& p, const sk_sp<SkShader>& shader,
433 skvm::Color* outColor) {
436 skvm::Coord device = device_coord(&p, uniforms);
437 skvm::Color paint = {
453 const skvm::Val outputs[] = {
473 skvm::Builder p;
477 skvm::Color src;
483 skvm::Color cov;
497 skvm::Color dst = DstColor(&p, params);
498 skvm::Color outColor = blender->program(&p, src, dst, params.dst, uniforms, alloc);
502 const skvm::Val outputs[] = {
538 , fUniforms(skvm::UPtr{0}, kBlitterUniformsCount)
543 if (SkLRUCache<Key, skvm::Program>* cache = TryAcquireProgramCache()) {
544 auto cache_program = [&](skvm::Program&& program, Coverage coverage) {
559 SkLRUCache<SkVMBlitter::Key, skvm::Program>* SkVMBlitter::TryAcquireProgramCache() {
561 thread_local static SkLRUCache<Key, skvm::Program> cache{64};
585 skvm::Program SkVMBlitter::buildProgram(Coverage coverage) {
588 skvm::Program p;
589 if (SkLRUCache<Key, skvm::Program>* cache = TryAcquireProgramCache()) {
590 if (skvm::Program* found = cache->find(key)) {
605 skvm::Builder builder;
610 skvm::Program program = builder.done(DebugName(key).c_str());
692 const skvm::Program* program = nullptr;