IP Library Granted Patent US 9,886,735
Granted Patent B2
US 9,886,735 · App. 14/430,112 · Granted Feb 6, 2018

Hybrid engine for central processing unit and graphics processor

Inventors: Christophe Soum (Clermont-Ferrand, FR); Eric Batut (Clermont-Ferrand, FR)
Assignee: ALLEGORITHMIC
G06T1/20G06T1/60G06T11/001
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 9,886,735
App. No.
14/430,112
Granted
Feb 6, 2018
Kind
B2
Abstract

A method is described for generating procedural textures for a computer having a unified CPU/GPU memory architecture, to generate textures for contents that are managed by a graphics card (GPU), and including the steps of: receiving the data of a graph consisting of a plurality of filters and sequentially traversing said graph such as to allow, for each filter traversed, the steps of: identifying the processor preselected for executing this filter; receiving the instructions for the preselected version of the filter; receiving parameters of the current filter; receiving the buffer addresses of the current filter; applying the values provided for the digital-valued filter inputs; executing the filter instructions with the set parameters; storing the intermediate results obtained; and, when all of the filters of the graph have been executed, generating at least one display texture.

Claims (12)

1. A method for generating procedural textures for a computer having a unified CPU/GPU memory architecture in which data exchanges between a CPU and a GPU consist in memory address exchanges in a unified CPU-GPU memory, the method allowing textures for contents that are managed by the GPU to be generated from digital data and operators of a plurality of procedural filters interpreted by means of a rendering engine, and including the steps of:

receiving data of a graph consisting of a plurality of filters and sequentially traversing said graph using a sequencer and the unified CPU-GPU memory whereby data exchanges between the CPU and the GPU consist in memory address exchanges in the unified CPU-GPU memory, the unified CPU-GPU memory being provided with a memory area M 1 that contains target data containing a best suited processing target among CPU processing only or GPU processing only, of each filter, such as to allow, for each filter traversed:

identifying, based on the target data containing the best suited processing target among CPU processing only or GPU processing only, one of a CPU only processor or a GPU only processor that has been preselected for executing each filter;

receiving, from at least one instruction module corresponding to the preselected CPU only or GPU only processor, CPU instructions when the preselected processor is the CPU, provided in a memory area M 3 of the unified CPU-GPU memory which contain the CPU instructions associated with each filter, in their CPU versions, or GPU instructions when the preselected processor is the GPU, provided in a memory area M 4 of the unified CPU-GPU memory which contains the GPU instructions associated with each filter, in their GPU versions;

receiving, from at least one filter storage module, parameters of a current filter provided in a memory area M 0 of the unified CPU-GPU memory, initialized during graph generation, containing a list of filters to be activated, parameter values for each filter, and dependencies between various filtering steps;

receiving, from at least one buffer storage module, buffer addresses of the current filter provided in an area M 2 of the unified CPU-GPU memory which contains working buffers data of a rendering engine for temporary image data obtained during processing by the CPU or GPU;

applying the parameter values provided for digital valued filter inputs;

executing the filter instructions with the parameter values such as to execute the filter on the best suited processing target providing a minimal global calculation time;

storing intermediate results obtained by executing the filter instructions; and

when all of the filters of the graph have been executed by the CPU and the GPU, generating, using a rendering engine, at least one display texture.

2. The method for generating procedural textures according to claim 1 , wherein, for each filter, in addition to a most appropriate CPU or GPU target, any possible implementation on another target, if available, is indicated.

3. The method for generating procedural textures according to claim 1 , wherein, when the sequencer traverses a first branch in the graph, the sequencer attempts to simultaneously traverse a second branch in the graph, by executing, whenever possible, the filters of the second branch on the CPU or GPU which is not used by the current filter of the first branch.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2019
From: ALLEGORITHMIC SAS
To: ADOBE INC.
Reel/Frame 049127/0512 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 22, 2017
From: SOUM, CHRISTOPHE; BATUT, ERIC
To: ALLEGORITHMIC
Reel/Frame 044469/0181 →
Priority Claims (1)
FR 12 02528 · Sep 24, 2012 · national
Continuity (1)
Related Publication 20150235339A1 · Aug 20, 2015