IP Library › Granted Patent US 9,558,585
Granted Patent B2
US 9,558,585 · App. 13/907,550 · Granted Jan 31, 2017

Hidden surface removal in graphics processing systems

Inventors: Jorn Nystad (Trondheim, NO); Frode Heggelund (Trondheim, NO)
Assignee: ARM LIMITED
G06T15/40
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,558,585
App. No.
13/907,550
Granted
Jan 31, 2017
Kind
B2
Abstract

A graphics processing pipeline 1 includes a rasteriser 3 that tests patches representing respective different regions of a render output against the edges of primitives 2 to determine if the primitive at least partially covers the patch and an early depth test stage 4 that performs early depth tests for primitives in respect of patches of the render output that the primitive has been found by the rasteriser at least partially to cover, by using depth test information 5 associated with a patch indicating the number and distribution of different depth value regions associated with the patch to determine the depth value region or regions associated with the patch that the primitive should be depth tested against, and then performing a depth test or tests for the primitive in respect of the respective determined depth value region or regions associated with the patch.

Claims (42)

1. A method of performing a depth test operation in a graphics processing pipeline, the method comprising:

rasterising by a rasteriser, input primitives to generate graphics fragments to be processed, each graphics fragment having one or more sampling points associated with it; and

processing by a renderer, fragments generated by the rasteriser to generate output fragment data for use in displaying a frame on a display; and in which method:

the rasteriser, when it receives a primitive to be rasterised, for each of one or more patches representing respective different regions of a render output to be generated, tests the patch against the edges of the primitive to determine if the primitive at least partially covers the patch;

the method further comprising:

performing by early depth test processing circuitry an early depth test for a primitive in respect of a patch of the render output that the primitive has been found by the rasteriser at least partially to cover, the early depth test processing circuitry performing the early depth test by:

determining from depth test information associated with the patch, the number of different depth value regions associated with the patch, and if there is more than one depth value region associated with the patch, the distribution of the depth value regions within the patch; and

using the determined number of different depth value regions associated with the patch, and if there is more than one depth value region associated with the patch, the distribution of the depth value regions within the patch, to determine the depth value region or regions associated with the patch that the primitive should be depth tested against; and

performing a depth test or tests for the primitive in respect of the patch of the render output using depth values associated with the primitive and with the respective determined depth value region or regions associated with the patch.

2. The method of claim 1 , wherein the patches of the render output that the early depth test is performed in respect of correspond to patches of the render output that the rasteriser tests for the rasterisation process.

3. The method of claim 1 , further comprising, when a render output is being generated by the graphics processing pipeline, storing for each patch of the render output that a primitive to be rendered can be early depth tested against, data indicating the number of different depth value regions associated with the patch, and if there is more than one depth value region associated with the patch, indicating the distribution of the depth value regions within the patch.

4. The method of claim 1 , further comprising, when a render output is being generated by the graphics processing pipeline, storing for each patch of the render output that a primitive to be rendered can be early depth tested against, a set of data for each depth value region associated with the patch indicating the depth values to be used for the respective depth value region of the patch.

5. The method of claim 1 , wherein the depth values for each depth value region within a patch are represented as a range of depth values, or by using a functional representation of the depth values.

6. The method of claim 1 , wherein the information indicating the distribution of the depth value regions within the patch defines an edge that forms a boundary between two depth value regions in the patch.

7. The method of claim 1 , further comprising if the primitive being tested against the patch in question partially or fully passes the depth test, updating the depth test information associated with the patch to take account of the new primitive.

8. The method of claim 7 , wherein if a primitive is found to cover plural regions within the patch, such that multiple depth value regions need to be updated, the updating comprises testing the primitive against all covered regions individually, creating a temporary region state for each region and then merging the temporary region states to give a resulting region state to be used for the patch.

9. The method of claim 1 , wherein each depth value region associated with a patch also has a stencil value associated with it.

10. A graphics processor comprising:

rasteriser circuitry that rasterises input primitives to generate graphics fragments to be processed, each graphics fragment having one or more sampling points associated with it; and

