blob: 70b757c32025ef565357173b2af84d8b223f9dfa [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();
Lingfeng Yang200c7162016-06-13 08:39:28 -070034 static void exit();
keunyoungb85b2752013-03-08 12:28:03 -080035 ~HostConnection();
36
37 GLEncoder *glEncoder();
38 GL2Encoder *gl2Encoder();
39 renderControl_encoder_context_t *rcEncoder();
Yahan Zhoub7f09082016-03-10 11:45:02 -080040 ChecksumCalculator *checksumHelper() { return &m_checksumHelper; }
keunyoungb85b2752013-03-08 12:28:03 -080041
42 void flush() {
43 if (m_stream) {
44 m_stream->flush();
45 }
46 }
47
Lingfeng Yang200c7162016-06-13 08:39:28 -070048 void setGrallocOnly(bool gralloc_only) {
49 m_grallocOnly = gralloc_only;
50 }
51
52 bool isGrallocOnly() const { return m_grallocOnly; }
53
keunyoungb85b2752013-03-08 12:28:03 -080054private:
55 HostConnection();
56 static gl_client_context_t *s_getGLContext();
57 static gl2_client_context_t *s_getGL2Context();
Lingfeng Yang18835352016-05-23 12:16:04 -070058
59 std::string queryGLExtensions(renderControl_encoder_context_t *rcEnc);
Yahan Zhoub7f09082016-03-10 11:45:02 -080060 // setProtocol initilizes GL communication protocol for checksums
61 // should be called when m_rcEnc is created
62 void setChecksumHelper(renderControl_encoder_context_t *rcEnc);
keunyoungb85b2752013-03-08 12:28:03 -080063
64private:
65 IOStream *m_stream;
66 GLEncoder *m_glEnc;
67 GL2Encoder *m_gl2Enc;
68 renderControl_encoder_context_t *m_rcEnc;
Yahan Zhoub7f09082016-03-10 11:45:02 -080069 ChecksumCalculator m_checksumHelper;
Lingfeng Yang200c7162016-06-13 08:39:28 -070070 bool m_grallocOnly;
keunyoungb85b2752013-03-08 12:28:03 -080071};
72
73#endif