Patents by Inventor Andrew L. Bliss
Andrew L. Bliss 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: 9824484Abstract: Allocation of memory registers for shaders by a processor is described herein. For each shader, registers are allocated based on the shader's level of complexity. Simpler shader instances are restricted to a smaller number of memory registers. More complex shader instances are allotted more registers. To do so, developers' high level shading level (HLSL) language includes template classes of shaders that can later be replaced by complex or simple versions of the shader. The HLSL is converted to bytecode that can be used to rasterize pixels on a computing device.Type: GrantFiled: July 12, 2016Date of Patent: November 21, 2017Assignee: Microsoft Technology Licensing, LLCInventors: Michael V. Oneppo, Craig Peeper, Andrew L. Bliss, John L. Rapp, Mark M. Lacey
-
Publication number: 20170039754Abstract: Allocation of memory registers for shaders by a processor is described herein. For each shader, registers are allocated based on the shader's level of complexity. Simpler shader instances are restricted to a smaller number of memory registers. More complex shader instances are allotted more registers. To do so, developers' high level shading level (HLSL) language includes template classes of shaders that can later be replaced by complex or simple versions of the shader. The HLSL is converted to bytecode that can be used to rasterize pixels on a computing device.Type: ApplicationFiled: July 12, 2016Publication date: February 9, 2017Inventors: MICHAEL V. ONEPPO, CRAIG PEEPER, ANDREW L. BLISS, JOHN L. RAPP, MARK M. LACEY
-
Patent number: 9390542Abstract: Allocation of memory registers for shaders by a processor is described herein. For each shader, registers are allocated based on the shader's level of complexity. Simpler shader instances are restricted to a smaller number of memory registers. More complex shader instances are allotted more registers. To do so, developers' high level shading level (HLSL) language includes template classes of shaders that can later be replaced by complex or simple versions of the shader. The HLSL is converted to bytecode that can be used to rasterize pixels on a computing device.Type: GrantFiled: November 11, 2013Date of Patent: July 12, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Michael V. Oneppo, Craig Peeper, Andrew L. Bliss, John L. Rapp, Mark M. Lacey
-
Publication number: 20150186165Abstract: The present invention extends to methods, systems, and computer program products for emulating pointers. Pointers can be emulated by replacing the pointers with a variable offset pair and replacing each dereference site with a switch on the tag and a switch body that executes the emulated pointer access on the corresponding variable the pointer points to. Data flow optimizations can be used to reduce the number of switches and/or reduce the number of cases which need be considered at each emulated pointer access sites.Type: ApplicationFiled: March 17, 2015Publication date: July 2, 2015Inventors: Yosseff Levanoni, Weirong Zhu, Lingli Zhang, John Lee Rapp, Andrew L. Bliss
-
Patent number: 8997066Abstract: The present invention extends to methods, systems, and computer program products for emulating pointers. Pointers can be emulated by replacing the pointers with a <variable#, offset> pair and replacing each dereference site with a switch on the tag and a switch body that executes the emulated pointer access on the corresponding variable the pointer points to. Data flow optimizations can be used to reduce the number of switches and/or reduce the number of cases which need be considered at each emulated pointer access sites.Type: GrantFiled: December 27, 2010Date of Patent: March 31, 2015Assignee: Microsoft Technology Licensing, LLCInventors: Yosseff Levanoni, Weirong Zhu, Lingli Zhang, John Lee Rapp, Andrew L. Bliss
-
Publication number: 20140063029Abstract: Allocation of memory registers for shaders by a processor is described herein. For each shader, registers are allocated based on the shader's level of complexity. Simpler shader instances are restricted to a smaller number of memory registers. More complex shader instances are allotted more registers. To do so, developers' high level shading level (HLSL) language includes template classes of shaders that can later be replaced by complex or simple versions of the shader. The HLSL is converted to bytecode that can be used to rasterize pixels on a computing device.Type: ApplicationFiled: November 11, 2013Publication date: March 6, 2014Applicant: Microsoft CorporationInventors: MICHAEL V. ONEPPO, Craig Peeper, Andrew L. Bliss, John L. Rapp, Mark M. Lacey
-
Patent number: 8581912Abstract: Allocation of memory registers for shaders by a processor is described herein. For each shader, registers are allocated based on the shader's level of complexity. Simpler shader instances are restricted to a smaller number of memory registers. More complex shader instances are allotted more registers. To do so, developers' high level shading level (HLSL) language includes template classes of shaders that can later be replaced by complex or simple versions of the shader. The HLSL is converted to bytecode that can be used to rasterize pixels on a computing device.Type: GrantFiled: June 27, 2008Date of Patent: November 12, 2013Assignee: Microsoft CorporationInventors: Michael V. Oneppo, Craig Peeper, Andrew L. Bliss, John L. Rapp, Mark M. Lacey
-
Patent number: 8510724Abstract: The present invention extends to methods, systems, and computer program products for reconstructing program control flow. Embodiments include implementing or morphing a control flow graph (“CFG”) into an arbitrary loop structure to reconstruct (preserve) control flow from original source code. Loop structures can be optimized and can adhere to target platform constraints. In some embodiments, C++ source code (a first higher level format) is translated into a CFG (a lower level format). The CFG is then translated into High Level Shader Language (“HLSL”) source code (a second different higher level format) for subsequent compilation into SLSL bytecode (that can then be executed at a Graphical Processing Unit (“GPU”)). The control flow from the C++ source code is preserved in the HLSL source code.Type: GrantFiled: December 17, 2010Date of Patent: August 13, 2013Assignee: Microsoft CorporationInventors: Yosseff Levanoni, Weirong Zhu, Lingli Zhang, John Lee Rapp, Andrew L. Bliss
-
Publication number: 20120167062Abstract: The present invention extends to methods, systems, and computer program products for emulating pointers. Pointers can be emulated by replacing the pointers with a <variable#, offset> pair and replacing each dereference site with a switch on the tag and a switch body that executes the emulated pointer access on the corresponding variable the pointer points to. Data flow optimizations can be used to reduce the number of switches and/or reduce the number of cases which need be considered at each emulated pointer access sites.Type: ApplicationFiled: December 27, 2010Publication date: June 28, 2012Applicant: Microsoft CorporationInventors: Yosseff Levanoni, Weirong Zhu, Lingli Zhang, John Lee Rapp, Andrew L. Bliss
-
Publication number: 20120159458Abstract: The present invention extends to methods, systems, and computer program products for reconstructing program control flow. Embodiments include implementing or morphing a control flow graph (“CFG”) into an arbitrary loop structure to reconstruct (preserve) control flow from original source code. Loop structures can be optimized and can adhere to target platform constraints. In some embodiments, C++ source code (a first higher level format) is translated into a CFG (a lower level format). The CFG is then translated into HLSL source code (a second different higher level format) for subsequent compilation into SLSL bytecode (that can then be executed at a Graphical Processing Unit (“GPU”)). The control flow from the C++ source code is preserved in the HLSL source code.Type: ApplicationFiled: December 17, 2010Publication date: June 21, 2012Applicant: Microsoft CorporationInventors: Yosseff Levanoni, Weirong Zhu, Lingli Zhang, John Lee Rapp, Andrew L. Bliss
-
Publication number: 20090322751Abstract: Allocation of memory registers for shaders by a processor is described herein. For each shader, registers are allocated based on the shader's level of complexity. Simpler shader instances are restricted to a smaller number of memory registers. More complex shader instances are allotted more registers. To do so, developers' high level shading level (HLSL) language includes template classes of shaders that can later be replaced by complex or simple versions of the shader. The HLSL is converted to bytecode that can be used to rasterize pixels on a computing device.Type: ApplicationFiled: June 27, 2008Publication date: December 31, 2009Applicant: MICROSOFT CORPORATIONInventors: MICHAEL V. ONEPPO, CRAIG PEEPER, ANDREW L. BLISS, JOHN L. RAPP, MARK M. LACEY
-
Patent number: 7426735Abstract: A system and method to facilitate communication between a user interface and an associated process is disclosed. A first thread is associated with the user interface and a second thread is associated with the process for implementing requests by the user interface. At least one state buffer is operable to store state data for controlling ownership to the state buffer by the first and second threads for communicating data between the first and second threads. The architecture may be used in connection with a debugging system, such as to facilitate responsive interaction between the GUI and the associated debugging system.Type: GrantFiled: October 5, 2004Date of Patent: September 16, 2008Assignee: Microsoft CorporationInventors: Andrew L. Bliss, Andre F. Vachon
-
Patent number: 7302613Abstract: A system, method and interface for consistently capturing kernel resident information are provided. An operating system architecture includes user mode modules and kernel mode applications. A user mode module initiates a kernel mode information request through an application program interface identifying one or more process threads of interest. A kernel mode module captures information corresponding to standard kernel mode information and corresponding to the specifically identified process threads. The information is returned in a pre-allocated buffer.Type: GrantFiled: November 12, 2003Date of Patent: November 27, 2007Assignee: Microsoft CorporationInventors: Andrew L. Bliss, John D. Service, Narayanan Ganapathy, Neill M. Clift, Yi Meng
-
Patent number: 7191364Abstract: A large portion of software bugs are related to hangs. Analyzing and diagnosing hang-related bugs involves capturing data from a hung program and extracting attributes from the captured data. Extracting attributes from the capture data provides a scheme to determine relevant characteristics of the hang. Moreover, the extracted attributes may be compared to known issues and, based on that comparison, a bug may be classified as known or unknown. Alternatively, triage may be performed on the client computing device in order to determine the potential cause of the hang event. Once the potential cause of the hang event has been determined, troubleshooting steps may be performed on the client computing device to quarantine it. Ultimately, if the hang-inducing bug is known, a user may be provided with a solution to the bug. Alternatively, if the bug is unknown, implementations of the invention send the captured data to be analyzed and fixed by the software's provider.Type: GrantFiled: November 14, 2003Date of Patent: March 13, 2007Assignee: Microsoft CorporationInventors: William Hunter Hudson, Reiner Fink, Geoff Pease, Gerald Maffeo, Yi Meng, Eric LeVine, Andrew L. Bliss, Andre Vachon, Kshitiz K. Sharma, Jing Shan
-
Patent number: 7150006Abstract: A system and method for facilitating cross-process access into a managed code process is useful in an embodiment of the invention for debugging managed code without perturbing the process being accessed or requiring the code under test to be running during debugging. A compiler according to an embodiment of the invention is used to produce mirror code wherein in-process pointers have been replaced with cross-process pointers in order to mirror the address space of the process under test to the address space of the mirror code process. In a further embodiment, the mirror code process is modified not only to allow but also to optimize the cross-process access.Type: GrantFiled: November 3, 2003Date of Patent: December 12, 2006Assignee: Microsoft CorporationInventors: Andrew L. Bliss, Vance Palmer Morrison, Sean Edwin Trowbridge
-
Patent number: 6931412Abstract: A directed graph includes a plurality of containers, where each container has a type value and is instantiated based on one of a plurality of container types. Each action as instantiated includes an action method table comprising a plurality of action methods. Each action when traversing the directed graph employs the type value of an encountered container as an offset into the action method table thereof to select the action method to be executed on the encountered container. During run-time and prior to traversing the directed graph, an action is instantiated if not already instantiated, and the method table of the action is expanded and filled in based on any new container types in the system.Type: GrantFiled: November 5, 2001Date of Patent: August 16, 2005Assignee: Microsoft CorporationInventors: Matthew T. Uyttendaele, Andrew L. Bliss
-
Patent number: 6823518Abstract: A system and method to facilitate communication between a user interface and an associated process is disclosed. A first thread is associated with the user interface and a second thread is associated with the process for implementing requests by the user interface. At least one state buffer is operable to store state data for controlling ownership to the state buffer by the first and second threads for communicating data between the first and second threads. The architecture may be used in connection with a debugging system, such as to facilitate responsive interaction between the GUI and the associated debugging system.Type: GrantFiled: October 17, 2000Date of Patent: November 23, 2004Assignee: Microsoft CorporationInventors: Andrew L. Bliss, Andre F. Vachon
-
Publication number: 20040111707Abstract: A debugger can debug any of a plurality of debuggees. Each debuggee has a debugging type attribute selected from a plurality of debugging type attributes and representative of a type of debugging to be performed with respect to the debuggee. Each debuggee also has a processor attribute selected from a plurality of processor attributes and representative of a type of processor associated with the debuggee. The debugger is instantiated on a computer, and has an engine for performing debugging functions with respect to any of the plurality of debuggees. The engine includes a plurality of debugging type blocks, where each debugging type block supports at least one of the plurality of debugging type attributes, and a plurality of processor blocks, where each processor block supports at least one of the plurality of processor attributes.Type: ApplicationFiled: December 15, 2000Publication date: June 10, 2004Inventors: Andrew L. Bliss, Andre Vachon
-
Patent number: 6738777Abstract: A plurality of actions are applied to a directed graph, where the directed graph has a plurality of nodes. A node in the directed graph is traversed to, and an specific method for each of the plurality of actions is performed on the traversed-node. The traversing and performing are repeated until all nodes in the directed graph have been traversed to. Only a single traversal of the directed graph need be performed to apply all of the actions to the directed graph. The plurality of the actions are in the form of a chain. Each action has an action object pointer, and the actions include a base action at a tail end of the chain and at least one chain action at a head end of the chain. The action object pointer of each chain action points to an immediately adjacent action toward the tail end of the chain, and the action object pointer of the base action points to the chain action at the head end of the chain.Type: GrantFiled: December 20, 2000Date of Patent: May 18, 2004Assignee: Microsoft CorporationInventors: Andrew L. Bliss, Kyle R. Johns
-
Publication number: 20020083314Abstract: A directed graph includes a plurality of containers, where each container has a type value and is instantiated based on one of a plurality of container types. Each action as instantiated includes an action method table comprising a plurality of action methods. Each action when traversing the directed graph employs the type value of an encountered container as an offset into the action method table thereof to select the action method to be executed on the encountered container. During run-time and prior to traversing the directed graph, an action is instantiated if not already instantiated, and the method table of the action is expanded and filled in based on any new container types in the system.Type: ApplicationFiled: November 5, 2001Publication date: June 27, 2002Applicant: Microsoft CorporationInventors: Matthew T. Uyttendaele, Andrew L. Bliss