renderer circuitry that processes fragments generated by the rasteriser circuitry to generate output fragment data for use in displaying a frame on a display;

and in which the rasteriser circuitry, when it receives a primitive to be rasterised, for each of one or more patches representing respective different regions of a render output to be generated, tests the patch against the edges of the primitive to determine if the primitive at least partially covers the patch;

the processor further comprising:

early depth test processing circuitry that to perform early depth tests for primitives in respect of patches of the render output that the primitive has been found by the rasteriser circuitry at least partially to cover:

determines from depth test information associated with a patch, the number of different depth value regions associated with the patch, and if there is more than one depth value region associated with the patch, the distribution of the depth value regions within the patch; and

uses the determined number of different depth value regions associated with the patch, and if there is more than one depth value region associated with the patch, the distribution of the depth value regions within the patch, to determine the depth value region or regions associated with the patch that the primitive should be depth tested against; and

performs a depth test or tests for the primitive in respect of the patch of the render output using depth values associated with the primitive and with the respective determined depth value region or regions associated with the patch.

11. The processor of claim 10 , wherein the patches of the render output that the early depth test is performed in respect of correspond to patches of the render output that the rasteriser circuitry tests for the rasterisation process.

12. The processor of claim 10 , further comprising a depth buffer that, when a render output is being generated by the graphics processing pipeline, stores for each patch of the render output that a primitive to be rendered can be early depth tested against, data indicating the number of different depth value regions associated with the patch, and if there is more than one depth value region associated with the patch, indicating the distribution of the depth value regions within the patch.

13. The processor of claim 10 , further comprising a depth buffer that, when a render output is being generated by the graphics processing pipeline, stores for each patch of the render output that a primitive to be rendered can be early depth tested against, a set of data for each depth value region associated with the patch indicating the depth values to be used for the respective depth value region of the patch.

14. The processor of claim 10 , wherein the depth values for each depth value region within a patch are represented as a range of depth values, or by using a functional representation of the depth values.

15. The processor of claim 10 , wherein the information indicating the distribution of the depth value regions within the patch defines an edge that forms a boundary between two depth value regions in the patch.

16. The processor of claim 10 , wherein the early depth test processing circuitry is further configured to if the primitive being tested against the patch in question partially or fully passes the depth test, update the depth test information associated with the patch to take account of the new primitive.

17. The processor of claim 16 , wherein if a primitive is found to cover plural regions within the patch, such that multiple depth value regions need to be updated, the updating comprises testing the primitive against all covered regions individually, creating a temporary region state for each region and then merging the temporary region states to give a resulting region state to be used for the patch.

18. The processor of claim 10 , wherein each depth value region associated with a patch also has a stencil value associated with it.

19. A non-transitory computer readable storage medium storing computer software code which when executing on a processor performs a method of performing a depth test operation in a graphics processing pipeline, the method comprising:

rasterising input primitives to generate graphics fragments to be processed, each graphics fragment having one or more sampling points associated with it;

processing fragments generated by the rasteriser to generate output fragment data for use in displaying a frame on a display; and

when a primitive is to be rasterised, for each of one or more patches representing respective different regions of a render output to be generated, testing the patch against the edges of the primitive to determine if the primitive at least partially covers the patch; the method further comprising:

performing an early depth test for a primitive in respect of a patch of the render output that the primitive has been found by the rasteriser at least partially to cover, the early depth test being performed by:

determining from depth test information associated with the patch, the number of different depth value regions associated with the patch, and if there is more than one depth value region associated with the patch, the distribution of the depth value regions within the patch; and

using the determined number of different depth value regions associated with the patch, and if there is more than one depth value region associated with the patch, the distribution of the depth value regions within the patch, to determine the depth value region or regions associated with the patch that the primitive should be depth tested against; and

performing a depth test or tests for the primitive in respect of the patch of the render output using depth values associated with the primitive and with the respective determined depth value region or regions associated with the patch.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2013
From: NYSTAD, JORN; HEGGELUND, FRODE
To: ARM LIMITED
Reel/Frame 031081/0262 →
Continuity (1)
Related Publication 20140354640A1 · Dec 4, 2014