Patents by Inventor Ivan Nevraev

Ivan Nevraev 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: 10198784
    Abstract: The techniques and systems described herein are directed to capturing commands in a multi-engine graphics processing unit (GPU). Captured commands can be played back by a developer to optimize software, hardware, and drivers. To accurately capture commands and memory associated with the commands during execution, dependencies between command buffer segments associated with the various GPU engines may be determined and used to divide a command buffer segment into atomic elements (which may also be referred to as seglets). Command buffer segments are analyzed to identify synchronization commands, which may represent a point in a command buffer segment that relies on an operation to be completed in another command buffer segment. The command buffer segment can be recursively divided into seglets based on the synchronization commands. The resulting seglets represent command segments that, upon execution, operate without synchronization interference from other command buffer segments.
    Type: Grant
    Filed: July 29, 2016
    Date of Patent: February 5, 2019
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Brian Bo Rasmussen, Cole Brooking, Ivan Nevraev
  • Publication number: 20190005712
    Abstract: Methods and devices for performing variable rate shading are described. Invocation information and lineage information for each pixel of a plurality of pixels of a primitive are stored in an invocation buffer and a lineage buffer of a graphics processing unit. One or more deferred shading or post-processing operations are performed on the image based at least in part on the invocation information and the lineage information associated with each pixel of the plurality of pixels.
    Type: Application
    Filed: June 30, 2017
    Publication date: January 3, 2019
    Inventors: Ivan NEVRAEV, Martin J. I. FULLER, Mark S. GROSSMAN
  • Publication number: 20190005714
    Abstract: Methods and devices for performing variable rate shading in graphics processing are described. A transformation pass can be performed over a current frame associate a current pixel in a current frame with a previous pixel in a previous frame. A previous fragment, including the previous pixel, in the previous frame can be analyzed to determine whether the previous fragment includes one or more areas of frequency detail achieving a threshold. A variable shading rate to apply to a current fragment including the current pixel can be determined based on analyzing the previous fragment.
    Type: Application
    Filed: June 30, 2017
    Publication date: January 3, 2019
    Inventors: Martin J.I. FULLER, Ivan NEVRAEV
  • Publication number: 20190005713
    Abstract: Methods and devices for performing pixel shading in graphics processing are described. Multiple primitives of an image can be shaded at one or more variable shading rates. A subset of pixels, in at least one screen-space tile corresponding to a portion of the image, corresponding to samples that are shaded in the shading at the one or more variable shading rates, can be determined. One or more deferred passes can be applied to the subset of pixels in the at least one screen-space tile to provide additional shading of the subset of pixels. After completing the deferred passes, the set of pixels not processed by the deferred passes can be filled using adjacent shaded pixels.
    Type: Application
    Filed: June 30, 2017
    Publication date: January 3, 2019
    Inventors: Ivan NEVRAEV, Martin J.I. FULLER
  • Patent number: 10147227
    Abstract: Methods and devices for rendering graphics in a computer system include a graphical processing unit (GPU) with a flexible, dynamic, application-directed mechanism for varying the rate at which fragment shading is performed for rendering an image to a display. In particular, the described aspects include determining, at a rasterization stage, map coordinates based on coarse scan converting a primitive of an object, the map coordinates indicating a location on a sampling rate parameter (SRP) map of a fragment within the primitive of the object, and identifying a lookup value for the fragment within the primitive of the object based at least on map coordinates, and calculating a respective fragment variable SRP value for the fragment within the primitive of the object based at least on the lookup value.
    Type: Grant
    Filed: June 22, 2017
    Date of Patent: December 4, 2018
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Ivan Nevraev, Martin J. I. Fuller, Mark S. Grossman, Jason M. Gould
  • Publication number: 20180240268
    Abstract: Methods and devices for rendering graphics in a computer system include a graphical processing unit (GPU) with a flexible, dynamic, application-directed mechanism for varying the rate at which fragment shading is performed for rendering an image to a display. In particular, the described aspects include determining, at a rasterization stage, map coordinates based on coarse scan converting a primitive of an object, the map coordinates indicating a location on a sampling rate parameter (SRP) map of a fragment within the primitive of the object, and identifying a lookup value for the fragment within the primitive of the object based at least on map coordinates, and calculating a respective fragment variable SRP value for the fragment within the primitive of the object based at least on the lookup value.
    Type: Application
    Filed: June 22, 2017
    Publication date: August 23, 2018
    Inventors: Ivan NEVRAEV, Martin J. I. FULLER, Mark S. GROSSMAN, Jason M. GOULD
  • Publication number: 20180232936
    Abstract: Methods and devices for rendering graphics in a computer device include receiving, at a graphics processing unit (GPU), a memory location address of a portion of a primitive to be rendered along with an indication of one or more values of one or more pixel shader parameters for the portion of the primitive, selecting, by the GPU, a pixel shader from a plurality of possible pixel shaders based on the indication of the one or more values of the one or more pixel shader parameters, and generating, by the GPU, at least one output of a render target of the portion of the primitive based on applying the pixel shader to the portion of the primitive.
    Type: Application
    Filed: June 30, 2017
    Publication date: August 16, 2018
    Inventors: Ivan NEVRAEV, Martin J. I. FULLER, Adam J. MILES, Jason M. GOULD
  • Publication number: 20180232849
    Abstract: Flexible, dynamic, and efficient compression and de-compression mechanisms are described. An example compression mechanism includes reading a plurality of groups of indices, identifying a smallest index in each of the plurality of groups, rotating indices in each of the plurality of groups such that the smallest index is a first value, calculating unsigned delta encoded values relative to the smallest index in each of the plurality of groups for remaining indices, converting the plurality of groups of indices into a plurality of compressed groups of indices, and storing the plurality of compressed groups of indices. An example de-compression mechanism include reading a plurality of compressed groups of indices, identifying a first index as an absolute value in each of the plurality of groups, calculating remaining indices of each of the plurality of groups, and converting the plurality of compressed groups of indices into a plurality of decompressed groups of indices.
    Type: Application
    Filed: June 19, 2017
    Publication date: August 16, 2018
    Inventors: Martin Jon Irwin FULLER, Ivan NEVRAEV
  • Publication number: 20180232912
    Abstract: Methods and devices for index buffer block compression in a computer system include a compressor in communication with a graphical processing unit (GPU). The methods and devices include selecting one or more primitives of at least a portion of a mesh formed by a total number of primitives for inclusion within a compressed index buffer block, the one or more primitives each associated with a number of indices each corresponding to a vertex within the mesh. The methods and devices may identify at least one redundant index in the number of indices associated with the one or more primitives of the compressed index buffer block. The methods and devices removing the at least one redundant index from the number of indices associated with the one or more primitives of the compressed index buffer block to form the compressed index buffer block as a set of one or more unique indices.
    Type: Application
    Filed: June 16, 2017
    Publication date: August 16, 2018
    Inventors: Ivan Nevraev, Jason Gould
  • Publication number: 20180189924
    Abstract: Methods and devices for graphics shading in a computing device. The methods and devices may include receiving a respective cache line of a plurality of cache lines of a shader stored in a memory, wherein the respective cache line and one or more other ones of the plurality of cache lines include at least one jump instruction. Further, the methods and devices may include executing the respective cache line of the shader and skipping to a next portion of the plurality of cache lines based on the at least one jump instruction. Moreover, the methods and devices may include executing one or more prefetchers contemporaneously with the shader in response to the at least one jump instruction, each prefetcher requesting a subsequent one of the plurality of cache lines from the memory, wherein each prefetcher corresponds to a respective jump instruction.
    Type: Application
    Filed: January 3, 2017
    Publication date: July 5, 2018
    Inventors: Jason GOULD, Ivan NEVRAEV, Martin J. I. FULLER, James A. GOOSSEN
  • Publication number: 20180033115
    Abstract: The techniques and systems described herein are directed to capturing commands in a multi-engine graphics processing unit (GPU). Captured commands can be played back by a developer to optimize software, hardware, and drivers. To accurately capture commands and memory associated with the commands during execution, dependencies between command buffer segments associated with the various GPU engines may be determined and used to divide a command buffer segment into atomic elements (which may also be referred to as seglets). Command buffer segments are analyzed to identify synchronization commands, which may represent a point in a command buffer segment that relies on an operation to be completed in another command buffer segment. The command buffer segment can be recursively divided into seglets based on the synchronization commands. The resulting seglets represent command segments that, upon execution, operate without synchronization interference from other command buffer segments.
    Type: Application
    Filed: July 29, 2016
    Publication date: February 1, 2018
    Inventors: Brian Bo Rasmussen, Cole Brooking, Ivan Nevraev
  • Publication number: 20160225118
    Abstract: To optimize the compilation of shaders for execution within an application, a computer system discovers the context in which the shaders are executed. The application is compiled and executed on a target platform. Snapshots of the application during execution are captured. A snapshot includes data and commands passed between the central processing unit and the graphics processing unit of the target platform to generate a single frame of graphics data. The shaders used in these snapshots are identified. These shaders are compiled with a number of different permutations of available compiler options, resulting in sets of differently compiled shaders. The snapshot is re-executed with the sets of differently compiled shaders, and performance is measured. The set of compiler options that results in compiled shaders providing better performance can be used as the set of compilation parameters for the set of shaders for this application.
    Type: Application
    Filed: February 2, 2015
    Publication date: August 4, 2016
    Inventors: Ivan Nevraev, Cole Brooking, J. Andrew Goossen, Eric Christoffersen, Jason Strayer
  • Publication number: 20160224258
    Abstract: To optimize utilization of such dedicated memory by a particular application, the application is executed with multiple permutations of placement of data in the dedicated memory. That application is executed on a target platform, and snapshots of the application during execution are captured on the target platform. A snapshot is a log that includes data and commands passed between the central processing unit and the graphics processing unit of the target platform to generate a single frame of graphics data. Given a snapshot, multiple permutations of resource placement are generated and tested by re-executing the snapshot on the target platform. For multiple snapshots and multiple permutations for each snapshot, the computer system accesses or computes performance statistics. Based on the performance statistics, the computer system determines a layout of data for using the dedicated memory.
    Type: Application
    Filed: February 2, 2015
    Publication date: August 4, 2016
    Inventors: Ivan Nevraev, Cole Brooking, J. Andrew Goossen, Jason Strayer
  • Publication number: 20130077820
    Abstract: A virtual skeleton includes a plurality of joints and provides a machine readable representation of a human subject observed with a sensor such as a depth camera. A gesture detection module is trained via machine learning to identify one or more features of a virtual skeleton and indicate if the feature(s) collectively indicate a particular gesture.
    Type: Application
    Filed: September 26, 2011
    Publication date: March 28, 2013
    Applicant: MICROSOFT CORPORATION
    Inventors: Charles Claudius Marais, Zsolt Mathe, Mark Seminatore, Ivan Nevraev