10bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// Copyright 2016 The SwiftShader Authors. All Rights Reserved. 20bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// 30bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// Licensed under the Apache License, Version 2.0 (the "License"); 40bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// you may not use this file except in compliance with the License. 50bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// You may obtain a copy of the License at 60bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// 70bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// http://www.apache.org/licenses/LICENSE-2.0 80bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// 90bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// Unless required by applicable law or agreed to in writing, software 100bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// distributed under the License is distributed on an "AS IS" BASIS, 110bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// See the License for the specific language governing permissions and 130bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens// limitations under the License. 140bac285a78df6a6d7a6b68784748b92805420ffbNicolas Capens 1527654c2509db2d7f9936815597c686d3339af480Corentin Wallez#ifndef sw_FrameBufferOSX_hpp 1627654c2509db2d7f9936815597c686d3339af480Corentin Wallez#define sw_FrameBufferOSX_hpp 1727654c2509db2d7f9936815597c686d3339af480Corentin Wallez 1827654c2509db2d7f9936815597c686d3339af480Corentin Wallez#include "Main/FrameBuffer.hpp" 1927654c2509db2d7f9936815597c686d3339af480Corentin Wallez 20cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez#import <Cocoa/Cocoa.h> 21cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez 2227654c2509db2d7f9936815597c686d3339af480Corentin Wallez@class CALayer; 2327654c2509db2d7f9936815597c686d3339af480Corentin Wallez 2427654c2509db2d7f9936815597c686d3339af480Corentin Walleznamespace sw 2527654c2509db2d7f9936815597c686d3339af480Corentin Wallez{ 2627654c2509db2d7f9936815597c686d3339af480Corentin Wallez class FrameBufferOSX : public FrameBuffer 2727654c2509db2d7f9936815597c686d3339af480Corentin Wallez { 2827654c2509db2d7f9936815597c686d3339af480Corentin Wallez public: 29cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez FrameBufferOSX(CALayer *layer, int width, int height); 30cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez ~FrameBufferOSX() override; 3127654c2509db2d7f9936815597c686d3339af480Corentin Wallez 32241f789c783201a64127b7f28fea89db18c2609cNicolas Capens void flip(sw::Surface *source) override; 33241f789c783201a64127b7f28fea89db18c2609cNicolas Capens void blit(sw::Surface *source, const Rect *sourceRect, const Rect *destRect) override; 34cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez 35cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez void *lock() override; 36cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez void unlock() override; 3727654c2509db2d7f9936815597c686d3339af480Corentin Wallez 38cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez private: 39cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez int width; 40cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez int height; 41cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez CALayer *layer; 42cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez uint8_t *buffer; 43cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez CGDataProviderRef provider; 44cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez CGColorSpaceRef colorspace; 45cd0a4575b3d3b1aa4dcaf3ae7a7a142cd9895b32Corentin Wallez CGImageRef currentImage; 4627654c2509db2d7f9936815597c686d3339af480Corentin Wallez }; 4727654c2509db2d7f9936815597c686d3339af480Corentin Wallez} 4827654c2509db2d7f9936815597c686d3339af480Corentin Wallez 4927654c2509db2d7f9936815597c686d3339af480Corentin Wallez#endif // sw_FrameBufferOSX 50