US 7,554,550 B2
Non-destructive processing of digital image data
Steven James White, Seattle, Wash. (US); Donald M. Marsh, Bellevue, Wash. (US); Tomasz S. M. Kasperkiewicz, Redmond, Wash. (US); Mahmood Gulam Qadir, Redmond, Wash. (US); and David R. Blythe, Kirkland, Wash. (US)
Assigned to Microsoft Corporation, Redmond, Wash. (US)
Filed on Jun. 24, 2005, as Appl. No. 11/166,325.
Prior Publication US 2006/0290703 A1, Dec. 28, 2006
Int. Cl. G06F 17/00 (2006.01); G06F 13/14 (2006.01); G06F 17/50 (2006.01); G06F 7/60 (2006.01); G06F 7/48 (2006.01); G06T 1/60 (2006.01); G06T 15/00 (2006.01); G09G 5/39 (2006.01)
U.S. Cl. 345—519  [345/418; 345/419; 345/531; 703/2; 703/6; 703/7] 19 Claims
OG exemplary drawing
 
1. A computer system for editing digital image data, comprising:
a Graphics Processing Unit (GPU) having GPU memory associated therewith;
a Central Processing Unit (CPU) having CPU memory associated therewith, wherein the GPU is integrated with the CPU into a digital image processing model architecture, as opposed to being provided peripherally, such that the CPU and the GPU operate interchangeably to non-destructively edit a portion of the digital image data; and
a processing unit coupled to a computer storage medium, the computer storage medium having stored thereon a plurality of computer software components executable by the processing unit, the computer software components comprising:
an editing component for non-destructively editing the portion of the digital image data and for determining whether to utilize the CPU, the GPU, or a combination thereof to non-destructively edit, wherein non-destructively editing comprises:
(1) detecting a request to render the digital image data;
(2) loading unaltered the portion of the digital image data as originally loaded into the GPU memory at the time of the request, wherein the portion of the digital image data is selected on-demand according to the request; and
(3) rendering an image by processing the portion of the digital image data without flattening or saving the image data to intermediate steps,
wherein determining whether to utilize the CPU, the GPU, or a combination thereof comprises:
(1) determining if a software-render-only override is associated with an Effect object of an effect graph;
(2) determining if a dynamic condition exists that influences which rendering method is called;
(3) when a software-render-only override or a dynamic condition is identified, calling the CPU to assist with the non-destructively edit; and
(4) automatically passing a processed portion of the digital image data from the GPU to the CPU in accordance with processing capabilities of the CPU and to the GPU, respectively, such that the CPU and the GPU operate in cooperation.