Krita Source Code Documentation
Loading...
Searching...
No Matches
KoOptimizedCompositeOpFactory Class Reference

#include <KoOptimizedCompositeOpFactory.h>

Static Public Member Functions

static KoCompositeOpcreateAlphaDarkenOpCreamy128 (const KoColorSpace *cs)
 
static KoCompositeOpcreateAlphaDarkenOpCreamy32 (const KoColorSpace *cs)
 
static KoCompositeOpcreateAlphaDarkenOpCreamyU64 (const KoColorSpace *cs)
 
static KoCompositeOpcreateAlphaDarkenOpHard128 (const KoColorSpace *cs)
 
static KoCompositeOpcreateAlphaDarkenOpHard32 (const KoColorSpace *cs)
 
static KoCompositeOpcreateAlphaDarkenOpHardU64 (const KoColorSpace *cs)
 
static KoCompositeOpcreateCopyOp128 (const KoColorSpace *cs)
 
static KoCompositeOpcreateCopyOp32 (const KoColorSpace *cs)
 
static KoCompositeOpcreateCopyOpU64 (const KoColorSpace *cs)
 
static KoCompositeOpcreateOverOp128 (const KoColorSpace *cs)
 
static KoCompositeOpcreateOverOp32 (const KoColorSpace *cs)
 
static KoCompositeOpcreateOverOpU64 (const KoColorSpace *cs)
 

Detailed Description

The creation of the optimized composite ops is moved into a separate objects module for two reasons:

1) They are not templated, that is they do not need inlining into the user's code. 2) This removes compilation dependencies. 3) (most important!) When the object module is shared with a colorspace class, which is quite huge itself, GCC layouts the code somehow badly that causes 60% performance degradation.

Definition at line 27 of file KoOptimizedCompositeOpFactory.h.

Member Function Documentation

◆ createAlphaDarkenOpCreamy128()

◆ createAlphaDarkenOpCreamy32()

KoCompositeOp * KoOptimizedCompositeOpFactory::createAlphaDarkenOpCreamy32 ( const KoColorSpace * cs)
static

◆ createAlphaDarkenOpCreamyU64()

KoCompositeOp * KoOptimizedCompositeOpFactory::createAlphaDarkenOpCreamyU64 ( const KoColorSpace * cs)
static

◆ createAlphaDarkenOpHard128()

KoCompositeOp * KoOptimizedCompositeOpFactory::createAlphaDarkenOpHard128 ( const KoColorSpace * cs)
static

◆ createAlphaDarkenOpHard32()

KoCompositeOp * KoOptimizedCompositeOpFactory::createAlphaDarkenOpHard32 ( const KoColorSpace * cs)
static

◆ createAlphaDarkenOpHardU64()

KoCompositeOp * KoOptimizedCompositeOpFactory::createAlphaDarkenOpHardU64 ( const KoColorSpace * cs)
static

◆ createCopyOp128()

KoCompositeOp * KoOptimizedCompositeOpFactory::createCopyOp128 ( const KoColorSpace * cs)
static

Definition at line 53 of file KoOptimizedCompositeOpFactory.cpp.

54{
55 return createOptimizedClass<KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpCopy128> >(cs);
56}

◆ createCopyOp32()

KoCompositeOp * KoOptimizedCompositeOpFactory::createCopyOp32 ( const KoColorSpace * cs)
static

Definition at line 29 of file KoOptimizedCompositeOpFactory.cpp.

30{
31 return createOptimizedClass<KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpCopy32> >(cs);
32}

◆ createCopyOpU64()

KoCompositeOp * KoOptimizedCompositeOpFactory::createCopyOpU64 ( const KoColorSpace * cs)
static

Definition at line 77 of file KoOptimizedCompositeOpFactory.cpp.

78{
79 return createOptimizedClass<KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpCopyU64> >(cs);
80}

◆ createOverOp128()

KoCompositeOp * KoOptimizedCompositeOpFactory::createOverOp128 ( const KoColorSpace * cs)
static

Definition at line 48 of file KoOptimizedCompositeOpFactory.cpp.

49{
50 return createOptimizedClass<KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpOver128> >(cs);
51}

◆ createOverOp32()

KoCompositeOp * KoOptimizedCompositeOpFactory::createOverOp32 ( const KoColorSpace * cs)
static

Definition at line 24 of file KoOptimizedCompositeOpFactory.cpp.

25{
26 return createOptimizedClass<KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpOver32> >(cs);
27}

◆ createOverOpU64()

KoCompositeOp * KoOptimizedCompositeOpFactory::createOverOpU64 ( const KoColorSpace * cs)
static

Definition at line 72 of file KoOptimizedCompositeOpFactory.cpp.

73{
74 return createOptimizedClass<KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpOverU64> >(cs);
75}

The documentation for this class was generated from the following files: