Dither.h revision 8aa195d7081b889f3a7b1f426cbd8556377aae5e
1211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy/* 2211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * Copyright (C) 2012 The Android Open Source Project 3211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * 4211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * you may not use this file except in compliance with the License. 6211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * You may obtain a copy of the License at 7211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * 8211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * http://www.apache.org/licenses/LICENSE-2.0 9211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * 10211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * Unless required by applicable law or agreed to in writing, software 11211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * See the License for the specific language governing permissions and 14211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * limitations under the License. 15211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy */ 16211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 17211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy#ifndef ANDROID_HWUI_DITHER_H 18211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy#define ANDROID_HWUI_DITHER_H 19211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 20b48800428906ae455c2b63acacd44e390e1fee49Romain Guy#include <GLES3/gl3.h> 21211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 22211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy#include "Program.h" 23211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 24211efea7376371ee755edd2ad03e83ef6eea464eRomain Guynamespace android { 25211efea7376371ee755edd2ad03e83ef6eea464eRomain Guynamespace uirenderer { 26211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 278aa195d7081b889f3a7b1f426cbd8556377aae5eRomain Guyclass Caches; 28b48800428906ae455c2b63acacd44e390e1fee49Romain Guy 29b48800428906ae455c2b63acacd44e390e1fee49Romain Guy// Must be a power of two 30b48800428906ae455c2b63acacd44e390e1fee49Romain Guy#define DITHER_KERNEL_SIZE 4 31b48800428906ae455c2b63acacd44e390e1fee49Romain Guy// These must not use the .0f notation as they are used from GLSL 32b48800428906ae455c2b63acacd44e390e1fee49Romain Guy#define DITHER_KERNEL_SIZE_INV (1.0 / 4.0) 33b48800428906ae455c2b63acacd44e390e1fee49Romain Guy#define DITHER_KERNEL_SIZE_INV_SQUARE (1.0 / 16.0) 34b48800428906ae455c2b63acacd44e390e1fee49Romain Guy 35211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy/** 36211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy * Handles dithering for programs. 37211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy */ 38211efea7376371ee755edd2ad03e83ef6eea464eRomain Guyclass Dither { 39211efea7376371ee755edd2ad03e83ef6eea464eRomain Guypublic: 408aa195d7081b889f3a7b1f426cbd8556377aae5eRomain Guy Dither(); 41211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 42211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy void clear(); 43211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy void setupProgram(Program* program, GLuint* textureUnit); 44211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 45211efea7376371ee755edd2ad03e83ef6eea464eRomain Guyprivate: 46211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy void bindDitherTexture(); 47211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 488aa195d7081b889f3a7b1f426cbd8556377aae5eRomain Guy Caches* mCaches; 49211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy bool mInitialized; 50211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy GLuint mDitherTexture; 51211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy}; 52211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 53211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy}; // namespace uirenderer 54211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy}; // namespace android 55211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy 56211efea7376371ee755edd2ad03e83ef6eea464eRomain Guy#endif // ANDROID_HWUI_DITHER_H 57