Loading libs/renderengine/gl/GLESRenderEngine.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -983,6 +983,8 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display, Mesh mesh(Mesh::TRIANGLE_FAN, 4, 2, 2); for (auto layer : layers) { mState.maxMasteringLuminance = layer.source.buffer.maxMasteringLuminance; mState.maxContentLuminance = layer.source.buffer.maxContentLuminance; mState.projectionMatrix = projectionMatrix * layer.geometry.positionTransform; const FloatRect bounds = layer.geometry.boundaries; Loading @@ -998,7 +1000,6 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display, bool usePremultipliedAlpha = true; bool disableTexture = true; bool isOpaque = false; if (layer.source.buffer.buffer != nullptr) { disableTexture = false; isOpaque = layer.source.buffer.isOpaque; Loading libs/renderengine/gl/Program.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,8 @@ Program::Program(const ProgramCache::Key& /*needs*/, const char* vertex, const c mSamplerLoc = glGetUniformLocation(programId, "sampler"); mColorLoc = glGetUniformLocation(programId, "color"); mDisplayMaxLuminanceLoc = glGetUniformLocation(programId, "displayMaxLuminance"); mMaxMasteringLuminanceLoc = glGetUniformLocation(programId, "maxMasteringLuminance"); mMaxContentLuminanceLoc = glGetUniformLocation(programId, "maxContentLuminance"); mInputTransformMatrixLoc = glGetUniformLocation(programId, "inputTransformMatrix"); mOutputTransformMatrixLoc = glGetUniformLocation(programId, "outputTransformMatrix"); mCornerRadiusLoc = glGetUniformLocation(programId, "cornerRadius"); Loading Loading @@ -138,6 +140,12 @@ void Program::setUniforms(const Description& desc) { if (mDisplayMaxLuminanceLoc >= 0) { glUniform1f(mDisplayMaxLuminanceLoc, desc.displayMaxLuminance); } if (mMaxMasteringLuminanceLoc >= 0) { glUniform1f(mMaxMasteringLuminanceLoc, desc.maxMasteringLuminance); } if (mMaxContentLuminanceLoc >= 0) { glUniform1f(mMaxContentLuminanceLoc, desc.maxContentLuminance); } if (mCornerRadiusLoc >= 0) { glUniform1f(mCornerRadiusLoc, desc.cornerRadius); } Loading libs/renderengine/gl/Program.h +4 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,10 @@ private: /* location of display luminance uniform */ GLint mDisplayMaxLuminanceLoc; /* location of max mastering luminance uniform */ GLint mMaxMasteringLuminanceLoc; /* location of max content luminance uniform */ GLint mMaxContentLuminanceLoc; /* location of transform matrix */ GLint mInputTransformMatrixLoc; Loading libs/renderengine/gl/ProgramCache.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -339,9 +339,9 @@ void ProgramCache::generateToneMappingProcess(Formatter& fs, const Key& needs) { default: fs << R"__SHADER__( highp vec3 ToneMap(highp vec3 color) { const float maxMasteringLumi = 1000.0; const float maxContentLumi = 1000.0; const float maxInLumi = min(maxMasteringLumi, maxContentLumi); float maxMasteringLumi = maxMasteringLuminance; float maxContentLumi = maxContentLuminance; float maxInLumi = min(maxMasteringLumi, maxContentLumi); float maxOutLumi = displayMaxLuminance; float nits = color.y; Loading Loading @@ -633,9 +633,10 @@ String8 ProgramCache::generateFragmentShader(const Key& needs) { } if (needs.hasTransformMatrix() || (needs.getInputTF() != needs.getOutputTF())) { // Currently, display maximum luminance is needed when doing tone mapping. if (needs.needsToneMapping()) { fs << "uniform float displayMaxLuminance;"; fs << "uniform float maxMasteringLuminance;"; fs << "uniform float maxContentLuminance;"; } if (needs.hasInputTransformMatrix()) { Loading libs/renderengine/include/renderengine/LayerSettings.h +2 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ struct Buffer { // HDR color-space setting for Y410. bool isY410BT2020 = false; float maxMasteringLuminance = 0.0; float maxContentLuminance = 0.0; }; // Metadata describing the layer geometry. Loading Loading
libs/renderengine/gl/GLESRenderEngine.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -983,6 +983,8 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display, Mesh mesh(Mesh::TRIANGLE_FAN, 4, 2, 2); for (auto layer : layers) { mState.maxMasteringLuminance = layer.source.buffer.maxMasteringLuminance; mState.maxContentLuminance = layer.source.buffer.maxContentLuminance; mState.projectionMatrix = projectionMatrix * layer.geometry.positionTransform; const FloatRect bounds = layer.geometry.boundaries; Loading @@ -998,7 +1000,6 @@ status_t GLESRenderEngine::drawLayers(const DisplaySettings& display, bool usePremultipliedAlpha = true; bool disableTexture = true; bool isOpaque = false; if (layer.source.buffer.buffer != nullptr) { disableTexture = false; isOpaque = layer.source.buffer.isOpaque; Loading
libs/renderengine/gl/Program.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,8 @@ Program::Program(const ProgramCache::Key& /*needs*/, const char* vertex, const c mSamplerLoc = glGetUniformLocation(programId, "sampler"); mColorLoc = glGetUniformLocation(programId, "color"); mDisplayMaxLuminanceLoc = glGetUniformLocation(programId, "displayMaxLuminance"); mMaxMasteringLuminanceLoc = glGetUniformLocation(programId, "maxMasteringLuminance"); mMaxContentLuminanceLoc = glGetUniformLocation(programId, "maxContentLuminance"); mInputTransformMatrixLoc = glGetUniformLocation(programId, "inputTransformMatrix"); mOutputTransformMatrixLoc = glGetUniformLocation(programId, "outputTransformMatrix"); mCornerRadiusLoc = glGetUniformLocation(programId, "cornerRadius"); Loading Loading @@ -138,6 +140,12 @@ void Program::setUniforms(const Description& desc) { if (mDisplayMaxLuminanceLoc >= 0) { glUniform1f(mDisplayMaxLuminanceLoc, desc.displayMaxLuminance); } if (mMaxMasteringLuminanceLoc >= 0) { glUniform1f(mMaxMasteringLuminanceLoc, desc.maxMasteringLuminance); } if (mMaxContentLuminanceLoc >= 0) { glUniform1f(mMaxContentLuminanceLoc, desc.maxContentLuminance); } if (mCornerRadiusLoc >= 0) { glUniform1f(mCornerRadiusLoc, desc.cornerRadius); } Loading
libs/renderengine/gl/Program.h +4 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,10 @@ private: /* location of display luminance uniform */ GLint mDisplayMaxLuminanceLoc; /* location of max mastering luminance uniform */ GLint mMaxMasteringLuminanceLoc; /* location of max content luminance uniform */ GLint mMaxContentLuminanceLoc; /* location of transform matrix */ GLint mInputTransformMatrixLoc; Loading
libs/renderengine/gl/ProgramCache.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -339,9 +339,9 @@ void ProgramCache::generateToneMappingProcess(Formatter& fs, const Key& needs) { default: fs << R"__SHADER__( highp vec3 ToneMap(highp vec3 color) { const float maxMasteringLumi = 1000.0; const float maxContentLumi = 1000.0; const float maxInLumi = min(maxMasteringLumi, maxContentLumi); float maxMasteringLumi = maxMasteringLuminance; float maxContentLumi = maxContentLuminance; float maxInLumi = min(maxMasteringLumi, maxContentLumi); float maxOutLumi = displayMaxLuminance; float nits = color.y; Loading Loading @@ -633,9 +633,10 @@ String8 ProgramCache::generateFragmentShader(const Key& needs) { } if (needs.hasTransformMatrix() || (needs.getInputTF() != needs.getOutputTF())) { // Currently, display maximum luminance is needed when doing tone mapping. if (needs.needsToneMapping()) { fs << "uniform float displayMaxLuminance;"; fs << "uniform float maxMasteringLuminance;"; fs << "uniform float maxContentLuminance;"; } if (needs.hasInputTransformMatrix()) { Loading
libs/renderengine/include/renderengine/LayerSettings.h +2 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ struct Buffer { // HDR color-space setting for Y410. bool isY410BT2020 = false; float maxMasteringLuminance = 0.0; float maxContentLuminance = 0.0; }; // Metadata describing the layer geometry. Loading