Git Product home page Git Product logo

google / gapid Goto Github PK

View Code? Open in Web Editor NEW
2.2K 97.0 327.0 93.89 MB

Graphics API Debugger

Home Page: https://gapid.dev

License: Apache License 2.0

Go 54.05% C++ 13.37% C 9.96% JavaScript 0.26% Objective-C++ 0.10% Shell 0.24% GLSL 0.25% HTML 1.00% Java 16.03% Batchfile 0.07% Python 0.01% Smarty 0.02% CSS 0.01% Starlark 4.22% NASL 0.41%
gpu debugger golang gles gles2 vulkan vulkan-api graphics-api android linux

gapid's Introduction

GAPID: Graphics API Debugger

GoDoc Linux Linux Build Status MacOS MacOS Build Status Windows Windows Build Status

Maintenance Mode

GAPID is not currently under active development. Issues filed against this repo might not be answered.

For Android GPU debugging and profiling, please use AGI which is based on GAPID.

Downloads

Download the latest version of GAPID here.

Unstable developer releases are here.

Documentation

User documentation can be found at gapid.dev

The developer documentation contains some hints for GAPID developers. See also the README files under some source directories.

About

GAPID is a collection of tools that allows you to inspect, tweak and replay calls from an application to a graphics driver.

GAPID can trace any Android debuggable application, or if you have root access to the device any application can be traced. GAPID can also trace any desktop Vulkan application.

Screenshot 1 Screenshot 2
Screenshot 3 Screenshot 4

Building

See Building GAPID.

Running the client

After building GAPID, you can run the client from <gapid-root>/bazel-bin/pkg/gapid.

Command-Line Interface

GAPID exposes most of its functionality via a CLI gapit. You can find auto-generated documentation here.

Project Structure

GAPID consists of the following sub-components:

gapii: Graphics API Interceptor

A layer that sits between the application / game and the GPU driver, recording all the calls and memory accesses.

gapis: Graphics API Server

A process that analyses capture streams reporting incorrect API usage, processes the data for replay on various target devices, and provides an RPC interface to the client.

gapir: Graphics API Replay daemon

A stack-based VM used to playback capture files, imitating the original application’s / game's calls to the GPU driver. Supports read-back of any buffer / framebuffer, and provides profiling functionality.

gapic: Graphics API Client

The frontend user interface application. Provides visual inspection of the capture data, memory, resources, and frame-buffer content.

gapil: Graphics API Language

A new domain specific language to describe a graphics API in its entirety. Combined with our template system to generate huge parts of the interceptor, server and replay systems.

gapid's People

Contributors

apazylbe avatar apbodnar avatar awoloszyn avatar baldwinn860 avatar ben-clayton avatar bjoeris avatar chrisforbes avatar dpallotti avatar dsrbecky avatar ek9852 avatar elviscapiaq avatar hevrard avatar hliatis avatar hysw avatar ianthehat avatar johnplate avatar lpy avatar mikaelpessa avatar pau-baiget avatar paulthomson avatar pmuetschard avatar purvisa-at-google-com avatar qining avatar renfengliu avatar rschiu avatar sean-purcell avatar silence-do-good avatar stellama0208 avatar yalcinmelihyasin avatar zakerinasab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gapid's Issues

gles.api doesn't correctly distinguish between reserved and active names.

From glIsTexture:
"A name returned by glGenTextures, but not yet associated with a texture by calling glBindTexture, is not the name of a texture."

We do not represent this in the API file.

Similar (Tri-State): glIsQuery, glIsRenderbuffer, glIsVertexArray

Different (Tri-State):
glIsProgram:
"A program object marked for deletion with glDeleteProgram but still in use as part of current rendering state is still considered a program object and glIsProgram will return GL_TRUE"

glIsShader:
"A shader object marked for deletion with glDeleteShader but still attached to a program object is still considered a shader object and glIsShader will return GL_TRUE."

Two-State: glIsSampler

Build failure on Linux

Keep getting error message:

X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  25
  Current serial number in output stream:  26
RAN: /usr/local/home/qining/gapid/debug/test/test-core-os-device
GOT: 
CMake Error at /usr/local/home/qining/Workspace/gopath/src/github.com/google/gapid/cmake/Modules/GoTest.cmake:25 (message):
  RESULT: 1

./do build generate does not help
Removing build directory does not help

Loading capture * .gfxtrace, report: panic: runtime error: index out of range

