DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Objections
Claims 13-14 are objected to because of the following informalities:
Claim 13 recites the limitation(s): "The graphics processor of claim 11" on PG(s). 3, Line(s) 17; Claim 11 is a method-claim and Claims 1 and 11 do not refer to a "graphics processor"; examiner suggests amending this claim to be dependent to Claim 12; and
Claim 14 recites the limitation(s): "The graphics processor of claim 11, wherein the post-fix shader…" on PG(s). 3, Line(s) 19; Claim 11 is a method-claim and does not refer to a post-fix shader; examiner suggests amending this claim to be dependent to Claim 13; additionally, Claim 11 does not reference a post-fix shader; examiner suggests amending this to: "a post-fix shader".Appropriate correction is required.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-8 and 10-15 are rejected under 35 U.S.C. 103 as being unpatentable over Foo (US 20180158168 A1), in view of Heggelund et al. (US 20130076762 A1), hereinafter referenced as Heggelund.
Regarding Claim 1, Foo discloses a method of operating a tile-based graphics processor for determining a performance metric of one or more draw calls (Foo, [0137]: teaches a method for profiling the performance of a graphics unit of rendering tasks; [0139]: teaches rendering tasks being draw calls; [0091]: teaches a graphics system <read on tile-based graphics processor> that comprises a plurality of counters, where "each counter may be associated with a different stage of the graphics pipeline," which enables performance metrics), the method comprising:
receiving, during a rendering process, a plurality of draw calls (Foo, [0063]: teaches a command engine 204 being configured to receive commands issued from driver 110 during a rendering task <read on rendering process>, where the issued commands can be draw commands (i.e., draw calls), which specifies that certain components of the scene are to be rendered),
each draw call of the plurality of draw calls comprising one or more primitives (Foo, [0139]: teaches a rendering task being a draw call command that draws a portion of the scene, such as one or more geometric objects that form part of said scene; [0069]: teaches geometric objects being formed from a plurality of primitives);
splitting the one or more primitives into data represented as a plurality of tiles (Foo, [0136]: teaches portions of a scene being split across multiple tiles, where the scene consists of one or more objects, which are formed from primitives), and
performing, by the tile-based graphics processor on the data represented as a plurality of tiles, asynchronous fragment processing to generate a render output (Foo, [0065]: teaches rendering circuitry units 202 performing tasks, such as fragment processing tasks <read on asynchronous fragment processing>, to process fragment data, which is used to render a scene <read on render output>; [0107]: teaches performing fragment processing tasks "for the visible fragments for the tile to the scheduler 406"; Note: it should be noted that asynchronous fragment processing is being interpreted as fragment processing being performed in series and not in parallel);
[[generating, in storage associated with the graphics processor, at least one intermediate data structure for accumulating partial results of the performance metric for each of the received plurality of draw calls;]]
generating per-tile partial results of the performance metric (Foo, [0123]: teaches set flags <read on per-tile partial results> being associated with a block of primitive data from tiles), wherein
each of the per-tile partial results are associated with a respective tile of the plurality of tiles (Foo, [0123]: teaches set flags <read on per-tile partial results> being "associated with a block of primitive data," where the primitive block is from associated tiles <read on respective tile> of primitive data);
accumulating the per-tile partial results [[in the at least one intermediate data structure]] on a per-draw call basis to generate an accumulated value for each of the one or more draw calls (Foo, [0127]: teaches the ISP 408 being associated with counter 118_3 <read on accumulated value>, which is configured to change in value (e.g., increment) in response to the occurrence of an event <read on per-draw call basis> whilst the ISP performs a task <read on draw call> forming part of the workload to render the object 602 (i.e., tasks associated with the flag <read on per-tile partial results of performance metric>); [0124]: teaches flags being stored <read on accumulating> in the parameter buffer for each primitive); and
determining, based on the accumulated values for the one or more draw calls, the performance metric (Foo, [0094]: teaches "the values of each of the counters <read on accumulated values> could be collated into a single result and output," such as summing up the counter values to produce a single result <read on performance metric>), wherein
the one or more draw calls correspond to at least a subset of the received plurality of draw calls (Foo, [0055]: teaches the rendering task being a task to render a portion of a scene, where portions of the scene are tagged with flags that correspond to one or more draw calls).
However, Foo does not expressly disclose
generating, in storage associated with the graphics processor, at least one intermediate data structure for accumulating partial results of the performance metric for each of the received plurality of draw calls; and
accumulating the per-tile partial results in the at least one intermediate data structure on a per-draw call basis to generate an accumulated value for each of the one or more draw calls.
Heggelund discloses
generating, in storage associated with the graphics processor, at least one intermediate data structure for accumulating partial results of the performance metric for each of the received plurality of draw calls (Heggelund, [0165]: teaches a local occlusion counter 21 <read on performance metric> being allocated to an occlusion query for testing for a given tile, where "the occlusion counter 21 in the occlusion query cache 19 <read on intermediate data structure> is incremented <read on accumulating partial results> appropriately 17, 18," which are used "to count the results of the query" as shown in FIG. 2); and
PNG
media_image1.png
285
575
media_image1.png
Greyscale
accumulating the per-tile partial results in the at least one intermediate data structure on a per-draw call basis to generate an accumulated value for each of the one or more draw calls (Heggelund, [0165]: teaches "the occlusion counter 21 in the occlusion query cache 19 <read on intermediate data structure> is incremented appropriately 17, 18," which are used "to count the results <read on per-tile partial results> of the query").
Heggelund is analogous art with respect to Foo because they are from the same field of endeavor, namely tracking performance of a tile-based rendering system. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to utilize a query cache to track the number of occurrences of certain rendering tasks being performed as taught by Heggelund into the teaching of Foo. The suggestion for doing so would allow the monitoring system to determine where in the rendering pipeline a bottleneck can occur, thereby yielding predictable results. Therefore, it would have been obvious to combine Heggelund with Foo.
Regarding Claim 12, it recites the limitations that are similar in scope to Claim 1, but in a graphics processor. As shown in the rejection, the combination of Foo and Heggelund discloses the limitations of Claim 1. Additionally, Foo discloses a graphics processor comprising at least one execution unit with an associated storage element (Foo, [0066]: teaches hardware units 202 <read on execution unit> being a multi-threaded processor <read on graphics processor> to handle graphics and tasks, such as draw commands; [0063]: teaches commands, such as draw commands, being issued from driver 110, which is a part of the system that includes memory <read on storage element>),
the at least one execution unit is operable to perform a method (Foo, [0137]: teaches a method for profiling the performance of a graphics unit of rendering tasks) comprising:…
Thus, Claim 12 is met by Foo according to the mapping presented in the rejection of Claim 1, given the method corresponds to a graphics processor.
Regarding Claim 15, it recites the limitations that are similar in scope to Claim 1, but in a non-transitory computer readable storage medium. As shown in the rejection, the combination of Foo and Heggelund discloses the limitations of Claim 1. Additionally, Foo discloses a non-transitory computer readable storage medium storing software code which, when executing on a processor, performs a method of operating a graphics processor comprising at least one execution unit with an associated storage element (Foo, [0043]: teaches a non-transitory computer readable storage medium that stores executable computer readable instructions <read on software code> which can be read and executed by a computer system <read on processor>; [0066]: teaches hardware units 202 <read on execution unit> being a multi-threaded processor <read on graphics processor> to handle graphics and tasks, such as draw commands; [0063]: teaches commands, such as draw commands, being issued from driver 110, which is a part of the system that includes memory <read on storage element>; [0137]: teaches a method for profiling the performance of a graphics unit of rendering tasks),
the at least one execution unit is operable to perform a method (Foo, [0137]: teaches a method for profiling the performance of a graphics unit of rendering tasks) comprising:…
Thus, Claim 15 is met by Foo according to the mapping presented in the rejection of Claim 1, given the method corresponds to a non-transitory computer readable storage medium.
Regarding Claim 2, the combination of Foo and Heggelund discloses the method of Claim 1. Additionally, Foo further discloses wherein
the plurality of tiles correspond to portions of the render output (Foo, [0119]: teaches the TA unit performing a tiling stage, where "the transformed image of the scene <read on portions of render output> in screen space is subdivided into a plurality of tiles").
Regarding Claim 3, the combination of Foo and Heggelund discloses the method of Claim 1. Additionally, Foo further discloses wherein the method further comprises
[[receiving, during the rendering process, one or more queries, wherein]]
[[each query relates to a given performance metric of a respective subset of the received plurality of draw calls, wherein]]
the method comprises, for each query, generating per-tile partial results for the given performance metric (Foo, [0123]: teaches set flags <read on per-tile partial results> being "associated with a block of primitive data," where the primitive block is from associated tiles of primitive data),
accumulating the per-tile partial results (Foo, [0123]: teaches set flags <read on per-tile partial results> being "associated with a block of primitive data," which is associated with the tiles of primitive data; [0124]: teaches flags being stored <read on accumulating> in the parameter buffer for each primitive), and
determining, based on the accumulated values, the performance metric for the respective subset of draw calls (Foo, [0094]: teaches "the values of each of the counters <read on accumulated values> could be collated into a single result and output," such as summing up the counter values to produce a single result <read on performance metric>).
However, Foo does not expressly disclose
receiving, during the rendering process, one or more queries, wherein
each query relates to a given performance metric of a respective subset of the received plurality of draw calls.
Heggelund discloses
receiving, during the rendering process, one or more queries (Heggelund, [0117]: teaches using occlusion queries to modify the rendering process; [0062]: teaches using an occlusion query cache for new occlusion counters of an occlusion query), wherein
each query relates to a given performance metric of a respective subset of the received plurality of draw calls (Heggelund, [0060]: teaches an occlusion query including an occlusion counter <read on given performance metric> that spans multiple draw calls <read on respective subset of draw calls>).
Heggelund is analogous art with respect to Foo because they are from the same field of endeavor, namely tracking performance of a tile-based rendering system. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to utilize a query cache to track the number of occurrences of certain rendering tasks being performed as taught by Heggelund into the teaching of Foo. The suggestion for doing so would allow the monitoring system to determine where in the rendering pipeline a bottleneck can occur, thereby yielding predictable results. Therefore, it would have been obvious to combine Heggelund with Foo.
Regarding Claim 4, the combination of Foo and Heggelund discloses the method of Claim 3. Foo does not expressly disclose the limitations of Claim 4; however, Heggelund discloses wherein each query comprises
a begin command and an end command (Heggelund, [0011]: teaches "commands to the graphics processor will indicate when an occlusion query is to be started <read on begin command>, a set of draw calls that are included in the query, and when the query is to stop <read on end command>").
Heggelund is analogous art with respect to Foo because they are from the same field of endeavor, namely tracking performance of a tile-based rendering system. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to implement commands that tell when a query is to start and stop as taught by Heggelund into the teaching of Foo. The suggestion for doing so would allow the system to understand when to execute queried commands, which can then be used as counters to monitor performance. Therefore, it would have been obvious to combine Heggelund with Foo.
Regarding Claim 5, the combination of Foo and Heggelund discloses the method of Claim 4. Foo does not expressly disclose the limitations of Claim 5; however, Heggelund discloses wherein
each begin command and each end command executes at a draw call boundary (Heggelund, [0093]: teaches an example situation of an integer occlusion query <read on begin and end commands>, where the query is met if the occlusion query count or threshold <read on draw call boundary> is reached or exceeded, which is then treated as a Boolean occlusion query thereafter; Note: it should be noted that it is being interpreted that once the counts are met or exceeded, the integer occlusion query counter resets).
Heggelund is analogous art with respect to Foo because they are from the same field of endeavor, namely tracking performance of a tile-based rendering system. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to implement commands that tell when a query is to start and stop as taught by Heggelund into the teaching of Foo. The suggestion for doing so would allow the system to understand when to execute queried commands, which can then be used as counters to monitor performance. Therefore, it would have been obvious to combine Heggelund with Foo.
Regarding Claim 6, the combination of Foo and Heggelund discloses the method of Claim 3. Foo does not expressly disclose the limitations of Claim 6; however, Heggelund discloses wherein at least one query of the one or more queries is
an occlusion query, a primitives generated query, a pipeline statistics query or performance statistics query (Heggelund, [0061]: teaches a given occlusion query extending over several tiles, where "an occlusion counter value for one tile may be written to main memory once that tile has finished").
Heggelund is analogous art with respect to Foo because they are from the same field of endeavor, namely tracking performance of a tile-based rendering system. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to utilize a query cache to track the number of occurrences of certain rendering tasks being performed as taught by Heggelund into the teaching of Foo. The suggestion for doing so would allow the monitoring system to determine where in the rendering pipeline a bottleneck can occur, thereby yielding predictable results. Therefore, it would have been obvious to combine Heggelund with Foo.
Regarding Claim 7, the combination of Foo and Heggelund discloses the method of Claim 3. Foo does not expressly disclose the limitations of Claim 7; however, Heggelund discloses wherein
each query is indicative of one or more performance metrics sampled by that query (Heggelund, [0165]: teaches a local occlusion counter 21 <read on performance metrics> being allocated to an occlusion query for testing <read on sampling>), wherein
the method comprises generating, in the storage associated with the graphics processor, an intermediate data structure for each performance metric sampled by the one or more queries (Heggelund, [0154]: teaches using an occlusion query cache 19 <read on intermediate data structure> to maintain a set of local occlusion counter 21 <read on sampled performance metrics> as shown in FIG. 2).
Heggelund is analogous art with respect to Foo because they are from the same field of endeavor, namely tracking performance of a tile-based rendering system. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to utilize a query cache to track the number of occurrences of certain rendering tasks being performed as taught by Heggelund into the teaching of Foo. The suggestion for doing so would allow the monitoring system to determine where in the rendering pipeline a bottleneck can occur, thereby yielding predictable results. Therefore, it would have been obvious to combine Heggelund with Foo.
Regarding Claim 8, the combination of Foo and Heggelund discloses the method of Claim 1. Foo does not expressly disclose the limitations of Claim 8; however, Heggelund discloses wherein accumulating the per-tile partial results in the at least one intermediate data structure comprises,
for each per-tile partial result, adding the per-tile partial result to the accumulated value in the intermediate data structure according to the draw call to which that per-tile partial result corresponds (Heggelund, [0165]: teaches a local occlusion counter 21 being allocated to an occlusion query for testing for a given tile, where "the occlusion counter 21 in the occlusion query cache 19 <read on intermediate data structure> is incremented <read on adding per-tile partial result to accumulated value> appropriately 17, 18," which are used "to count the results <read on per-tile partial result> of the query").
Heggelund is analogous art with respect to Foo because they are from the same field of endeavor, namely tracking performance of a tile-based rendering system. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to utilize a query cache to track the number of occurrences of certain rendering tasks being performed as taught by Heggelund into the teaching of Foo. The suggestion for doing so would allow the monitoring system to determine where in the rendering pipeline a bottleneck can occur, thereby yielding predictable results. Therefore, it would have been obvious to combine Heggelund with Foo.
Regarding Claim 10, the combination of Foo and Heggelund discloses the method of Claim 1. Additionally, Foo further discloses wherein determining the performance metric comprises
performing a prefix sum for each draw call of the one or more draw calls (Foo, [0094]: teaches the counter values of the associated rendering tasks <read on draw call> being summed together <read on prefix sum> to produce a single result).
Regarding Claim 11, the combination of Foo and Heggelund discloses the method of Claim 1. Additionally, Foo further discloses wherein
each accumulated value corresponds to one draw call of the received plurality of draw calls (Foo, [0085]: teaches counters <read on accumulated value> that are configured to count events that occur whilst the rendering units perform tasks associated with the flag, which are further associated with a draw call).
Regarding Claim 13, the combination of Foo and Heggelund discloses the graphics processor of Claim 11. Foo does not expressly disclose the limitations of Claim 13; however, Heggelund discloses wherein the graphics processor is to
execute a post-fix shader (Heggelund, [0206]: teaches checking a shader state <read on executing post-fix shader> for a primitive for side effects).
Heggelund is analogous art with respect to Foo because they are from the same field of endeavor, namely tracking performance of a tile-based rendering system. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to have the system check a shader state for visual side effects, such as visual artifacts as taught by Heggelund into the teaching of Foo. The suggestion for doing so would allow the render output to be fixed to a desired quality, thereby yielding improved results. Therefore, it would have been obvious to combine Heggelund with Foo.
Regarding Claim 14, the combination of Foo and Heggelund discloses the graphics processor of Claim 11. Additionally, Foo further discloses wherein the post-fix shader is configured to
determine, based on the accumulated values, the performance metric (Foo, [0091]: teaches the graphics system comprising a plurality of counters <read on accumulated values> for different stages of the graphics pipeline, which enables performance metrics of the associated parts of said graphics pipeline).
Claim 9 is rejected under 35 U.S.C. 103 as being unpatentable over Foo (US 20180158168 A1), in view of Heggelund et al. (US 20130076762 A1), hereinafter referenced as Heggelund as applied to Claim 1 above respectively, and further in view of Boles et al. (US 20260004380 A1), hereinafter referenced as Boles.
Regarding Claim 9, the combination of Foo and Heggelund discloses the method of Claim 1. The combination of Foo and Heggelund does not expressly disclose the limitations of Claim 9; however, Boles discloses wherein accumulating the per-tile partial results in the at least one intermediate data structure comprises,
for each draw call of the plurality of draw calls, using an atomic add function (Boles, [0244]: teaches a plurality of draw calls using atomic functions <read on atomic add function> to prevent memory conflicts).
Boles is analogous art with respect to Foo, in view of Heggelund because they are from the same field of endeavor, namely tile-based rendering systems. Before the effective filing date of the claimed invention, it would have been obvious to a person of ordinary skill in the art to implement atomic functions when executing draw call functions as taught by Boles into the teaching of Foo, in view of Heggelund. The suggestion for doing so would not only prevent memory conflicts, but also ensure that counters associated with said draw calls would be accumulated without any errors. Therefore, it would have been obvious to combine Boles with Foo, in view of Heggelund.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Acharya et al. (US 20170091895 A1) discloses preemption of draw call commands in a GPU;
Frascati et al. (US 20140306971 A1) discloses techniques for supporting intra-frame timestamps in a tile-based graphics system;
Hakura et al. (US 20140118370 A1) discloses a graphics processing system that tracks per-tile event counts in a tile-based architecture;
Kondguli et al. (US 20210374900 A1) discloses determining a new draw call using a state identity (ID) of a graphics state;
Ritts et al. (US 20110018884 A1) discloses displaying a visual representation of performance metrics for rendering graphics elements;
Ruud et al. (US 20220067871 A1) discloses operating a tile-based graphics processor that uses varying rendering tile sizes;
Tsung et al. (US 20160379336 A1) discloses a GPU for tile-based rendering of a display area; and
Vembu et al. (US 20170337656 A1) discloses render commands that can be re-executed for each of a plurality of tiles that make up a graphic scene.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to KARL TRUONG whose telephone number is (703)756-5915. The examiner can normally be reached 10:30 AM - 7:30 PM.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Kent Chang can be reached at (571) 272-7667. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/K.D.T./Examiner, Art Unit 2614
/KENT W CHANG/Supervisory Patent Examiner, Art Unit 2614