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: 11881143
    Abstract: 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: Grant
    Filed: October 12, 2021
    Date of Patent: January 23, 2024
    Assignee: Meta Platforms Technologies, LLC
    Inventors: Nilanjan Goswami, Eugene Gorbatov, Steve John Clohset, Michael Yee
  • Patent number: 11882295
    Abstract: 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: Grant
    Filed: April 15, 2022
    Date of Patent: January 23, 2024
    Assignee: Meta Platforms Technologies, LLC
    Inventors: Nilanjan Goswami, Sonal Pinto
  • Patent number: 11831885
    Abstract: 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: Grant
    Filed: April 15, 2022
    Date of Patent: November 28, 2023
    Assignee: Meta Platforms Technologies, LLC
    Inventors: Nilanjan Goswami, Sonal Pinto
  • Publication number: 20230334618
    Abstract: 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: Application
    Filed: April 15, 2022
    Publication date: October 19, 2023
    Inventors: Nilanjan Goswami, Kyle Durfee, Sonal Pinto
  • Publication number: 20230336745
    Abstract: 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: Application
    Filed: April 15, 2022
    Publication date: October 19, 2023
    Inventors: Nilanjan Goswami, Sonal Pinto
  • Publication number: 20230334736
    Abstract: 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: Application
    Filed: April 15, 2022
    Publication date: October 19, 2023
    Inventors: Nilanjan Goswami, Christopher James Goodman, Siddartha Kavilipati, Kyle Durfee
  • Publication number: 20230334728
    Abstract: 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: Application
    Filed: April 15, 2022
    Publication date: October 19, 2023
    Inventors: Nilanjan Goswami, Christopher James Goodman, Kyle Durfee, Piyush Agarwal, Steve John Clohset
  • Publication number: 20230334735
    Abstract: 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: Application
    Filed: April 15, 2022
    Publication date: October 19, 2023
    Inventors: Nilanjan Goswami, Christopher James Goodman, Steve John Clohset, Kyle Durfee
  • Publication number: 20230334702
    Abstract: 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: Application
    Filed: April 15, 2022
    Publication date: October 19, 2023
    Inventors: Nilanjan Goswami, Sonal Pinto
  • Patent number: 11748839
    Abstract: 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: Grant
    Filed: June 8, 2020
    Date of Patent: September 5, 2023
    Inventors: Nilanjan Goswami, Swati Atrish
  • Publication number: 20230113746
    Abstract: 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: Application
    Filed: October 12, 2021
    Publication date: April 13, 2023
    Inventors: Nilanjan Goswami, Eugene Gorbatov, Steve John Clohset, Michael Yee
  • Patent number: 11538221
    Abstract: 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: Grant
    Filed: November 16, 2020
    Date of Patent: December 27, 2022
    Inventors: Sushant Kondguli, Nilanjan Goswami
  • Publication number: 20220366820
    Abstract: 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: Application
    Filed: July 27, 2022
    Publication date: November 17, 2022
    Inventors: Nilanjan Goswami, Michael Yee, Morgyn Taylor, Patrick Mccleary, Naveen Makineni, Aaron Young, Zhi Zhou, Richard Lawrence Greene, Richard Webb, Cheng Chang
  • Publication number: 20220326527
    Abstract: 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: Application
    Filed: April 8, 2022
    Publication date: October 13, 2022
    Inventors: Morgyn Taylor, Zahid Hossain, Larry Seiler, Michael Yee, Nilanjan Goswami
  • Patent number: 11321806
    Abstract: 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: Grant
    Filed: November 13, 2020
    Date of Patent: May 3, 2022
    Inventors: Sushant Kondguli, Nilanjan Goswami
  • Publication number: 20220028027
    Abstract: 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: Application
    Filed: November 13, 2020
    Publication date: January 27, 2022
    Inventors: Sushant KONDGULI, Nilanjan GOSWAMI
  • Publication number: 20210366188
    Abstract: 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: Application
    Filed: November 16, 2020
    Publication date: November 25, 2021
    Inventors: Sushant KONDGULI, Nilanjan GOSWAMI
  • Publication number: 20210327017
    Abstract: 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: Application
    Filed: June 8, 2020
    Publication date: October 21, 2021
    Inventors: Nilanjan GOSWAMI, Swati ATRISH
  • Patent number: 11010954
    Abstract: 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: Grant
    Filed: June 11, 2019
    Date of Patent: May 18, 2021
    Inventors: Nilanjan Goswami, Derek Lentz, Adithya Hrudhayan Krishnamurthy, David C. Tannenbaum
  • Publication number: 20200184715
    Abstract: 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: Application
    Filed: June 11, 2019
    Publication date: June 11, 2020
    Inventors: Nilanjan GOSWAMI, Derek LENTZ, Adithya Hrudhayan KRISHNAMURTHY, David C. TANNENBAUM