Home | History | Annotate | Download | only in lib
      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