1b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel/*
2b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
3b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * Not a Contribution.
4b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel *
5b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * Copyright 2015 The Android Open Source Project
6b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel *
7b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * Licensed under the Apache License, Version 2.0 (the "License");
8b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * you may not use this file except in compliance with the License.
9b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * You may obtain a copy of the License at
10b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel *
11b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel *      http://www.apache.org/licenses/LICENSE-2.0
12b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel *
13b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * Unless required by applicable law or agreed to in writing, software
14b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * distributed under the License is distributed on an "AS IS" BASIS,
15b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * See the License for the specific language governing permissions and
17b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel * limitations under the License.
18b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel */
19b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel
20b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel#ifndef __TONEMAPPER_TONEMAP_H__
21b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel#define __TONEMAPPER_TONEMAP_H__
22b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel
23b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel#define TONEMAP_FORWARD 0
24b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel#define TONEMAP_INVERSE 1
25b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel
26b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel#include "EGLImageWrapper.h"
276e71b7f95e9fdc03147c5f235060dd4ed4f23b86Thierry Strudel#include "engine.h"
28b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel
29b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudelclass Tonemapper {
30b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel private:
316e71b7f95e9fdc03147c5f235060dd4ed4f23b86Thierry Strudel  void* engineContext;
32b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel  unsigned int tonemapTexture;
33b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel  unsigned int lutXformTexture;
34b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel  unsigned int programID;
35f1fe88efc15425cee878b83f345d88068ba03cfdNaseer Ahmed  float lutXformScaleOffset[2];
36f1fe88efc15425cee878b83f345d88068ba03cfdNaseer Ahmed  float tonemapScaleOffset[2];
37b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel  EGLImageWrapper* eglImageWrapper;
38b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel  Tonemapper();
39b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel
40b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel public:
41b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel  ~Tonemapper();
42b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel  static Tonemapper *build(int type, void *colorMap, int colorMapSize, void *lutXform,
43f1fe88efc15425cee878b83f345d88068ba03cfdNaseer Ahmed                           int lutXformSize, bool isSecure);
44b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel  int blit(const void *dst, const void *src, int srcFenceFd);
45b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel};
46b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel
47b06147dd70f03970c8f3b30837a82394b814cb43Thierry Strudel#endif  //__TONEMAPPER_TONEMAP_H__
48