1 #pragma once 2 /* 3 * Copyright (C) 2017 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #include "common/vsoc/lib/typed_region_view.h" 19 #include "common/vsoc/shm/gralloc_layout.h" 20 21 #include <string> 22 23 namespace vsoc { 24 namespace gralloc { 25 26 // Allows access to the gralloc buffer region from host side. It needs to be a 27 // different class than the one on guest side because of the required 28 // interactions with the kernel on the guest. 29 // Initially this class only returns a pointer to a buffer in memory given a 30 // region offset, which is enough for now since it's only used by the hwcomposer 31 // (which gets all other information from the guest side hwcomposer) and by the 32 // VNC server (which uses only the frame buffer and gets the information it 33 // needs from the framebuffer region). 34 class GrallocBufferRegionView 35 : vsoc::TypedRegionView< 36 GrallocBufferRegionView, 37 vsoc::layout::gralloc::GrallocBufferLayout> { 38 public: 39 GrallocBufferRegionView() = default; 40 GrallocBufferRegionView(const GrallocBufferRegionView&) = delete; 41 GrallocBufferRegionView& operator=(const GrallocBufferRegionView&) = delete; 42 43 uint8_t* OffsetToBufferPtr(uint32_t offset); 44 }; 45 46 } // namespace gralloc 47 } // namespace vsoc 48