Loading graphics/composer/2.4/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -7,7 +7,9 @@ hidl_interface { enabled: true, }, srcs: [ "types.hal", "IComposer.hal", "IComposerCallback.hal", "IComposerClient.hal", ], interfaces: [ Loading graphics/composer/2.4/IComposerCallback.hal 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.graphics.composer@2.4; import @2.1::Display; import @2.1::IComposerCallback; interface IComposerCallback extends @2.1::IComposerCallback { /** * Notifies the client that a vsync event has occurred. This callback must * only be triggered when vsync is enabled for this display (through * setVsyncEnabled). * * @param display is the display which has received a vsync event * @param timestamp is the CLOCK_MONOTONIC time at which the vsync event * occurred, in nanoseconds. * @param vsyncPeriodNanos is the display vsync period in nanoseconds i.e. the next onVsync_2_4 * is expected to be called vsyncPeriodNanos nanoseconds after this call. */ oneway onVsync_2_4(Display display, int64_t timestamp, VsyncPeriodNanos vsyncPeriodNanos); }; graphics/composer/2.4/IComposerClient.hal +87 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.hardware.graphics.composer@2.4; import IComposerCallback; import @2.1::Config; import @2.1::Display; import @2.1::Error; import @2.3::IComposerClient; Loading Loading @@ -49,6 +51,32 @@ interface IComposerClient extends @2.3::IComposerClient { EXTERNAL = 1, }; /** * Constraints for changing vsync period. */ struct VsyncPeriodChangeConstraints { /** * Time in CLOCK_MONOTONIC after which the vsync period may change * (i.e., the vsync period must not change before this time). */ int64_t desiredTimeNanos; /** * If true, requires that the vsync period change must happen seamlessly without * a noticeable visual artifact. */ bool seamlessRequired; }; /** * Provides a IComposerCallback object for the device to call. * * This function must be called only once. * * @param callback is the IComposerCallback object. */ @entry registerCallback_2_4(IComposerCallback callback); /** * Provides a list of supported capabilities (as described in the * definition of DisplayCapability above). This list must not change after Loading @@ -69,4 +97,63 @@ interface IComposerClient extends @2.3::IComposerClient { * @return type is the connection type of the display. */ getDisplayConnectionType(Display display) generates (Error error, DisplayConnectionType type); /** * Provides a list of the vsync periods supported by the display in the given configuration * * @param display is the display for which the vsync periods are queried. * @param config is the display configuration for which the vsync periods are queried. * * @return error is NONE upon success. Otherwise, * BAD_DISPLAY when an invalid display handle was passed in. * BAD_CONFIG when an invalid config handle was passed in. * @return supportedVsyncPeriods is a list of supported vsync periods. */ getSupportedDisplayVsyncPeriods(Display display, Config config) generates (Error error, vec<VsyncPeriodNanos> supportedVsyncPeriods); /** * Retrieves which vsync period the display is currently using. * * If no display configuration is currently active, this function must * return BAD_CONFIG. If the vsync period is about to change due to a * setActiveConfigAndVsyncPeriod call, this function must return the current vsync period * until the change takes place. * * @param display is the display for which the vsync period is queried. * @return error is NONE upon success. Otherwise, * BAD_DISPLAY when an invalid display handle was passed in. * BAD_CONFIG when no configuration is currently active. * @return vsyncPeriodNanos is the current vsync period of the display. */ getDisplayVsyncPeriod(Display display) generates (Error error, VsyncPeriodNanos vsyncPeriodNanos); /** * Sets the active configuration and the refresh rate for this display. * If the config is the same as the current config, only the vsync period shall change. * Upon returning, the given display configuration, except vsync period, must be active and * remain so until either this function is called again or the display is disconnected. * When the display starts to refresh at the new vsync period, onVsync_2_4 callback must be * called with the new vsync period. * * @param display is the display for which the active config is set. * @param config is the new display configuration. * @param vsyncPeriodNanos is the new display vsync period. * @param vsyncPeriodChangeConstraints are the constraints required for changing vsync period. * * @return error is NONE upon success. Otherwise, * BAD_DISPLAY when an invalid display handle was passed in. * BAD_CONFIG when the configuration handle passed in is not valid * for this display. * BAD_VSYNC_PERIOD when an invalid vsync period is passed in. * SEAMLESS_NOT_POSSIBLE when seamlessRequired was true but the display cannot achieve * the vsync period change without a noticeable visual artifact. * @return newVsyncAppliedTime is the time in CLOCK_MONOTONIC when the new display will start to * refresh at the new vsync period. */ setActiveConfigAndVsyncPeriod(Display display, Config config, VsyncPeriodNanos vsyncPeriodNanos, VsyncPeriodChangeConstraints vsyncPeriodChangeConstraints) generates (Error error, int64_t newVsyncAppliedTime); }; graphics/composer/2.4/types.hal 0 → 100644 +32 −0 Original line number Diff line number Diff line /* * Copyright 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.graphics.composer@2.4; import @2.1::Error; enum Error : @2.1::Error { /** * Invalid vsync period */ BAD_VSYNC_PERIOD = 9, /** * Seamless requirements cannot be met */ SEAMLESS_NOT_POSSIBLE = 10, }; typedef uint32_t VsyncPeriodNanos; graphics/composer/2.4/utils/command-buffer/include/composer-command-buffer/2.4/ComposerCommandBuffer.h +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ namespace composer { namespace V2_4 { using android::hardware::MessageQueue; using android::hardware::graphics::composer::V2_1::Error; using android::hardware::graphics::composer::V2_4::Error; using android::hardware::graphics::composer::V2_4::IComposerClient; // This class helps build a command queue. Note that all sizes/lengths are in Loading Loading
graphics/composer/2.4/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -7,7 +7,9 @@ hidl_interface { enabled: true, }, srcs: [ "types.hal", "IComposer.hal", "IComposerCallback.hal", "IComposerClient.hal", ], interfaces: [ Loading
graphics/composer/2.4/IComposerCallback.hal 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.graphics.composer@2.4; import @2.1::Display; import @2.1::IComposerCallback; interface IComposerCallback extends @2.1::IComposerCallback { /** * Notifies the client that a vsync event has occurred. This callback must * only be triggered when vsync is enabled for this display (through * setVsyncEnabled). * * @param display is the display which has received a vsync event * @param timestamp is the CLOCK_MONOTONIC time at which the vsync event * occurred, in nanoseconds. * @param vsyncPeriodNanos is the display vsync period in nanoseconds i.e. the next onVsync_2_4 * is expected to be called vsyncPeriodNanos nanoseconds after this call. */ oneway onVsync_2_4(Display display, int64_t timestamp, VsyncPeriodNanos vsyncPeriodNanos); };
graphics/composer/2.4/IComposerClient.hal +87 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.hardware.graphics.composer@2.4; import IComposerCallback; import @2.1::Config; import @2.1::Display; import @2.1::Error; import @2.3::IComposerClient; Loading Loading @@ -49,6 +51,32 @@ interface IComposerClient extends @2.3::IComposerClient { EXTERNAL = 1, }; /** * Constraints for changing vsync period. */ struct VsyncPeriodChangeConstraints { /** * Time in CLOCK_MONOTONIC after which the vsync period may change * (i.e., the vsync period must not change before this time). */ int64_t desiredTimeNanos; /** * If true, requires that the vsync period change must happen seamlessly without * a noticeable visual artifact. */ bool seamlessRequired; }; /** * Provides a IComposerCallback object for the device to call. * * This function must be called only once. * * @param callback is the IComposerCallback object. */ @entry registerCallback_2_4(IComposerCallback callback); /** * Provides a list of supported capabilities (as described in the * definition of DisplayCapability above). This list must not change after Loading @@ -69,4 +97,63 @@ interface IComposerClient extends @2.3::IComposerClient { * @return type is the connection type of the display. */ getDisplayConnectionType(Display display) generates (Error error, DisplayConnectionType type); /** * Provides a list of the vsync periods supported by the display in the given configuration * * @param display is the display for which the vsync periods are queried. * @param config is the display configuration for which the vsync periods are queried. * * @return error is NONE upon success. Otherwise, * BAD_DISPLAY when an invalid display handle was passed in. * BAD_CONFIG when an invalid config handle was passed in. * @return supportedVsyncPeriods is a list of supported vsync periods. */ getSupportedDisplayVsyncPeriods(Display display, Config config) generates (Error error, vec<VsyncPeriodNanos> supportedVsyncPeriods); /** * Retrieves which vsync period the display is currently using. * * If no display configuration is currently active, this function must * return BAD_CONFIG. If the vsync period is about to change due to a * setActiveConfigAndVsyncPeriod call, this function must return the current vsync period * until the change takes place. * * @param display is the display for which the vsync period is queried. * @return error is NONE upon success. Otherwise, * BAD_DISPLAY when an invalid display handle was passed in. * BAD_CONFIG when no configuration is currently active. * @return vsyncPeriodNanos is the current vsync period of the display. */ getDisplayVsyncPeriod(Display display) generates (Error error, VsyncPeriodNanos vsyncPeriodNanos); /** * Sets the active configuration and the refresh rate for this display. * If the config is the same as the current config, only the vsync period shall change. * Upon returning, the given display configuration, except vsync period, must be active and * remain so until either this function is called again or the display is disconnected. * When the display starts to refresh at the new vsync period, onVsync_2_4 callback must be * called with the new vsync period. * * @param display is the display for which the active config is set. * @param config is the new display configuration. * @param vsyncPeriodNanos is the new display vsync period. * @param vsyncPeriodChangeConstraints are the constraints required for changing vsync period. * * @return error is NONE upon success. Otherwise, * BAD_DISPLAY when an invalid display handle was passed in. * BAD_CONFIG when the configuration handle passed in is not valid * for this display. * BAD_VSYNC_PERIOD when an invalid vsync period is passed in. * SEAMLESS_NOT_POSSIBLE when seamlessRequired was true but the display cannot achieve * the vsync period change without a noticeable visual artifact. * @return newVsyncAppliedTime is the time in CLOCK_MONOTONIC when the new display will start to * refresh at the new vsync period. */ setActiveConfigAndVsyncPeriod(Display display, Config config, VsyncPeriodNanos vsyncPeriodNanos, VsyncPeriodChangeConstraints vsyncPeriodChangeConstraints) generates (Error error, int64_t newVsyncAppliedTime); };
graphics/composer/2.4/types.hal 0 → 100644 +32 −0 Original line number Diff line number Diff line /* * Copyright 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.graphics.composer@2.4; import @2.1::Error; enum Error : @2.1::Error { /** * Invalid vsync period */ BAD_VSYNC_PERIOD = 9, /** * Seamless requirements cannot be met */ SEAMLESS_NOT_POSSIBLE = 10, }; typedef uint32_t VsyncPeriodNanos;
graphics/composer/2.4/utils/command-buffer/include/composer-command-buffer/2.4/ComposerCommandBuffer.h +1 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,7 @@ namespace composer { namespace V2_4 { using android::hardware::MessageQueue; using android::hardware::graphics::composer::V2_1::Error; using android::hardware::graphics::composer::V2_4::Error; using android::hardware::graphics::composer::V2_4::IComposerClient; // This class helps build a command queue. Note that all sizes/lengths are in Loading