IP Library Granted Patent US 12,314,726
Granted Patent B2
US 12,314,726 · App. 18/457,112 · Granted May 27, 2025

Performance benchmarking-based selection of processor for generating graphic primitives

Inventors: Christopher Tremblay (Cantley, CA); John Jason Kurczak (Ottawa, CA)
Assignee: Corel Corporation
G06F9/3877G06F9/30065G06F11/3024G06F11/3428G06T1/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,314,726
App. No.
18/457,112
Granted
May 27, 2025
Kind
B2
Abstract

Systems and methods for performance benchmarking-based selection of processor for generating graphic primitives. An example method comprises: initializing, by a computer system comprising a plurality of processors of a plurality of processor types, a current value of a graphic primitive parameter; for each processor type of the plurality of processor types, computing a corresponding value of a performance metric by generating, using at least one processor of a currently selected processor type, a corresponding graphic primitive of a specified graphic primitive type, wherein the graphic primitive is characterized by the current value of the graphic primitive parameter; and estimating, based on the computed performance metric values, a threshold value of the graphic primitive parameter.

Claims (88)

1. A method, comprising:

receiving upon a computer system comprising a pair of processors a command to render a graphic primitive, the command specifying a type of the graphic primitive and values of one or more parameters of the graphic primitive;

determining whether a threshold parameter value exists with respect to a parameter of the one or more parameters of the graphic primitive;

upon a positive determination that the threshold parameter value exists with respect to a parameter of the one or more parameters of the graphic primitive determining whether a value of the parameter for which the threshold parameter value exists exceeds the threshold parameter value; and

upon determining the value of the parameter for which the threshold parameter value exists exceeds the threshold parameter value selecting a processor of the pair of processors for generating the graphic primitive; and

upon determining the value of the parameter for which the threshold parameter value exists does not exceed the threshold parameter value selecting the other processor of the pair of processors for generating the graphic primitive; wherein

the threshold parameter value of the parameter of the one or more parameters of the graphic primitive was established by executing, upon the computer system, a performance benchmarking process, the performance benchmarking process comprising:

generating the graphic primitive multiple times with the pair of processors of the computer system whilst varying the parameter of the one or more parameters of the graphic primitive in order to determine the threshold parameter value of the parameter of the one or more parameters of the graphic primitive; and

storing the threshold parameter value of the parameter of the one or more parameters of the graphic primitive and the parameter of the one or more parameters of the graphic primitive threshold value within a memory accessible to the computer system; wherein

below the threshold value the other processor of the pair of processors outperforms the processor of the pair of processors and above the threshold value the processor of the pair of processors outperforms the other processor of the pair of processors; and

the determination of whether one of the processor of the pair of processors and the other processor of the pair of processors outperforms the one of the other processor of the pair of processors and the processor of the pair of processors is established in dependence upon a performance metric for generating and rendering the graphic primitive for a value of the parameter value.

2. The method according to claim 1 , wherein

the processor of the pair of processors and the other processor of the pair of processors are different processor types.

3. The method of claim 1 , wherein

the threshold parameter value is defined in dependence upon a value of the parameter of the one or more parameters at which the pair of processors demonstrate values of a performance metric differing by less than a performance metric accuracy threshold.

4. The method according to claim 1 , wherein

the graphic primitive is one of:

a brushstroke within the graphic-rendering application;

rendering a paint layer within the graphic-rendering application using a shading algorithm;

combining layered images within the graphic rendering application for rendering;

a digital image filter;

a digital image effect; and

a texture synthesis.

5. The method according to claim 1 , wherein

the performance benchmarking process further comprises:

terminating the performance benchmarking process upon a terminating condition being met;

the sets of parameters for each iteration are established in dependence upon the performance metrics for the plurality of processors such that the performance benchmarking process iterates towards a common performance metric for the plurality of processors; and

the terminating condition is a maximum number of iterations.

6. The method according to claim 1 , wherein

the performance benchmarking process further comprises:

terminating the performance benchmarking process upon a terminating condition being met;

