diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/TraceCommandWriter.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/TraceCommandWriter.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/TraceCommandWriter.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/TraceCommandWriter.java new file mode 100644 index 000000000..dd5cd3c1e --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/ide/eclipse/gltrace/TraceCommandWriter.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ide.eclipse.gltrace; + +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Write trace control options to the trace backend. + * Currently, the number of options is limited, so all the options are packed into a + * single integer. Any changes to this protocol have to be updated on the device as well. + */ +public class TraceCommandWriter { + private static final int CMD_SIZE = 4; + + private static final int READ_FB_ON_EGLSWAP_BIT = 0; + private static final int READ_FB_ON_GLDRAW_BIT = 1; + private static final int READ_TEXTURE_DATA_ON_GLTEXIMAGE_BIT = 2; + + private final DataOutputStream mStream;; + + public TraceCommandWriter(DataOutputStream traceCommandStream) { + mStream = traceCommandStream; + } + + public void setTraceOptions(boolean readFbOnEglSwap, boolean readFbOnGlDraw, + boolean readTextureOnGlTexImage) throws IOException { + int eglSwap = readFbOnEglSwap ? (1 << READ_FB_ON_EGLSWAP_BIT) : 0; + int glDraw = readFbOnGlDraw ? (1 << READ_FB_ON_GLDRAW_BIT) : 0; + int tex = readTextureOnGlTexImage ? ( 1 << READ_TEXTURE_DATA_ON_GLTEXIMAGE_BIT) : 0; + + int cmd = eglSwap | glDraw | tex; + + mStream.writeInt(CMD_SIZE); + mStream.writeInt(cmd); + mStream.flush(); + } + + public void close() { + try { + mStream.close(); + } catch (IOException e) { + // ignore exception while closing stream + } + } +} |