• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //    http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "GrallocAndroid.hpp"
16 
17 #include <cutils/log.h>
18 
getInstance()19 GrallocModule *GrallocModule::getInstance()
20 {
21 	static GrallocModule instance;
22 	return &instance;
23 }
24 
GrallocModule()25 GrallocModule::GrallocModule()
26 {
27 	const hw_module_t *module = nullptr;
28 	hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &module);
29 
30 	m_major_version = (module->module_api_version >> 8) & 0xff;
31 	switch(m_major_version)
32 	{
33 	case 0:
34 		m_module = reinterpret_cast<const gralloc_module_t*>(module);
35 		break;
36 	case 1:
37 #ifdef HAVE_GRALLOC1
38 		gralloc1_open(module, &m_gralloc1_device);
39 		m_gralloc1_lock = (GRALLOC1_PFN_LOCK) m_gralloc1_device->getFunction(m_gralloc1_device, GRALLOC1_FUNCTION_LOCK);
40 		m_gralloc1_unlock = (GRALLOC1_PFN_UNLOCK)m_gralloc1_device->getFunction(m_gralloc1_device, GRALLOC1_FUNCTION_UNLOCK);
41 		break;
42 #endif
43 	default:
44 		ALOGE("unknown gralloc major version (%d)", m_major_version);
45 		break;
46 	}
47 }
48