I20170324-093527524[main][models.Capture.loadCapture] Loading capture /ws/gpu/training_20170323_1156.gfxtrace...
W20170324-093528956[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: panic: runtime error: index out of range
W20170324-093528956[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis:
W20170324-093528957[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: goroutine 75 [running]:
W20170324-093528957[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/gfxapi/gles.moveClientVBsToVAs(0x766d360, 0xc422357e90, 0xc421aec190, 0xc422ba9d70, 0x0, 0xffffffffffffffff, 0x297, 0x7672c40, 0xc4205326f0, 0xc4200ae310, ...)
W20170324-093528957[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/gfxapi/gles/compat.go:1071 +0x611
W20170324-093528957[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/gfxapi/gles.compat.func4(0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0, 0x76130e0, 0xc422ba9f20)
W20170324-093528958[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/gfxapi/gles/compat.go:521 +0x15fd
W20170324-093528958[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.transform.Transform(0x5fbd6d9, 0x6, 0xc420659f40, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0, 0x76130e0, 0xc422ba9f20)
W20170324-093528958[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:75 +0x75
W20170324-093528958[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.(*transform).Transform(0xc421c9dc00, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0, 0x76130e0, 0xc422ba9f20)
W20170324-093528958[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	<autogenerated>:10 +0xb1
W20170324-093528961[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.TransformWriter.MutateAndWrite(0xc4200ae310, 0x7613120, 0xc421c9dc00, 0x76130e0, 0xc422ba9f20, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0)
W20170324-093528961[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:98 +0x83
W20170324-093528961[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.(*TransformWriter).MutateAndWrite(0xc422ba9f50, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0)
W20170324-093528961[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	<autogenerated>:8 +0xa1
W20170324-093528961[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/gfxapi/gles.(*readFramebuffer).Transform(0xc422bae090, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0, 0x76130e0, 0xc422ba9f50)
W20170324-093528961[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/gfxapi/gles/read_framebuffer.go:45 +0x73
W20170324-093528962[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.TransformWriter.MutateAndWrite(0xc4200ae310, 0x76111e0, 0xc422bae090, 0x76130e0, 0xc422ba9f50, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0)
W20170324-093528962[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:98 +0x83
W20170324-093528962[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.(*TransformWriter).MutateAndWrite(0xc422ba9f80, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0)
W20170324-093528962[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	<autogenerated>:8 +0xa1
W20170324-093528963[Thread-1][server.GapisConnection$GRpcGapisConnection$LogMonitorThread.run] getLogStream() threw unexpected exception
W20170324-093528963[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/gfxapi/gles.undefinedFramebuffer.func1(0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0, 0x76130e0, 0xc422ba9f80)
W20170324-093528963[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/gfxapi/gles/undefined_framebuffer.go:32 +0x9c
W20170324-093528963[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.transform.Transform(0x5fca805, 0x10, 0xc421c9da20, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0, 0x76130e0, 0xc422ba9f80)
W20170324-093528964[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:75 +0x75
W20170324-093528964[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.(*transform).Transform(0xc421c9da40, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0, 0x76130e0, 0xc422ba9f80)
W20170324-093528964[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	<autogenerated>:10 +0xb1
W20170324-093528965[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.TransformWriter.MutateAndWrite(0xc4200ae310, 0x7613120, 0xc421c9da40, 0x76130e0, 0xc422ba9f80, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] LoadData error
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] java.util.concurrent.ExecutionException: io.grpc.StatusRuntimeException: UNAVAILABLE: End of stream or IOException
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:500)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:459)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:76)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:142)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.gapid.rpclib.rpccore.Rpc$Result.get(Rpc.java:148)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.gapid.models.CaptureDependentModel.processResult(CaptureDependentModel.java:106)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.gapid.models.CaptureDependentModel$2.onRpcThread(CaptureDependentModel.java:84)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.gapid.models.CaptureDependentModel$2.onRpcThread(CaptureDependentModel.java:81)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.gapid.util.UiCallback.onFinish(UiCallback.java:46)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.gapid.rpclib.rpccore.Rpc$1.run(Rpc.java:100)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:435)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:900)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:811)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:675)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:112)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:435)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:900)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:811)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:675)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:112)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:435)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:900)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:811)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:675)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at io.grpc.stub.ClientCalls$GrpcFuture.setException(ClientCalls.java:466)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:442)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:481)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$600(ClientCallImpl.java:398)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:513)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:52)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at java.lang.Thread.run(Thread.java:745)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] Caused by: io.grpc.StatusRuntimeException: UNAVAILABLE: End of stream or IOException
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	at io.grpc.Status.asRuntimeException(Status.java:545)
E20170324-093528963[grpc-default-executor-2][models.CaptureDependentModel.processResult] 	... 9 more
W20170324-093528963[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:98 +0x83
W20170324-093529021[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.(*TransformWriter).MutateAndWrite(0xc422ba9fb0, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0)
W20170324-093529022[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	<autogenerated>:8 +0xa1
W20170324-093529022[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/gfxapi/gles.(*findIssues).Transform(0xc422ba9bc0, 0x766d360, 0xc422357e90, 0x297, 0x7672c40, 0xc4205326f0, 0x76130e0, 0xc422ba9fb0)
W20170324-093529022[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/gfxapi/gles/find_issues.go:102 +0x168
W20170324-093529022[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.TransformWriter.MutateAndWrite(0xc4200ae310, 0x76111a0, 0xc422ba9bc0, 0x76130e0, 0xc422ba9fb0, 0x766d360, 0xc4220ff380, 0x297, 0x7672c40, 0xc4205326f0)
W20170324-093529040[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:98 +0x83
W20170324-093529041[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.(*TransformWriter).MutateAndWrite(0xc422b7e000, 0x766d360, 0xc4220ff380, 0x297, 0x7672c40, 0xc4205326f0)
W20170324-093529041[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	<autogenerated>:8 +0xa1
W20170324-093529041[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/atom/transform.Transforms.Transform(0xc42053bd80, 0x5, 0x8, 0x766d360, 0xc4220ff380, 0xc420caa000, 0x3987, 0x3987, 0x76113a0, 0xc421eb64c0)
W20170324-093529041[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:40 +0x1ba
W20170324-093529041[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/gfxapi/gles.api.Replay(0x766d360, 0xc4220fed20, 0xc421eba008, 0xc421eba010, 0x5c2d8a0, 0x776cbe0, 0xc422548100, 0x1, 0x1, 0x76cfda0, ...)
W20170324-093529042[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/gfxapi/gles/replay.go:211 +0xba3
W20170324-093529042[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/gfxapi/gles.(*api).Replay(0x776cbe0, 0x766d360, 0xc4220fed20, 0xc421eba008, 0xc421eba010, 0x5c2d8a0, 0x776cbe0, 0xc422548100, 0x1, 0x1, ...)
W20170324-093529042[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	<autogenerated>:2420 +0xfb
W20170324-093529042[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/replay.(*batcher).send(0xc42214a930, 0x766d360, 0xc4220fed20, 0xc422548100, 0x1, 0x1, 0x0, 0x0)
W20170324-093529042[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/replay/batcher.go:178 +0x934
W20170324-093529042[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: github.com/google/gapid/gapis/replay.(*batcher).run(0xc42214a930, 0x766d360, 0xc422160d80)
W20170324-093529042[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/replay/batcher.go:95 +0x5f9
W20170324-093529043[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: created by github.com/google/gapid/gapis/replay.(*Manager).getBatchStream
W20170324-093529043[server.ChildProcess$LoggingStringHandler][server.ChildProcess$LoggingStringHandler.lambda$new$71] gapis: 	/myenv/go/src/github.com/google/gapid/gapis/replay/manager.go:55 +0x3f9
W20170324-093529043[server.ChildProcess-gapis][server.ChildProcess.onExit] The gapis process exited with a non-zero exit value: 2
I20170324-093529043[server.ChildProcess-gapis][server.ChildProcess.shutdown] Shutting down gapis

do build error on Windows

$ sh -x do run gapic
++ dirname do

  • DO_DIR=.
    ++ cd .
    ++ pwd
  • DO_DIR=/c/Users/jia.wanj/go/src/github.com/google/gapid
    ++ cd /c/Users/jia.wanj/go/src/github.com/google/gapid/../../../../
    ++ pwd
  • export GOPATH=/c/Users/jia.wanj/go/src/github.com/google/gapid/third_party:/c/Users/jia.wanj/go
  • GOPATH=/c/Users/jia.wanj/go/src/github.com/google/gapid/third_party:/c/Users/jia.wanj/go
  • cd /c/Users/jia.wanj/go/src/github.com/google/gapid
  • go run ./cmd/do/build.go ./cmd/do/clean.go ./cmd/do/config.go ./cmd/do/do.go ./cmd/do/gapic.go ./cmd /do/init.go ./cmd/do/run.go ./cmd/do/upload.go run gapic
    [0/1] Re-running CMake...
    -- Configuring done
    -- Generating done
    -- Build files have been written to: D:/Download/gapid/release
    [1/308] Apic on C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/vulkan/vulkan.api with c c_vulkan_api_exports.cpp.tmpl
    FAILED: api/cc_vulkan_api_exports.cpp.tmpl.tag C:/Users/jia.wanj/go/src/github.com/google/gapid/gapii/ cc/vulkan_exports.cpp
    cmd.exe /C "cd /D C:\Users\jia.wanj\go\src\github.com\google\gapid\gapii\cc && D:\Download\gapid\relea se\bin\apic.exe template --cmake D:/Download/gapid/release/api/cc_vulkan_api_exports.cpp.tmpl.deps.cma ke --dir C:/Users/jia.wanj/go/src/github.com/google/gapid/gapii/cc C:/Users/jia.wanj/go/src/github.com /google/gapid/gapis/gfxapi/vulkan/vulkan.api C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gf xapi/vulkan/templates/api_exports.cpp.tmpl --gopath C:/Users/jia.wanj/go/src/github.com/google/gapid/t hird_party C:/Users/jia.wanj/go && "C:\Program Files (x86)\CMake\bin\cmake.exe" -E touch D:/Download/g apid/release/api/cc_vulkan_api_exports.cpp.tmpl.tag"
    Critical:Main failed
    ⦕C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/vulkan/templates/api_exports.cpp.tm pl: C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/vulkan/templates/api_exports.cpp.tmp l: template: C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/vulkan/templates/api_export s.cpp.tmpl:42:61: executing "C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/vulkan/temp lates/api_exports.cpp.tmpl" at <Write $filename>: error calling Write: open C:\Users\jia.wanj\go\src\g ithub.com\google\gapid\gapii\cc\vulkan_

_exports.cpp: The filename, directory name, or volume label syntax is incorrect.

Run ⇒ run.go@129
main ⇒ main.go@24
[2/308] Apic on C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/core/core.api with cc_co re_api_spy.h.tmpl
[3/308] Apic on C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/vulkan/vulkan.api with v ulkan_pb_vulkan_api.proto.tmpl
[4/308] Apic on C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/core/core.api with cc_co re_api_imports.h.tmpl
[5/308] Linking Go executable bin\simplecalc.exe
[6/308] Codergen for gapid
FAILED: C:/Users/jia.wanj/go/src/github.com/google/gapid/signatures.txt C:/Users/jia.wanj/go/src/githu b.com/google/gapid/gapil/snippets/snippets_binary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/ framework/binary/any/any_binary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/framework/binary/t est/test_binary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/atom/atom_binary.go C:/Users /jia.wanj/go/src/github.com/google/gapid/gapis/atom/test/test_binary.go C:/Users/jia.wanj/go/src/githu b.com/google/gapid/gapis/gfxapi/core/core_binary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/g apis/gfxapi/gles/gles_binary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/test/tes t_binary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/test/gfxapi_test_import/gfxa pi_test_import_binary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/gfxapi/vulkan/vulkan_b inary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/gapis/memory/memory_binary.go C:/Users/jia.w anj/go/src/github.com/google/gapid/gapis/replay/protocol/protocol_binary.go C:/Users/jia.wanj/go/src/g ithub.com/google/gapid/gapis/resolve/resolve_binary_test.go C:/Users/jia.wanj/go/src/github.com/google /gapid/test/integration/replay/gles/gles_binary.go C:/Users/jia.wanj/go/src/github.com/google/gapid/co re/cc/coder/atom.cpp C:/Users/jia.wanj/go/src/github.com/google/gapid/core/cc/coder/atom.h C:/Users/ji a.wanj/go/src/github.com/google/gapid/core/cc/coder/core.cpp C:/Users/jia.wanj/go/src/github.com/googl e/gapid/core/cc/coder/core.h C:/Users/jia.wanj/go/src/github.com/google/gapid/core/cc/coder/gles.cpp C :/Users/jia.wanj/go/src/github.com/google/gapid/core/cc/coder/gles.h C:/Users/jia.wanj/go/src/github.c om/google/gapid/core/cc/coder/memory.cpp C:/Users/jia.wanj/go/src/github.com/google/gapid/core/cc/code r/memory.h C:/Users/jia.wanj/go/src/github.com/google/gapid/core/cc/coder/vulkan.cpp C:/Users/jia.wanj /go/src/github.com/google/gapid/core/cc/coder/vulkan.h
cmd.exe /C "cd /D D:\Download\gapid\release && D:\Download\gapid\release\bin\codergen.exe --gopath C:/ Users/jia.wanj/go/src/github.com/google/gapid/third_party;C:/Users/jia.wanj/go --signatures C:/Users/j ia.wanj/go/src/github.com/google/gapid/signatures.txt --go -cpp C:/Users/jia.wanj/go/src/github.com/go ogle/gapid/core/cc/coder -java C:/Users/jia.wanj/go/src/github.com/google/gapid/gapic/src github.com/g oogle/gapid/..."
Critical:Main failed
⦕C:\Users\jia.wanj\go\src\github.com\google\gapid\gapis\gfxapi\vulkan\api.go:27:1: expected declar ation, found '.' (and 10 more errors)⦖
Run ⇒ run.go@129
main ⇒ main.go@48
ninja: build stopped: subcommand failed.
Error running D:\Program Files\ninja-win\ninja.exe [install]: ⦕exit status 1⦖:Wait
exit status 1

Commands inside a frame sometimes do not show up in the client.

I noticed this on Vulkan.

Occasionally when expanding a frame, only the first command submitted during that frame will show up in the command list.

E.g.

- 1806: Frame 70 (10 Commands)
    - 1806: vkQueueWaitIdle()
- 1816: Frame 71 (10 Commands)
    - 1816: vkQueueWaitIdle()
- 1826: Frame 72 (10 Commands)
    - 1826: vkQueueWaitIdle()
    - 1827: vkMapMemory()
    - 1828: vkUnmapMemory()
    ...
    ...
    ...

Where all frames should have the contents of 1826.

I have already checked, and there is only one context in the application.

Build steps do not work

get the following error at 'do build' time:

-- Build files have been written to: C:/dev/gapid/release
ninja: error: 'C:/dev/gocode/src/github.com/google/gapid/cc-memory-tracker', needed by 'aarch64/src/aarch64-stamp/aarch64-gapii', missing and no known rule to make it
Error running C:\dev\Ninja\ninja.exe [install]: ⦕exit status 1⦖:Wait
exit status 1

Add Closure Support to the API language

This will let us handle the mutations that are done by commands in command-buffers in a clear way.

Otherwise we will effectively have to mimic closure support with either externs, which is what we are doing now temporarily, or a combination of structs and switch statements and much un-needed complexity.

Improve build times

Due to the amount of code generation the API files produce, our clean-build times are typically around the 10 minutes mark, and incremental builds are often 4-6 minutes (YMMV).

As much as I like office sword fighting, we should work hard to reduce these for everybody's sake.

Client: Changing a field collapses all views

When changing a parameter, we should transparently change captures while keeping all the view states the same.
We don't want to have to re-find the context, re-expand the tree view, re-select the textures etc.

Tidy the GLES state block

Add a global for CurrentState so we don't have to always go though the map!(ThreadID, ref!Context) Contexts global at the root of the state tree (ensure you update all Link() logic in gles/links.go).

Find a way to hide GLXContexts, WGLContexts, CGLContexts, EGLContexts.

Try navigating the state block in GAPIC, make changes to the API file to try and make state navigation not suck.

Try harder to prevent people git cloning the project.

We've had a couple of people ask why the build fails.

Turns out they git cloned the project instead of using go get. go get forces the developer to checkout into ../github.com/google/gapid/ which is expected by do.

Let's:

  • Make it more obvious in BUILDING.md
  • Try detecting a bad checkout and giving a sensible error message from do

GAPIC can not find adb.exe on Windows

It looks like GAPIC does not set ANDROID_HOME for gapis to use while tracing. This means that it cannot find adb.exe and no devices are recognized.

ANDROID_HOME is not set by the SDK installer, so we should probably have an option in gapic somewhere to set it.

time.Tick should be time.After

From the godoc:

// Tick is a convenience wrapper for NewTicker providing access to the ticking
// channel only. While Tick is useful for clients that have no need to shut down
// the Ticker, be aware that without a way to shut it down the underlying
// Ticker cannot be recovered by the garbage collector; it "leaks".
// Unlike NewTicker, Tick will return nil if d <= 0.

and:

// After waits for the duration to elapse and then sends the current time
// on the returned channel.
// It is equivalent to NewTimer(d).C.
// The underlying Timer is not recovered by the garbage collector
// until the timer fires. If efficiency is a concern, use NewTimer
// instead and call Timer.Stop if the timer is no longer needed.

We use Tick for one shot events. This is leaking Tickers all over the place. Replace uses with After.

Windows build failures on some machines

[1/7] Performing configure step for 'llvm'
FAILED: llvm/src/llvm-stamp/llvm-configure
cmd.exe /C "cd /D C:\dev\gapid\out\release\aarch64\src\aarch64-build\llvm\src\llvm-build && c:\dev\cmake\bin\cmake.exe -CC:/dev/gapid/out/release/aarch64/src/aarch64-build/llvm/tmp/llvm-cache-Release.cmake -GNinja C:/dev/gapid/src/github.com/google/gapid/third_party/llvm && c:\dev\cmake\bin\cmake.exe -E touch C:/dev/gapid/out/release/aarch64/src/aarch64-build/llvm/src/llvm-stamp/llvm-configure"
loading initial cache file C:/dev/gapid/out/release/aarch64/src/aarch64-build/llvm/tmp/llvm-cache-Release.cmake
CMake Error at cmake/modules/GetHostTriple.cmake:24 (message):
  Failed to execute
  C:/dev/gapid/src/github.com/google/gapid/third_party/llvm/cmake/config.guess
Call Stack (most recent call first):
  cmake/config-ix.cmake:344 (get_host_triple)
  CMakeLists.txt:582 (include)

libwinpthread-1.dll is required to run gapis.exe / gapit.exe

Something in our CMake rules is pulling in pthreads when we compile our go executables (and possibly c++ executables).

Because of this, the executables to not run unless libwinpthread-1.dll can be found on PATH.

The work around for now is to have msys64\mingw64\bin on your PATH.

GAPID Packaging

Package Layout

Windows

The installer allows the user to install the package anywhere, suggesting %PROGRAMFILES%\gapid. The installer will install GAPID into the selected folder with the following structure. Along with an installer, we provide a .zip file that can be extracted anywhere. Both will follow the same structure:

<install root or gapid inside .zip>\
├─ jre\...
├─ lib\
│  ├─ GraphicsSpyLayer.json
│  ├─ gapic.jar
│  ├─ libgapii.dll
│  ├─ libVkLayer_VirtualSwapchain.dll
│  └─ VirtualSwapchainLayer.json
├─ strings\en-us.stb
├─ build.properties
├─ gapid-arm64-v8a.apk
├─ gapid-armeabi-v7a.apk
├─ gapid-x86.apk
├─ gapid.bat (shell script to launch the client)
├─ gapir.exe
├─ gapis.exe
├─ gapit.exe
├─ libgcc_s_seh-1.dll
├─ libstdc++-6.dll
└─ libwinpthread-1.dll

MacOS

The built package consists of a .dmg disk image containing the GAPID.app application and link to /Applications to make "installing" easy. The GAPID.app can be run from anywhere and follows the following structure:

GAPID.app/
└─ Contents/
   ├─ MacOS/
   │  └─ <see below>
   ├─ Resources/GAPID.icns
   └─ Info.plist

Along with the .dmg disk image, we also provide a .zip file with the same content's as inside the Contents/MacOS/ folder of the .app package:

<Content/MacOS inside .app or gapid inside .zip>/
├─ jre/...
├─ lib/
│  ├─ gapic.jar
│  └─ libgapii.dylib
├─ strings/en-us.stb
├─ build.properties
├─ gapid-arm64-v8a.apk
├─ gapid-armeabi-v7a.apk
├─ gapid-x86.apk
├─ gapid (shell script to launch the client)
├─ gapir
├─ gapis
└─ gapit

When running the .app application, the gapid script is invoked. When using the .zip file, the only way to run the application is via the terminal by running the gapid script or the executables.

Linux

We provide a Debian .deb package and a .zip file with the same contents. The package installs into /opt/gapid, while archives can be expanded anywhere. The Debian package depends on openjdk-8-jre and neither it nor the .zip archives contain the JRE. The launcher script looks for java first on the $PATH, then $JAVA_HOME and finally the hard-coded /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java, which the openjdk-8-jre package provides.

/{opt|wherever}/gapid/
├─ lib/
│  ├─ gapic.jar
│  ├─ GraphicsSpyLayer.json
│  ├─ libgapii.so
│  ├─ libVkLayer_VirtualSwapchain.so
│  └─ VirtualSwapchainLayer.json
├─ strings/en-us.stb
├─ build.properties
├─ gapid-arm64-v8a.apk
├─ gapid-armeabi-v7a.apk
├─ gapid-x86.apk
├─ gapid (shell script to launch the client)
├─ gapir
├─ gapis
└─ gapit

Always Fail on Capture Trace: -> getClassLoader() -> <gapit> Main failed

Dear GAPID,

I am trying Capture Trace using GAPIC, on Windows 7 system Android 7.0, NDK_r13, two different models with all various possible applications I could find.

Whenever I try on Capture Trace, gapit will always fail at the step of "Main", and never pass the line below:

Waiting for connection to localhost:50559...

And inside the logcat, not one single GL function could be intercepted:

03-28 05:43:16.597 7424 7424 E GAPID : installer.cpp:171 : Couldn't intercept function glVertexPointerBounds at 0x7532c9b8e4

Then a messagebox will fleet on the phone screen for 1s showing that the application (e.x. "Clock") is waiting for the debugger to attach; then the application will crash along with the failure of Capture Trace.

Here below shows the detailed info about how I failed during Capture Trace for every applications:

21:47:01.108 I: [start] Waiting for ApplicationLoaders.getClassLoader() (abi: arm64-v8a, activity: com.android.deskclock.AlarmsMainActivity, jdwpPort: 50584, on: com.android.deskclock, pid: 7913, port: 50559)
21:47:03.204 I: Creating file 'D:\Downloads\GoPath\ReleaseGAPIC_TraceOutput\deskclock_20170327_1446.gfxtrace'
21:47:03.208 I: Waiting for connection to localhost:50559...
Press enter to stop capturing...
21:47:03.378 F: Main failed
Error: Header send failed
Cause: write tcp 127.0.0.1:50588->127.0.0.1:50559: wsasend: An established connection was aborted by the software in your host machine.
Tracing failed:
java.lang.Exception: gapit has exited
at com.google.gapid.server.ChildProcess.runProcess(ChildProcess.java:95)
at com.google.gapid.server.ChildProcess$1.run(ChildProcess.java:66)

Could anyone help me at least pass getClassLoader() function successfully?

Thank you all in advance!
Appreciate it!

./do build will build all android ABI builds at the same time

Since this is a ninja build it will run all sub-builds concurrently, which all run ninja. These each spawn their own concurrent children. This can cause an enormous amount of memory to be used, since 3x the number of compiles/links happen than is normal. In the worst case this will cause paging and eventual build failure on machines with insufficient ram/swap space.

Improve panic logging

Proposal:

  • Add a flag to the GetLogStream that disables the stdout & stderr log.Handler for the duration of the call.
  • In GAPIC log all stdout & stderr lines to the standard logger.
  • If the GAPIS process terminates unexpectedly, we can use the last N log entries in any bug report.

This avoids all the nasty string comparison logic and unifies the log handling.

Vulkan: Attachments are not found in a correct way

We should not iterating through the subpass'es in a renderpass and use the first color or depth attachment found in the subpass'es.

The correct way is to recording the last subpass ever used along with calls to vkCmdNextPass and use the last used subpass's color attachment and depth attachment as the rendering target.

Fail to build: auto generated header file missing -> gradle fail -> Process returned error

Dear all,

I am trying to build GAPID, tried 4 different machines, 3 Windows7 and 1 Windows10, and all failed.

At first, the auto-generated header files are missing on Windows7 machines.
Laster, I successfully generated those missing header files and reference_embed.so on Windows10, and copied those files to Windows7 machines to continue building.

And then 2 of Windows7 machine come across the gradle problem (as copied below in detail).
One Windows7 machine successfully builds out, however, is not able to run those APIs.

Here below are the cmd output data, could anyone help me out?
Thank you in advance very much!


Auto generated header file missing:
on Windows 7, JDK 1.8_121, Android_SDK, NDK_r13,
Headers failed to find (or, failed to auto generate):
gles_types.h
vulkan_types.h
core_imports.h
gles_imports.h
vulkan_imports.h
core_spy.h
gles_spy.h
vulkan_spy.h

gles_gfx_api.h
vulkan_gfx_api.h

reference_embed.go (in the replay -> gles folder )


After successfully generated those files above in Windows10 system, and migrate those files into Windows7, here below comes the gradle problem:

FAILED: aarch64/gapid-apk/app/build/outputs/apk/app-debug.apk
..
..GoPath/src/github.com/google/gapid/cmake/Modules/RunGradle.cmake"
Downloading https://services.gradle.org/distributions/gradle-2.4-all.zip
..
Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Connection timed out: connect
..
... 3 more
CMake Error at
/..GoPath/src/github.com/google/gapid/cmake/Modules/RunGradle.cmake:32 (message):
1
ninja: build stopped: subcommand failed.
Error running D:\Senon\Download\ninja.exe [-v -j1 install]: ⦕exit status 1⦖:Wait


There happens to be one machine build all objects successfully, however, it appears
Process returned error

-- Configuring done
-- Generating done
-- Build files have been written to: D:/Downloads/GoPath/Release_Output/release
[0/1] cmd.exe /C "cd /D D:\Downloads\GoPath\Release_Output\release && "C:\Program Files\CMake\bin\cmake.exe" -P cmake_install.cmake"
-- Install configuration: "Release"
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/filehash.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/gapir.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/gapis.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/gapit.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/gfxtrace.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/robot.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/stash.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/libVkLayer_VirtualSwapchain.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/libVkLayer_VirtualSwapchain.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/libVkLayer_VirtualSwapchain.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/VirtualSwapchainLayer.json
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/libVkLayer_VirtualSwapchain.dll.a
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/libVkLayer_VirtualSwapchain.dll
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/libgapii.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/libgapii.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/libgapii.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/libgapii.dll.a
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/libgapii.dll
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/libinterceptor.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/libinterceptor.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/libinterceptor.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/libVkLayerGraphicsSpy.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/libVkLayerGraphicsSpy.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/libVkLayerGraphicsSpy.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/strings/en-us.stb
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/gapid.apk
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/gapid.apk
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/gapid.apk
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/./source.properties


do run gapis
ninja: no work to do.
Error running D:\Downloads\SenAndroidStudio\GoPath\Release_Output\release\bin\gapis []: Process returned error
Cause: exit status 3221225595


do run gapic
[0/1] Install the project...
-- Install configuration: "Release"
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/filehash.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/gapir.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/gapis.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/gapit.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/gfxtrace.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/robot.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/stash.exe
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/libVkLayer_VirtualSwapchain.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/libVkLayer_VirtualSwapchain.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/libVkLayer_VirtualSwapchain.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/VirtualSwapchainLayer.json
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/libVkLayer_VirtualSwapchain.dll.a
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/libVkLayer_VirtualSwapchain.dll
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/libgapii.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/libgapii.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/libgapii.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/libgapii.dll.a
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/windows/x86_64/libgapii.dll
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/libinterceptor.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/libinterceptor.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/libinterceptor.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/libVkLayerGraphicsSpy.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/libVkLayerGraphicsSpy.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/libVkLayerGraphicsSpy.so
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/strings/en-us.stb
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/arm64-v8a/gapid.apk
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/armeabi-v7a/gapid.apk
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/android/x86/gapid.apk
-- Up-to-date: D:/Downloads/GoPath/Release_Output/release/pkg/./source.properties
I20170323-160311857[main][server.GapiPaths.checkForTools] Looking for GAPID in D:\Downloads\GoPath\Release_Output\release\pkg -> D:\Downloads\GoPath\Release_Output\release\pkg\windows\x86_64\gapis.exe
I20170323-160311892[server.ChildProcess-gapis][server.ChildProcess.runProcess] Starting gapis as [D:\Downloads\GoPath\Release_Output\release\pkg\windows\x86_64\gapis.exe, -log-file, C:\Users\SWX4451\AppData\Local\Temp\gapis.log, -log-level, Info, -gapir-args, --log C:\Users\SWX4451\AppData\Local\Temp\gapir.log --log-level I, --strings, D:\Downloads\GoPath\Release_Output\release\pkg\strings, --gapis-auth-token, 128c0fEp]
W20170323-160311944[server.ChildProcess-gapis][server.ChildProcess.onExit] The gapis process exited with a non-zero exit value: -1073741701
I20170323-160311945[server.ChildProcess-gapis][server.ChildProcess.shutdown] Shutting down gapis
W20170323-160311945[main][server.GapisProcess.connect] Failed while waiting for gapis
W20170323-160311945[main][server.GapisProcess.connect] java.util.concurrent.ExecutionException: java.lang.Exception: gapis has exited
W20170323-160311945[main][server.GapisProcess.connect] at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:500)
W20170323-160311945[main][server.GapisProcess.connect] at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:401)
W20170323-160311945[main][server.GapisProcess.connect] at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:83)
W20170323-160311945[main][server.GapisProcess.connect] at com.google.gapid.server.GapisProcess.connect(GapisProcess.java:135)
W20170323-160311945[main][server.GapisProcess.connect] at com.google.gapid.Server.createConnection(Server.java:123)
W20170323-160311945[main][server.GapisProcess.connect] at com.google.gapid.Server.connectToServer(Server.java:102)
W20170323-160311945[main][server.GapisProcess.connect] at com.google.gapid.Server.connect(Server.java:74)
W20170323-160311945[main][server.GapisProcess.connect] at com.google.gapid.Main.main(Main.java:59)
W20170323-160311945[main][server.GapisProcess.connect] Caused by: java.lang.Exception: gapis has exited
W20170323-160311945[main][server.GapisProcess.connect] at com.google.gapid.server.ChildProcess.runProcess(ChildProcess.java:95)
W20170323-160311945[main][server.GapisProcess.connect] at com.google.gapid.server.ChildProcess$1.run(ChildProcess.java:66)
Error running C:\Program Files\Java\jdk1.8.0_121\bin\java.exe [-jar D:\Downloads\GoPath\Release_Output\release\java\gapic-windows.jar -gapid D:\Downloads\GoPath\Release_Output\release\pkg]: Process returned error
Cause: exit status 1


do run gapii
ninja: no work to do.
Error running D:\Downloads\SenAndroidStudio\GoPath\Release_Output\release\bin\gapii []: Failed to start process
Cause: exec: "D:\Downloads\SenAndroidStudio\GoPath\Release_Output\release\bin\gapii": file does not exist


Could anyone help me build this GAPID out and run successfully?
Thank you very much!

GAPIS should terminate if the client crashes

If GAPIC crashes it can leave behind orphaned GAPIS processes.

This could be fixed by adopting GAPIS <-> GAPIR heartbeat logic to shutdown GAPIS if it hasn't heard from the client in X seconds.

Root README.md requires screenshots

Nobody likes walls of text.

We need to get approval of a developer to use their shiny game / app in the screenshots.

If you think that's you, please ping me.

gles.DeadCodeElimination shouldn't pretend to be a Transformer.

func (t *DeadCodeElimination) Transform(ctx context.Context, id atom.ID, a atom.Atom, out transform.Writer) {
	panic(fmt.Errorf("This transform does not accept input atoms"))
}

ewwwwwww.

If the DCE is always the source of atoms, make it write to the Transforms.

Set up Geometry View for Vulkan.

Currently we do not export any geometry from the Vulkan back-end. We should be able to examine the pipeline state for the vertex stream.

Remove the linear scanning in the memory tracker performance

When a new dirty page is to be added to the memory tracker, the tracker now scan through all the recorded dirty pages first, which spends O(n) time. This can be improved by implementing a simplified hash map (linked list + static sized array).

Don't use global maps for concurrent storage.

gapis: fatal error: concurrent map read and map write
gapis:
gapis: goroutine 9006 [running]:
gapis: runtime.throw(0x5e0c8b0, 0x21)
gapis: /usr/local/go/src/runtime/panic.go:566 +0x95 fp=0xc47709caa0 sp=0xc47709ca80
gapis: runtime.mapaccess1_fast32(0x5a16080, 0xc420242840, 0x50, 0xb90)
gapis: /usr/local/go/src/runtime/hashmap_fast.go:21 +0x1a4 fp=0xc47709cac8 sp=0xc47709caa0
gapis: github.com/google/gapid/gapis/gfxapi/gles.newUnusedID(0x50, 0xc47709cb58, 0xc4638bbe10)
gapis: /Users/bclayton/src/go/src/github.com/google/gapid/gapis/gfxapi/gles/read_framebuffer.go:199 +0x6c fp=0xc47709cb20 sp=0xc47709cac8
gapis: github.com/google/gapid/gapis/gfxapi/gles.(*tweaker).glCreateProgram(0xc428d3cb90, 0x4cecba7)
gapis: /Users/bclayton/src/go/src/github.com/google/gapid/gapis/gfxapi/gles/tweaker.go:239 +0x4d fp=0xc47709cb78 sp=0xc47709cb20
gapis: github.com/google/gapid/gapis/gfxapi/gles.(*tweaker).makeProgram(0xc428d3cb90, 0x5e3d599, 0xbe, 0x5e3dd32, 0x100, 0xc4551f2b40)
gapis: /Users/bclayton/src/go/src/github.com/google/gapid/gapis/gfxapi/gles/tweaker.go:247 +0x2f fp=0xc47709cbc8 sp=0xc47709cb78
gapis: github.com/google/gapid/gapis/gfxapi/gles.drawUndefinedFramebuffer(0x7115540, 0xc4638bbe10, 0x70ff2c0, 0xc42505a8e0, 0x7145920, 0xc47666d960, 0xc453fb3a00, 0x70a07a0, 0xc425210900, 0xc429248320, ...)
gapis: /Users/bclayton/src/go/src/github.com/google/gapid/gapis/gfxapi/gles/undefined_framebuffer.go:88 +0x197 fp=0xc47709cd50 sp=0xc47709cbc8
gapis: github.com/google/gapid/gapis/gfxapi/gles.undefinedFramebuffer.func1(0x7115540, 0xc4638bbe10, 0x9a95, 0x70ff2c0, 0xc42505a8e0, 0x70a07a0, 0xc425210900)
gapis: /Users/bclayton/src/go/src/github.com/google/gapid/gapis/gfxapi/gles/undefined_framebuffer.go:44 +0x2c6 fp=0xc47709ce30 sp=0xc47709cd50
gapis: github.com/google/gapid/gapis/atom/transform.transform.Transform(0x5dd9f83, 0x10, 0xc4551f2a60, 0x7115540, 0xc4638bbe10, 0x9a95, 0x70ff2c0, 0xc42505a8e0, 0x70a07a0, 0xc425210900)
gapis: /Users/bclayton/src/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:69 +0x75 fp=0xc47709ce78 sp=0xc47709ce30
gapis: github.com/google/gapid/gapis/atom/transform.(*transform).Transform(0xc4551f2a80, 0x7115540, 0xc4638bbe10, 0x9a95, 0x70ff2c0, 0xc42505a8e0, 0x70a07a0, 0xc425210900)
gapis: :10 +0xb6 fp=0xc47709ced8 sp=0xc47709ce78
gapis: github.com/google/gapid/gapis/atom/transform.TransformWriter.MutateAndWrite(0xc47666d960, 0x70a07e0, 0xc4551f2a80, 0x70a07a0, 0xc425210900, 0x7115540, 0xc4638bbe10, 0x9a95, 0x70ff2c0, 0xc42505a8e0)
gapis: /Users/bclayton/src/go/src/github.com/google/gapid/gapis/atom/transform/transforms.go:92 +0x83 fp=0xc47709cf28 sp=0xc47709ced8
gapis: github.com/google/gapid/gapis/atom/transform.(*TransformWriter).MutateAndWrite(0xc425210930, 0x7115540, 0xc4638bbe10, 0x9a95, 0x70ff2c0, 0xc42505a8e0)

Internal linker error on windows

[196/205] Linking Go executable test\test-gapis-gfxapi-gles.exe
FAILED: test/test-gapis-gfxapi-gles.exe
cmd.exe /C "cd . && "c:/dev/c make/bin/cmake.exe" -DGO_ENV=D:/gapid/release/go/goenv.cmake -DBUILDBOT=OFF -DGO_BUILD=test\test-gapis-gfxapi-gles.exe -static -DGO_PACKAGE=github.com/google/gapid/gapis/gfxapi/gles -P D:/src/github.com/google/gapid/cmake/Modules/GoCompile.cmake && cmd.exe /C "cd /D D:\src\github.com\google\gapid\gapis\gfxapi\gles && "c:\dev\c make\bin\cmake.exe" -DTESTER=D:/gapid/release/test/test-gapis-gfxapi-gles.exe -DGO_PATH="D:/src/github.com/google/gapid/third_party;D:/" -P D:/src/github.com/google/gapid/cmake/Modules/GoTest.cmake""
# testmain
C:\dev\golang\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
C:/dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: BFD (GNU Binutils) 2.27 assertion fail ../../binutils-2.27/bfd/cofflink.c:2339
C:/dev/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: final link failed: Bad value
collect2.exe: error: ld returned 1 exit status

I think cofflink.c:2339 is this assert.

GAPIC shows the alpha channel in the filmstrip

This can be quite jarring, since most compositors drop the alpha channel. It makes the film-strip look incorrect.

It would be good to either checkerboard the filmstrip, or even better just drop the alpha channel for the filmstrip all together.

I noticed this on windows, I am not sure if it happens elsewhere.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.