Patents by Inventor Nilanjan GOSWAMI
Nilanjan GOSWAMI has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 11831885Abstract: A method includes receiving a block comprising pixels; encoding the pixels by: arranging the pixels in a sequence; generating a delta encoding of the pixels, the delta encoding comprising (a) a base value and (b) delta values having non-zero delta values and zero delta values, each delta value representing a difference between a corresponding pixel in the sequence and a previous pixel in the sequence; generating a symbol mask indicating whether each of the delta values is zero or non-zero; determining, based on magnitudes of the non-zero delta values, a symbol width for encoding each of the non-zero delta values; generating a sequence of symbols that respectively encode the non-zero delta values using the symbol width; generating a compression of the block by collating the symbol mask, the symbol width, and the sequence of symbols.Type: GrantFiled: April 15, 2022Date of Patent: November 28, 2023Assignee: Meta Platforms Technologies, LLCInventors: Nilanjan Goswami, Sonal Pinto
-
Publication number: 20230334702Abstract: A method includes receiving multiple blocks of pixels of an image, wherein the blocks are to be sequentially encoded using a hardware-encoding pipeline; encoding a first block of the blocks by: generating a first hash to represent the first block; identifying a second hash stored in memory matching the first hash, the second hash (i) representing a second block of the blocks previously processed by the hardware-encoding pipeline and (ii) is associated with a tag corresponding to a placeholder for a second header associated with the second block; passing a copy of the tag through the hardware-encoding pipeline as metadata for the first block; determining that the second header is available; replacing the copy of the tag with the second header to generate a first encoding for the first block, wherein the second header specifies a memory region where a second encoding of the second block is stored.Type: ApplicationFiled: April 15, 2022Publication date: October 19, 2023Inventors: Nilanjan Goswami, Sonal Pinto
-
Publication number: 20230334735Abstract: A method includes receiving a list of primitives covering a tile of an image, the image comprising content defined by the list of primitives, and for each primitive in the list: identifying, in the tile, pixels that are partially covered by the primitive, pixels that are fully uncovered by the primitive, and pixels that are fully covered by the primitive; computing, for each of the partially-covered pixels, a coverage weight indicating a proportion of the partially-covered pixel that is covered by the primitive; storing coverage data in a coverage buffer corresponding to the tile, the coverage data comprising the coverage weights of the partially-covered pixels, fully-uncovered indicators for the fully-uncovered pixels, and fully-covered indicators for the fully-covered pixels; and determining color information for the primitive in the tile based on the stored coverage data. And, aggregating the color information of the list of primitives in a color buffer for output.Type: ApplicationFiled: April 15, 2022Publication date: October 19, 2023Inventors: Nilanjan Goswami, Christopher James Goodman, Steve John Clohset, Kyle Durfee
-
Publication number: 20230334736Abstract: A method includes receiving instructions to render an image comprising content defined by a two-dimensional (2D) primitive; determining a portion of the 2D primitive covering a tile of multiple tiles of the image; generating an edge definition to represent an edge of the portion of the 2D primitive; and for each row of pixels within at least a portion of the tile containing the portion of the 2D primitive: identifying, based on the edge definition, a left-most pixel and right-most pixel in the row that intersect the edge; identifying, based on the left-most pixel and the right-most pixel, a set of first pixels in the row intersecting the edge; determining, for each first pixel in the set, a coverage weight indicating a proportion of the first pixel covered by the 2D primitive; and determining color information for the set of first pixels based on the associated coverage weights.Type: ApplicationFiled: April 15, 2022Publication date: October 19, 2023Inventors: Nilanjan Goswami, Christopher James Goodman, Siddartha Kavilipati, Kyle Durfee
-
Publication number: 20230334618Abstract: A method includes determining a sequence for compressing blocks of pixels in an image; compressing the blocks sequentially according to the sequence, wherein a first component of a first block is compressed by: selecting a variable-length mode from supported compression modes to compress the first component of the first block based on: determining that the first block is different from previously-compressed blocks compressed according to the sequence; determining that pixels within the first component are different; and determining that a bit length needed for compressing the first component using the variable-length mode is less than a bit length needed for representing the first component uncompressed; and generating a first compression of the first component of the first block using a symbol width selected based on magnitudes of delta values used for encoding the pixels within the first component of the first block.Type: ApplicationFiled: April 15, 2022Publication date: October 19, 2023Inventors: Nilanjan Goswami, Kyle Durfee, Sonal Pinto
-
Publication number: 20230336745Abstract: A method includes receiving a block comprising pixels; encoding the pixels by: arranging the pixels in a sequence; generating a delta encoding of the pixels, the delta encoding comprising (a) a base value and (b) delta values having non-zero delta values and zero delta values, each delta value representing a difference between a corresponding pixel in the sequence and a previous pixel in the sequence; generating a symbol mask indicating whether each of the delta values is zero or non-zero; determining, based on magnitudes of the non-zero delta values, a symbol width for encoding each of the non-zero delta values; generating a sequence of symbols that respectively encode the non-zero delta values using the symbol width; generating a compression of the block by collating the symbol mask, the symbol width, and the sequence of symbols.Type: ApplicationFiled: April 15, 2022Publication date: October 19, 2023Inventors: Nilanjan Goswami, Sonal Pinto
-
Publication number: 20230334728Abstract: A method includes receiving a source shape that is to be blended with a destination shape stored in a color buffer for an image; in response to determining that the source shape is associated with a blending mode that requires updates to pixels in the color buffer uncovered by the source shape: identifying empty tiles in the color buffer uncovered by the source shape and non-empty tiles in the color buffer covered by the source shape; for each of the empty tiles, sending instructions to clear pixel values associated with the empty tile in the color buffer; and for each of the non-empty tiles: identifying pixels of the non-empty tile that are covered by the destination shape but not the source shape; and sending instructions to clear pixel values associated with the pixels.Type: ApplicationFiled: April 15, 2022Publication date: October 19, 2023Inventors: Nilanjan Goswami, Christopher James Goodman, Kyle Durfee, Piyush Agarwal, Steve John Clohset
-
Patent number: 11748839Abstract: A graphics pipeline of a graphics processing unit includes a compressor that receives one or more attributes (positional and non-positional) of a vertex that is output from a vertex shader. The compressor determines a format of the one or more attributes, and separates each attribute into parts based on the format of the attribute. The compressor compresses each respective part of the attribute based on a type of the part. The compressed parts of the attribute are stored in an attribute storage.Type: GrantFiled: June 8, 2020Date of Patent: September 5, 2023Inventors: Nilanjan Goswami, Swati Atrish
-
Publication number: 20230113746Abstract: In particular embodiments, a computing system of a device may determine a display peak power budget allocated for a display component of the device. The system may determine display information including display workload and display telemetry associated with the display component. The system may determine, in accordance with a display peak power management policy applied to the display peak power budget and the display information, one or more display-controlling parameters for maintaining the display component to operate within the display peak power budget. The system may determine, based on the one or more display-controlling parameters, a plurality of grayscales for a plurality of regions on a display screen of the device. The system may adjust a rendered frame based on the plurality of grayscales and output the adjusted rendered frame on the display screen of the device.Type: ApplicationFiled: October 12, 2021Publication date: April 13, 2023Inventors: Nilanjan Goswami, Eugene Gorbatov, Steve John Clohset, Michael Yee
-
Patent number: 11538221Abstract: A method to process tiles of a screen space includes determining a tile-processing order for tiles of a first batch of primitives based on a tile-processing order for a second batch of primitives in which the second batch of primitives are processed prior to the first batch of primitives. The tiles of the first batch of primitives are processed based on the tile-processing order determined for the tiles of the first batch of primitives. The tile-processing order is updated as tiles of the first batch of primitives are pushed to a backend processing portion of a graphics processing unit. In one embodiment, determining the tile-processing order for the tiles of the first batch of primitives include arranging the tiles of the first batch of primitives that have a same screen-space as tiles of the second batch of primitives based on a most-recently-processed-tile-to-a-least-recently-processed tile order of the second batch of primitives.Type: GrantFiled: November 16, 2020Date of Patent: December 27, 2022Inventors: Sushant Kondguli, Nilanjan Goswami
-
Publication number: 20220366820Abstract: In one embodiment, one or more computing systems may determine a first display content to be displayed on a display. The first display content may be associated with one or more frames. The one or more computing systems may determine an optimization operation for the first display content based on one or more first parameters associated with the display or one or more second parameters associated with the one or more frames. The one or more computing systems may adjust the one or more frames based on the optimization operation. The adjusted one or more frames may have at least one optimized attribute comparing to the one or more frames before being adjusted. The one or more computing systems may output the adjusted one or more frames to the display to represent the first display content.Type: ApplicationFiled: July 27, 2022Publication date: November 17, 2022Inventors: Nilanjan Goswami, Michael Yee, Morgyn Taylor, Patrick Mccleary, Naveen Makineni, Aaron Young, Zhi Zhou, Richard Lawrence Greene, Richard Webb, Cheng Chang
-
Publication number: 20220326527Abstract: In one embodiment, a computing system may receive one or more signals from one or more sensors associated with an artificial reality system. The system may determine one or more parameters associated a display content for the artificial reality system based on the one or more signals of the one or more sensors associated with the artificial reality system. The system may generate the display content based on the one or more parameters. The system may output the display content to a display of the artificial reality system.Type: ApplicationFiled: April 8, 2022Publication date: October 13, 2022Inventors: Morgyn Taylor, Zahid Hossain, Larry Seiler, Michael Yee, Nilanjan Goswami
-
Patent number: 11321806Abstract: A system and a method are disclosed that reduce primitive overdraw in a GPU. An occlusion index (OI) for a first tile of a batch of graphical data. In one embodiment, the first tile is bypassed from an early coverage discard (ECD) first-in, first-out (FIFO) if the OI for the first tile is less than a first threshold, otherwise the first tile is entered into the ECD FIFO. The first tile is also bypassed from the ECD FIFO if the OI for the first tile is greater than a second threshold that is greater than the first threshold. In another embodiment, a queue length is logically changed for the first tile in the ECD FIFO if the OI for the first tile is greater than the first threshold and less than or equal to a third threshold that is greater than the first threshold and less than the second threshold.Type: GrantFiled: November 13, 2020Date of Patent: May 3, 2022Inventors: Sushant Kondguli, Nilanjan Goswami
-
Publication number: 20220028027Abstract: A system and a method are disclosed that reduce primitive overdraw in a GPU. An occlusion index (OI) for a first tile of a batch of graphical data. In one embodiment, the first tile is bypassed from an early coverage discard (ECD) first-in, first-out (FIFO) if the OI for the first tile is less than a first threshold, otherwise the first tile is entered into the ECD FIFO. The first tile is also bypassed from the ECD FIFO if the OI for the first tile is greater than a second threshold that is greater than the first threshold. In another embodiment, a queue length is logically changed for the first tile in the ECD FIFO if the OI for the first tile is greater than the first threshold and less than or equal to a third threshold that is greater than the first threshold and less than the second threshold.Type: ApplicationFiled: November 13, 2020Publication date: January 27, 2022Inventors: Sushant KONDGULI, Nilanjan GOSWAMI
-
Publication number: 20210366188Abstract: A method to process tiles of a screen space includes determining a tile-processing order for tiles of a first batch of primitives based on a tile-processing order for a second batch of primitives in which the second batch of primitives are processed prior to the first batch of primitives. The tiles of the first batch of primitives are processed based on the tile-processing order determined for the tiles of the first batch of primitives. The tile-processing order is updated as tiles of the first batch of primitives are pushed to a backend processing portion of a graphics processing unit. In one embodiment, determining the tile-processing order for the tiles of the first batch of primitives include arranging the tiles of the first batch of primitives that have a same screen-space as tiles of the second batch of primitives based on a most-recently-processed-tile-to-a-least-recently-processed tile order of the second batch of primitives.Type: ApplicationFiled: November 16, 2020Publication date: November 25, 2021Inventors: Sushant KONDGULI, Nilanjan GOSWAMI
-
Publication number: 20210327017Abstract: A graphics pipeline of a graphics processing unit includes a compressor that receives one or more attributes (positional and non-positional) of a vertex that is output from a vertex shader. The compressor determines a format of the one or more attributes, and separates each attribute into parts based on the format of the attribute. The compressor compresses each respective part of the attribute based on a type of the part. The compressed parts of the attribute are stored in an attribute storage.Type: ApplicationFiled: June 8, 2020Publication date: October 21, 2021Inventors: Nilanjan GOSWAMI, Swati ATRISH
-
Patent number: 11010954Abstract: A computer-implemented redundant-coverage discard method and apparatus for reducing pixel shader work in a tile-based graphics rendering pipeline is disclosed. A coverage block information (CBI) FIFO buffer is disposed within an early coverage discard (ECD) logic section. The FIFO buffer receives and buffers coverage blocks in FIFO order. At least one coverage block that matches the block position within the TCPM is updated. The TCPM stores per-pixel primitive coverage information. The FIFO buffer buffers a moving window of the coverage blocks. Incoming primitive information associated with the coverage blocks is compared with the per-pixel primitive coverage information stored in the tile coverage-primitive map (TCPM) table at the corresponding positions for the live coverages only. Any preceding overlapping coverage within the moving window of the coverage blocks is rejected. An alternate embodiment uses a doubly linked-list rather than a FIFO buffer.Type: GrantFiled: June 11, 2019Date of Patent: May 18, 2021Inventors: Nilanjan Goswami, Derek Lentz, Adithya Hrudhayan Krishnamurthy, David C. Tannenbaum
-
Publication number: 20200184715Abstract: A computer-implemented redundant-coverage discard method and apparatus for reducing pixel shader work in a tile-based graphics rendering pipeline is disclosed. A coverage block information (CBI) FIFO buffer is disposed within an early coverage discard (ECD) logic section. The FIFO buffer receives and buffers coverage blocks in FIFO order. At least one coverage block that matches the block position within the TCPM is updated. The TCPM stores per-pixel primitive coverage information. The FIFO buffer buffers a moving window of the coverage blocks. Incoming primitive information associated with the coverage blocks is compared with the per-pixel primitive coverage information stored in the tile coverage-primitive map (TCPM) table at the corresponding positions for the live coverages only. Any preceding overlapping coverage within the moving window of the coverage blocks is rejected. An alternate embodiment uses a doubly linked-list rather than a FIFO buffer.Type: ApplicationFiled: June 11, 2019Publication date: June 11, 2020Inventors: Nilanjan GOSWAMI, Derek LENTZ, Adithya Hrudhayan KRISHNAMURTHY, David C. TANNENBAUM