the sets of parameters for each iteration are established in dependence upon the performance metrics for the plurality of processors such that the performance benchmarking process iterates towards a common performance metric for the plurality of processors; and

the terminating condition is the performance metrics for the plurality of processors differ by less than the performance metric accuracy threshold.

7. A non-transitory memory storing computer executable instructions which when executed by a microprocessor of a computer systems configure the computer system to execute a process comprising the steps of:

receiving upon the computer system a command to render a graphic primitive, the command specifying a type of the graphic primitive and values of one or more parameters of the graphic primitive;

determining whether a threshold parameter value exists with respect to a parameter of the one or more parameters of the graphic primitive;

upon a positive determination that the threshold parameter value exists with respect to a parameter of the one or more parameters of the graphic primitive determining whether a value of the parameter for which the threshold parameter value exists exceeds the threshold parameter value; and

upon determining the value of the parameter for which the threshold parameter value exists exceeds the threshold parameter value selecting a processor of the pair of processors for generating the graphic primitive; and

upon determining the value of the parameter for which the threshold parameter value exists does not exceed the threshold parameter value selecting the other processor of the pair of processors for generating the graphic primitive; wherein

the computer system comprises the pair of processors;

the threshold parameter value of the parameter of the one or more parameters of the graphic primitive was established by executing, upon the computer system, a performance benchmarking process, the performance benchmarking process comprising:

generating the graphic primitive multiple times with the pair of processors of the computer system whilst varying the parameter of the one or more parameters of the graphic primitive in order to determine the threshold parameter value of the parameter of the one or more parameters of the graphic primitive; and

storing the threshold parameter value of the parameter of the one or more parameters of the graphic primitive and the parameter of the one or more parameters of the graphic primitive threshold value within a memory accessible to the computer system; wherein

below the threshold value the other processor of the pair of processors outperforms the processor of the pair of processors and above the threshold value the processor of the pair of processors outperforms the other processor of the pair of processors; and

the determination of whether one of the processor of the pair of processors and the other processor of the pair of processors outperforms the one of the other processor of the pair of processors and the processor of the pair of processors is established in dependence upon a performance metric for generating and rendering the graphic primitive for a value of the parameter value.

8. The memory according to claim 7 , wherein

at least one of:

the processor of the pair of processors and the other processor of the pair of processors are different processor types; and

the microprocessor is one of the processor of the pair of processors and the other processor of the pair of processors.

9. The memory of claim 7 , wherein

the threshold parameter value is defined in dependence upon a value of the parameter of the one or more parameters at which the pair of processors demonstrate values of a performance metric differing by less than a performance metric accuracy threshold.

10. The memory according to claim 7 , wherein

the graphic primitive is one of:

a brushstroke within the graphic-rendering application;

rendering a paint layer within the graphic-rendering application using a shading algorithm;

combining layered images within the graphic rendering application for rendering;

a digital image filter;

a digital image effect; and

a texture synthesis.

11. The memory according to claim 7 , wherein

the performance benchmarking process further comprises:

terminating the performance benchmarking process upon a terminating condition being met;

the sets of parameters for each iteration are established in dependence upon the performance metrics for the plurality of processors such that the performance benchmarking process iterates towards a common performance metric for the plurality of processors; and

the terminating condition is a maximum number of iterations.

12. The memory according to claim 7 , wherein

the performance benchmarking process further comprises:

terminating the performance benchmarking process upon a terminating condition being met;

the sets of parameters for each iteration are established in dependence upon the performance metrics for the plurality of processors such that the performance benchmarking process iterates towards a common performance metric for the plurality of processors; and

the terminating condition is the performance metrics for the plurality of processors differ by less than the performance metric accuracy threshold.

13. A method, comprising:

receiving upon a computer system comprising a pair of processors a command to render a graphic primitive, the command specifying a type of the graphic primitive and values of one or more parameters of the graphic primitive;

determining whether a threshold parameter value exists with respect to a parameter of the one or more parameters of the graphic primitive;

