blob: 3896288342b5a362b9ab2c5a9580fb709f3a9fd7 [file] [log] [blame]
keunyoungb85b2752013-03-08 12:28:03 -08001/*
2* Copyright (C) 2011 The Android Open Source Project
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8* http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*/
16#ifndef __COMMON_HOST_CONNECTION_H
17#define __COMMON_HOST_CONNECTION_H
18
19#include "IOStream.h"
20#include "renderControl_enc.h"
Yahan Zhoub7f09082016-03-10 11:45:02 -080021#include "ChecksumCalculator.h"
keunyoungb85b2752013-03-08 12:28:03 -080022
Lingfeng Yang18835352016-05-23 12:16:04 -070023#include <string>
24
keunyoungb85b2752013-03-08 12:28:03 -080025class GLEncoder;
26class gl_client_context_t;
27class GL2Encoder;
28class gl2_client_context_t;
29
30class HostConnection
31{
32public:
33 static HostConnection *get();
34 ~HostConnection();
35
36 GLEncoder *glEncoder();
37 GL2Encoder *gl2Encoder();
38 renderControl_encoder_context_t *rcEncoder();
Yahan Zhoub7f09082016-03-10 11:45:02 -080039 ChecksumCalculator *checksumHelper() { return &m_checksumHelper; }
keunyoungb85b2752013-03-08 12:28:03 -080040
41 void flush() {
42 if (m_stream) {
43 m_stream->flush();
44 }
45 }
46
47private:
48 HostConnection();
49 static gl_client_context_t *s_getGLContext();
50 static gl2_client_context_t *s_getGL2Context();
Lingfeng Yang18835352016-05-23 12:16:04 -070051
52 std::string queryGLExtensions(renderControl_encoder_context_t *rcEnc);
Yahan Zhoub7f09082016-03-10 11:45:02 -080053 // setProtocol initilizes GL communication protocol for checksums
54 // should be called when m_rcEnc is created
55 void setChecksumHelper(renderControl_encoder_context_t *rcEnc);
keunyoungb85b2752013-03-08 12:28:03 -080056
57private:
58 IOStream *m_stream;
59 GLEncoder *m_glEnc;
60 GL2Encoder *m_gl2Enc;
61 renderControl_encoder_context_t *m_rcEnc;
Yahan Zhoub7f09082016-03-10 11:45:02 -080062 ChecksumCalculator m_checksumHelper;
keunyoungb85b2752013-03-08 12:28:03 -080063};
64
65#endif