IP Library Granted Patent US 11,069,095
Granted Patent B1
US 11,069,095 · App. 16/890,104 · Granted Jul 20, 2021

Techniques for efficiently sampling an image

Inventor: Evgenii Makarov (Moscow, RU)
Assignee: NVIDIA Corporation
G06T11/001G06T3/4007G06T7/40G06T2207/20081G06T2207/20084
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 11,069,095
App. No.
16/890,104
Granted
Jul 20, 2021
Kind
B1
Abstract

A sample mask is used to control which samples are used in a filtering operation such as bilinear filtering. A conventional filtering operation reads a set of samples based on a single coordinate and combines the samples to produce a filtered sample value. Such filtering operations are performed conventionally using fixed function units designed specifically to perform such filtering operations. However, for some applications, excluding one or more of the samples in producing a filtered sample value is desirable. In other applications, combining the samples using different weighting factors is also desirable. Techniques are disclosed herein for extending the capabilities of existing filtering units, for example, to exclude one or more samples in the filtering operation and for specifying different weighting rules for combining the samples.

Claims (47)

1. A computer-implemented method for selectively combining samples in an operation, comprising:

receiving an operation to perform and a coordinate associated with a buffer;

obtaining one or more samples from the buffer corresponding to the coordinate, wherein the operation specifies a maximum number of samples and a sample mask specifies which samples of the maximum number of samples are enabled for the operation, wherein a number of the samples that are enabled is less than the maximum number of samples; and

combining the one or more enabled samples according to the operation to produce a single filtered value.

2. The computer-implemented method of claim 1 , wherein the step of obtaining one or more samples comprises:

retrieving from the buffer the one or more enabled samples while not retrieving from the buffer any un-enabled samples.

3. The computer-implemented method of claim 1 , wherein the step of obtaining one or more samples comprises:

retrieving from the buffer the maximum number of samples associated with the operation.

4. The computer-implemented method of claim 1 , wherein the operation is bilinear interpolation, the maximum number of samples is 4, the sample mask is a 4-bit value, the buffer is a bitmap or texture map, and the coordinate is a 2D coordinate specifying a location in the bitmap or the texture map.

5. The computer-implemented method of claim 1 , wherein the buffer is a frame buffer, and wherein the sample mask is based on a Z-buffer or G-buffer corresponding to the frame buffer.

6. The computer-implemented method of claim 1 , further comprising:

receiving a weight rule, and

wherein the step of combining the one or more enabled samples comprises:

scaling the one or more enabled samples based on the weight rule.

7. The computer-implemented method of claim 6 , wherein each scaled sample or weight is divided by a normalized value, wherein the normalized value is a sum of the weights for the one or more enabled samples.

8. The computer-implemented method of claim 1 , wherein the steps of receiving, obtaining, and combining are performed by a texture unit.

9. The computer-implemented method of claim 1 , wherein the sample mask is based on material attributes associated with the coordinate.

10. The computer-implemented method of claim 1 , wherein the combining the one or more samples comprises:

computing a uniform weight for each of the one or more enabled samples;

scaling each of the one or more enabled samples by the uniform weight to produce scaled samples; and

summing the scaled samples to produce the single filtered value.

11. The computer-implemented method of claim 1 , wherein the steps of receiving, obtaining, and combining are performed on a server or in a data center to generate an image, and the image is streamed to a user device.

12. The computer-implemented method of claim 1 , wherein the steps of receiving, obtaining, and combining are performed to generate an image used for training, testing, or certifying a neural network employed in a machine, robot, or autonomous vehicle.

13. A system, comprising:

a processor coupled to a memory and configured to:

receive an operation to perform and a coordinate associated with a buffer;

obtain one or more samples from the buffer corresponding to the coordinate, wherein the operation specifies a maximum number of samples and a sample mask specifies which samples of the maximum number of samples are enabled for the operation, wherein a number of the samples that are enabled is less than the maximum number of samples; and

combine the one or more enabled samples according to the operation to produce a single filtered value.

14. The system of claim 13 , wherein the processor is further configured to obtain the one or more samples by:

retrieving from the buffer the one or more enabled samples while not retrieving from the buffer any un-enabled samples.

15. The system of claim 13 , wherein the processor is further configured to obtain the one or more samples by:

retrieving from the buffer the maximum number of samples associated with the operation.

16. The system of claim 13 , wherein the operation is bilinear interpolation, the maximum number of samples is 4, the sample mask is a 4-bit value, the buffer is a bitmap or texture map, and the coordinate is a 2D coordinate specifying a location in the bitmap or the texture map.

17. The system of claim 13 , wherein the buffer is a frame buffer, and wherein the sample mask is based on a Z-buffer or G-buffer corresponding to the frame buffer.

18. The system of claim 13 , wherein the processor is further configured to:

receive a weight rule, and

wherein combining the one or more enabled samples comprises:

scaling the one or more enabled samples based on the weight rule.

19. The system of claim 18 , wherein each scaled sample or weight is divided by a normalized value, wherein the normalized value is a sum of the weights for the one or more enabled samples.

20. The system of claim 13 , wherein the processor comprises a texture unit that is configured to perform the receiving, obtaining, and combining.

21. The system of claim 13 , wherein the sample mask is based on material attributes associated with the coordinate.

22. The system of claim 13 , wherein the processor is further configured to combine the one or more samples by:

computing a uniform weight for each of the one or more enabled samples;

scaling each of the one or more enabled samples by the uniform weight to produce scaled samples; and

summing the scaled samples to produce the single filtered value.

23. The system of claim 13 , wherein the processor generates an image using the single filtered value, the processor is a part of a server or a data center, and the image is streamed to a user device.

24. The system of claim 13 , wherein the processor generates an image using the single filtered value, and the image is used for training, testing, or certifying a neural network employed in a machine, robot, or autonomous vehicle.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: MAKAROV, EVGENII
To: NVIDIA CORPORATION
Reel/Frame 052948/0856 →
Cited By (2)
US 12,315,035 US 12,718,728