Synchronization with semaphores in a multi-engine GPU
AssigneeATI Technologies ULC
InventorPat Truong
Life of this patent
Estimating the term…
Abstract
A method for performing an operation using more than one resource may include several steps: requesting an operation performed by a resource; populating a ring frame with an indirect buffer command packet corresponding to the operation using a method that may include for the resource requested to perform the operation, creating a semaphore object with a resource identifier and timestamp, in the event that the resource is found to be unavailable; inserting a command packet (wait) into the ring frame, wherein the command packet (wait) corresponds to the semaphore object; and submitting the ring frame to the graphics engine.
Claims13
A method for performing an operation using a plurality of resources comprising:
- requesting an operation performed by a requested resource;
- populating a ring frame with an indirect buffer command packet corresponding to the operation using a method comprising:
- for the resource requested to perform the operation, creating a semaphore object with a resource identifier and timestamp, in the event that the requested resource is found to be unavailable;
- updating a free semaphore object with the resource requested and timestamp;
- checking if a previous semaphore object corresponding to the resource requested has an expired timestamp,
- wherein a previous operation has taken place and created the previous semaphore object,
- wherein if the timestamp is expired, the updated semaphore object is added to a wait bucket and a resource object is updated with a free semaphore object identification, resource identifier, and timestamp;
- inserting a command packet (wait) into the ring frame, wherein the command packet (wait) corresponds to the semaphore object;
- and
- submitting the ring frame to an engine.
A method for performing an operation using a plurality of resources comprising:
- requesting an operation performed by a requested resource;
- populating a ring frame with an indirect buffer command packet corresponding to the operation using a method comprising:
- for the resource requested to perform the operation, creating a semaphore object with a resource identifier and timestamp, in the event that the requested resource is found to be unavailable;
- updating a free semaphore object with the resource requested and timestamp;
- checking if a previous semaphore object corresponding to the resource requested has an expired timestamp,
- wherein a previous operation has taken place and created the previous semaphore object,
- comparing a semaphore object in a wait bucket with the previous semaphore object corresponding to the requested resource and determining if the resource identifications in the semaphore object in the wait bucket and the previous semaphore object are the same;
- inserting a command packet (wait) into the ring frame, wherein the command packet (wait) corresponds to the semaphore object;
- and
- submitting the ring frame to an engine.
A system, comprising:
- a driver in communication with multiple engines, wherein on receipt of an operation request that requires resources corresponding to a graphics engine, for the requested operation:
- creating a semaphore object with a corresponding graphics engine and timestamp, populating a ring frame with command packets corresponding to the operation;
- for the resource requested to perform the operation, creating a semaphore object with a graphics engine identifier and timestamp, in the event that the resource is found to be unavailable;
- updating a free semaphore object with the resource requested and timestamp:
- checking if a previous semaphore object corresponding to the resource requested has an expired timestamp,
- wherein a previous operation has taken place and created the previous semaphore object,
- wherein if the timestamp is expired, the updated semaphore object is added to a wait bucket and a resource object is updated with a free semaphore object identification, resource identifier, and timestamp:
- inserting a command packet (wait) into the ring frame, wherein the command packet (wait) corresponds to the semaphore object;
- and
- submitting the ring frame to a processing unit.
Dependencies are inferred from the claim text.