FrameBufferAndroid.hpp revision 29fa07fddcd1a3da060d04651e28dccc42b53904
129fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// Copyright 2016 The SwiftShader Authors. All Rights Reserved. 229fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// 329fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// Licensed under the Apache License, Version 2.0 (the "License"); 429fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// you may not use this file except in compliance with the License. 529fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// You may obtain a copy of the License at 629fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// 729fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// http://www.apache.org/licenses/LICENSE-2.0 829fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// 929fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// Unless required by applicable law or agreed to in writing, software 1029fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// distributed under the License is distributed on an "AS IS" BASIS, 1129fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1229fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// See the License for the specific language governing permissions and 1329fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens// limitations under the License. 1429fa07fddcd1a3da060d04651e28dccc42b53904Nicolas Capens 158b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman#ifndef sw_FrameBufferAndroid_hpp 168b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman#define sw_FrameBufferAndroid_hpp 178b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman 188b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman#include "Main/FrameBuffer.hpp" 198b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman#include "Common/Debug.hpp" 208b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman 218b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman#include <hardware/gralloc.h> 228b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman#include <system/window.h> 238b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman 248b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartmannamespace sw 258b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman{ 26d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens class FrameBufferAndroid : public FrameBuffer 27d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens { 28d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens public: 29d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens FrameBufferAndroid(ANativeWindow* window, int width, int height); 308b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman 31d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens ~FrameBufferAndroid(); 328b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman 33d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens void flip(void *source, Format sourceFormat, size_t sourceStride) override {blit(source, 0, 0, sourceFormat, sourceStride);}; 34e9ee9f23e1fc604ea57408e0b4653c91135735bdNicolas Capens void blit(void *source, const Rect *sourceRect, const Rect *destRect, Format sourceFormat, size_t sourceStride) override; 35e9ee9f23e1fc604ea57408e0b4653c91135735bdNicolas Capens 36e9ee9f23e1fc604ea57408e0b4653c91135735bdNicolas Capens void *lock() override; 374b94f5d52629feaa229b97cca7b25deb4d5d7f03Nicolas Capens void unlock() override; 388b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman 39d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens bool setSwapRectangle(int l, int t, int w, int h); 408b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman 41d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens private: 42d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens ANativeWindow* nativeWindow; 43d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens ANativeWindowBuffer* buffer; 44d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens gralloc_module_t const* gralloc; 45d999309b36cb3dceadd38217b322f0e96a06b202Nicolas Capens }; 468b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman} 478b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman 488b5b5129f617dd9ba11facce28a7421ffbf1d8eaGreg Hartman#endif // sw_FrameBufferAndroid 49