upon a positive determination that the threshold parameter value exists with respect to a parameter of the one or more parameters of the graphic primitive determining whether a value of the parameter for which the threshold parameter value exists exceeds the threshold parameter value; and

upon determining the value of the parameter for which the threshold parameter value exists exceeds the threshold parameter value selecting a processor of the pair of processors for generating the graphic primitive; and

upon determining the value of the parameter for which the threshold parameter value exists does not exceed the threshold parameter value selecting the other processor of the pair of processors for generating the graphic primitive; wherein

the threshold parameter value of the parameter of the one or more parameters of the graphic primitive was established by executing, upon the computer system, a performance benchmarking process, the performance benchmarking process comprising:

generating the graphic primitive multiple times whilst varying the one or more other parameters of the graphic primitive in order to determine one or more other threshold values of the one or more other parameters of graphic primitive at which the pair of processors demonstrate values of a performance metric differing by less than a performance metric accuracy threshold; and

the parameter of the one or more parameters of the graphic primitive is one of the one or more other parameters of the graphic primitive.

14. A non-transitory memory storing computer executable instructions which when executed by a microprocessor of a computer systems configure the computer system to execute a process comprising the steps of:

receiving upon the computer system a command to render a graphic primitive, the command specifying a type of the graphic primitive and values of one or more parameters of the graphic primitive;

determining whether a threshold parameter value exists with respect to a parameter of the one or more parameters of the graphic primitive;

upon a positive determination that the threshold parameter value exists with respect to a parameter of the one or more parameters of the graphic primitive determining whether a value of the parameter for which the threshold parameter value exists exceeds the threshold parameter value; and

upon determining the value of the parameter for which the threshold parameter value exists exceeds the threshold parameter value selecting a processor of the pair of processors for generating the graphic primitive; and

upon determining the value of the parameter for which the threshold parameter value exists does not exceed the threshold parameter value selecting the other processor of the pair of processors for generating the graphic primitive; wherein

the computer system comprises the pair of processors;

the threshold parameter value of the parameter of the one or more parameters of the graphic primitive was established by executing, upon the computer system, a performance benchmarking process, the performance benchmarking process comprising:

generating the graphic primitive multiple times whilst varying the one or more other parameters of the graphic primitive in order to determine one or more other threshold values of the one or more other parameters of graphic primitive at which the pair of processors demonstrate values of a performance metric differing by less than a performance metric accuracy threshold; and

the parameter of the one or more parameters of the graphic primitive is one of the one or more other parameters of the graphic primitive.

Assignments (2)
SECURITY INTEREST Recorded May 1, 2026
From: COREL CORPORATION
To: FIRST-CITIZENS BANK & TRUST COMPANY
Reel/Frame 075315/0928 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2023
From: TREMBLAY, CHRISTOPHER; KURCZAK, JOHN JASON
To: COREL CORPORATION
Reel/Frame 064749/0381 →
Continuity (3)
Continuation 17962277 · Oct 7, 2022
Continuation 16870051 · May 8, 2020
Related Publication 20230401070A1 · Dec 14, 2023
References Cited (10)
US 8572407B1 · Chengottarasappan et al. · 2013 [cited by applicant]
US 20110252411A1 · Martin et al. · 2011 [cited by applicant]
US 20120149464A1 · Bone · 2012 [cited by examiner]
US 20140189708A1 · Lee · 2014 [cited by examiner]
US 20140327686A1 · Jia · 2014 [cited by applicant]
US 20170153926A1 · Callegari et al. · 2017 [cited by applicant]
US 20170264769A1 · Tajima · 2017 [cited by examiner]
US 20210232399A1 · Yang et al. · 2021 [cited by applicant]
Corel Painter 2021—User Guide https://product.corel.com/help/Painter/540111140/Main/Contents/Resources/en.lproj/Corel-Painter-2021.pdf. [cited by applicant]
Corel Painter 2021—Quick Start Guide https://manuals.corel.sklep.pl/Painter2021/Corel-Painter-2021-przewodnik_EN.pdf. [cited by applicant]