AGIS - Android GPU Inspector Service
PROTOCOLS
ComponentRegistry
Defined in fuchsia.gpu.agis/agis.fidl
The AGIS ComponentRegistry protocol allows traceable Fuchsia components to register as Vulkan traceable.
GetVulkanSocket
Hanging get to retrieve the Vulkan endpoint of the ffx/vulkan Zircon socket pair. This get is first satisfied when the client (the AGI application) calls FfxBridge::GetSocket() on the |global_id| that matches the client id |id|.
Request
| Name | Type |
|---|---|
id |
ClientId
|
Response
| Name | Type |
|---|---|
payload |
ComponentRegistry_GetVulkanSocket_Result
|
Register
Register a process as traceable.
Request
| Name | Type |
|---|---|
id |
ClientId
|
process_koid |
zx/Koid
|
process_name |
string:32
|
Response
| Name | Type |
|---|---|
payload |
ComponentRegistry_Register_Result
|
Unregister
Request
| Name | Type |
|---|---|
id |
ClientId
|
Response
| Name | Type |
|---|---|
payload |
ComponentRegistry_Unregister_Result
|
Connector
Defined in fuchsia.gpu.agis/agis.fidl
The AGIS Connector protocol provides the interface to retrieve the ffx socket endpoint.
GetSocket
Retrieves the ffx socket endpoint of the ffx/vulkan socket pair.
Request
| Name | Type |
|---|---|
global_id |
GlobalId
|
Response
| Name | Type |
|---|---|
payload |
Connector_GetSocket_Result
|
Observer
Defined in fuchsia.gpu.agis/agis.fidl
The AGIS Observer protocol provides the interface to retrieve the full list of registered Vulkan Traceable Components (vtcs).
Vtcs
Retrieve registered components. For AGI, gapis will be the only client of this Vtcs interface.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
payload |
Observer_Vtcs_Result
|
STRUCTS
ComponentRegistry_GetVulkanSocket_Response resource
Defined in fuchsia.gpu.agis/agis.fidl
| Field | Type | Description | Default |
|---|---|---|---|
socket |
handle<socket>?
|
No default |
ComponentRegistry_Register_Response
Defined in fuchsia.gpu.agis/agis.fidl
<EMPTY>
ComponentRegistry_Unregister_Response
Defined in fuchsia.gpu.agis/agis.fidl
<EMPTY>
Connector_GetSocket_Response resource
Defined in fuchsia.gpu.agis/agis.fidl
| Field | Type | Description | Default |
|---|---|---|---|
socket |
handle<socket>
|
No default |
Observer_Vtcs_Response resource
Defined in fuchsia.gpu.agis/agis.fidl
| Field | Type | Description | Default |
|---|---|---|---|
vtcs |
vector<Vtc>:128
|
No default |
ENUMS
Error flexible
Type: uint32
Defined in fuchsia.gpu.agis/agis.fidl
| Name | Value | Description |
|---|---|---|
NOT_FOUND |
1 |
|
ALREADY_REGISTERED |
2 |
|
VTCS_EXCEEDED |
3 |
|
INTERNAL_ERROR |
4 |
TABLES
Vtc resource
Defined in fuchsia.gpu.agis/agis.fidl
AGIS provides FIDL services that facilitate Vulkan command tracing. It acts as an intermediary between gapii, the Android GPU Inspector interposing shared library and Vulkan layer, and the host Android GPU Inspector (AGI) application.
Vulkan Traceable Component (vtc)
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
global_id |
GlobalId
|
|
2 |
process_koid |
zx/Koid
|
|
3 |
process_name |
string:32
|
UNIONS
ComponentRegistry_GetVulkanSocket_Result strict resource
Defined in fuchsia.gpu.agis/agis.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
ComponentRegistry_GetVulkanSocket_Response
|
|
2 |
err |
Error
|
ComponentRegistry_Register_Result strict
Defined in fuchsia.gpu.agis/agis.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
ComponentRegistry_Register_Response
|
|
2 |
err |
Error
|
ComponentRegistry_Unregister_Result strict
Defined in fuchsia.gpu.agis/agis.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
ComponentRegistry_Unregister_Response
|
|
2 |
err |
Error
|
Connector_GetSocket_Result strict resource
Defined in fuchsia.gpu.agis/agis.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Connector_GetSocket_Response
|
|
2 |
err |
Error
|
Observer_Vtcs_Result strict resource
Defined in fuchsia.gpu.agis/agis.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
Observer_Vtcs_Response
|
|
2 |
err |
Error
|
CONSTANTS
| Name | Value | Type | Description |
|---|---|---|---|
| MAX_VTCS |
128
|
uint32 |
Max vtcs that may be registered. ZX_CHANNEL_MAX_MESSAGE_BYTES = 64KiB. At an approximate message size of 50B, rounding up to 64B, we easily fit 128 vtcs in a message with ample headroom for message size growth. The number of vtcs is determined by developers, rather than users. The typical expected vtc count is 1 considering a developer performing Vulkan tracing on 1 component at a time. |
ALIASES
| Name | Value | Description |
|---|---|---|
| ClientId |
uint64 |
Client supplied id. |
| GlobalId |
uint32 |
Agis internally generated id. |