Skip to content

Commit c28b463

Browse files
stagadishAndroid (Google) Code Review
authored andcommitted
Merge changes from topic "make-displayid-opaque" into main
* changes: SF: Remove PhysicalDisplayId::getPort() SF: Remove *DisplayId::tryCast and DisplayId::isVirtual() SF: Remove *DisplayId::tryCast usage from ScreenCaptureOutput SF: Remove *DisplayId::tryCast usage from VirtualDisplaySurface SF: Remove *DisplayId::tryCast usage from Output
2 parents 961b018 + 9897d79 commit c28b463

36 files changed

Lines changed: 357 additions & 390 deletions

libs/gui/SurfaceComposerClient.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2546,6 +2546,7 @@ status_t SurfaceComposerClient::getStaticDisplayInfo(int64_t displayId,
25462546
if (status.isOk()) {
25472547
// convert gui::StaticDisplayInfo to ui::StaticDisplayInfo
25482548
outInfo->connectionType = static_cast<ui::DisplayConnectionType>(ginfo.connectionType);
2549+
outInfo->port = ginfo.port;
25492550
outInfo->density = ginfo.density;
25502551
outInfo->secure = ginfo.secure;
25512552
outInfo->installOrientation = static_cast<ui::Rotation>(ginfo.installOrientation);

libs/gui/aidl/android/gui/StaticDisplayInfo.aidl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import android.gui.Rotation;
2323
/** @hide */
2424
parcelable StaticDisplayInfo {
2525
DisplayConnectionType connectionType = DisplayConnectionType.Internal;
26+
int port = -1;
2627
float density;
2728
boolean secure;
2829
@nullable DeviceProductInfo deviceProductInfo;

libs/ui/include/ui/DisplayId.h

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <ostream>
2121
#include <string>
2222

23+
#include <ftl/match.h>
2324
#include <ftl/optional.h>
2425

2526
namespace android {
@@ -36,7 +37,6 @@ struct DisplayId {
3637
DisplayId& operator=(const DisplayId&) = default;
3738

3839
static constexpr DisplayId fromValue(uint64_t value) { return DisplayId(value); }
39-
constexpr bool isVirtual() const { return value & FLAG_VIRTUAL; }
4040

4141
uint64_t value;
4242

@@ -66,13 +66,6 @@ struct PhysicalDisplayId : DisplayId {
6666
// TODO: b/162612135 - Remove default constructor.
6767
PhysicalDisplayId() = default;
6868

69-
static constexpr ftl::Optional<PhysicalDisplayId> tryCast(DisplayId id) {
70-
if (id.isVirtual()) {
71-
return std::nullopt;
72-
}
73-
return PhysicalDisplayId(id);
74-
}
75-
7669
// Returns a stable ID based on EDID and port information.
7770
static constexpr PhysicalDisplayId fromEdid(uint8_t port, uint16_t manufacturerId,
7871
uint32_t modelHash) {
@@ -90,8 +83,6 @@ struct PhysicalDisplayId : DisplayId {
9083
return PhysicalDisplayId(value);
9184
}
9285

93-
constexpr uint8_t getPort() const { return static_cast<uint8_t>(value); }
94-
9586
private:
9687
// Flag indicating that the ID is stable across reboots.
9788
static constexpr uint64_t FLAG_STABLE = 1ULL << 62;
@@ -112,13 +103,6 @@ struct VirtualDisplayId : DisplayId {
112103
// Flag indicating that this virtual display is backed by the GPU.
113104
static constexpr uint64_t FLAG_GPU = 1ULL << 61;
114105

115-
static constexpr std::optional<VirtualDisplayId> tryCast(DisplayId id) {
116-
if (id.isVirtual()) {
117-
return VirtualDisplayId(id);
118-
}
119-
return std::nullopt;
120-
}
121-
122106
static constexpr VirtualDisplayId fromValue(uint64_t value) {
123107
return VirtualDisplayId(SkipVirtualFlag{}, value);
124108
}
@@ -134,13 +118,6 @@ struct VirtualDisplayId : DisplayId {
134118
struct HalVirtualDisplayId : VirtualDisplayId {
135119
explicit constexpr HalVirtualDisplayId(BaseId baseId) : VirtualDisplayId(baseId) {}
136120

137-
static constexpr std::optional<HalVirtualDisplayId> tryCast(DisplayId id) {
138-
if (id.isVirtual() && !(id.value & FLAG_GPU)) {
139-
return HalVirtualDisplayId(id);
140-
}
141-
return std::nullopt;
142-
}
143-
144121
static constexpr HalVirtualDisplayId fromValue(uint64_t value) {
145122
return HalVirtualDisplayId(SkipVirtualFlag{}, value);
146123
}
@@ -152,13 +129,6 @@ struct HalVirtualDisplayId : VirtualDisplayId {
152129
struct GpuVirtualDisplayId : VirtualDisplayId {
153130
explicit constexpr GpuVirtualDisplayId(BaseId baseId) : VirtualDisplayId(FLAG_GPU | baseId) {}
154131

155-
static constexpr std::optional<GpuVirtualDisplayId> tryCast(DisplayId id) {
156-
if (id.isVirtual() && (id.value & FLAG_GPU)) {
157-
return GpuVirtualDisplayId(id);
158-
}
159-
return std::nullopt;
160-
}
161-
162132
static constexpr GpuVirtualDisplayId fromValue(uint64_t value) {
163133
return GpuVirtualDisplayId(SkipVirtualFlag{}, value);
164134
}
@@ -172,21 +142,54 @@ struct GpuVirtualDisplayId : VirtualDisplayId {
172142
struct HalDisplayId : DisplayId {
173143
constexpr HalDisplayId(HalVirtualDisplayId other) : DisplayId(other) {}
174144
constexpr HalDisplayId(PhysicalDisplayId other) : DisplayId(other) {}
175-
176-
static constexpr std::optional<HalDisplayId> tryCast(DisplayId id) {
177-
if (GpuVirtualDisplayId::tryCast(id)) {
178-
return std::nullopt;
179-
}
180-
return HalDisplayId(id);
181-
}
182-
183145
static constexpr HalDisplayId fromValue(uint64_t value) { return HalDisplayId(value); }
184146

185147
private:
186148
using DisplayId::DisplayId;
187149
explicit constexpr HalDisplayId(DisplayId other) : DisplayId(other) {}
188150
};
189151

152+
using DisplayIdVariant = std::variant<PhysicalDisplayId, GpuVirtualDisplayId, HalVirtualDisplayId>;
153+
using VirtualDisplayIdVariant = std::variant<GpuVirtualDisplayId, HalVirtualDisplayId>;
154+
155+
template <typename DisplayIdType>
156+
inline auto asDisplayIdOfType(DisplayIdVariant variant) -> ftl::Optional<DisplayIdType> {
157+
return ftl::match(
158+
variant,
159+
[](DisplayIdType id) -> ftl::Optional<DisplayIdType> { return ftl::Optional(id); },
160+
[](auto) -> ftl::Optional<DisplayIdType> { return std::nullopt; });
161+
}
162+
163+
template <typename Variant>
164+
inline auto asHalDisplayId(Variant variant) -> ftl::Optional<HalDisplayId> {
165+
return ftl::match(
166+
variant,
167+
[](GpuVirtualDisplayId) -> ftl::Optional<HalDisplayId> { return std::nullopt; },
168+
[](auto id) -> ftl::Optional<HalDisplayId> {
169+
return ftl::Optional(static_cast<HalDisplayId>(id));
170+
});
171+
}
172+
173+
inline auto asPhysicalDisplayId(DisplayIdVariant variant) -> ftl::Optional<PhysicalDisplayId> {
174+
return asDisplayIdOfType<PhysicalDisplayId>(variant);
175+
}
176+
177+
inline auto asVirtualDisplayId(DisplayIdVariant variant) -> ftl::Optional<VirtualDisplayId> {
178+
return ftl::match(
179+
variant,
180+
[](GpuVirtualDisplayId id) -> ftl::Optional<VirtualDisplayId> {
181+
return ftl::Optional(static_cast<VirtualDisplayId>(id));
182+
},
183+
[](HalVirtualDisplayId id) -> ftl::Optional<VirtualDisplayId> {
184+
return ftl::Optional(static_cast<VirtualDisplayId>(id));
185+
},
186+
[](auto) -> ftl::Optional<VirtualDisplayId> { return std::nullopt; });
187+
}
188+
189+
inline auto asDisplayId(DisplayIdVariant variant) -> DisplayId {
190+
return ftl::match(variant, [](auto id) -> DisplayId { return static_cast<DisplayId>(id); });
191+
}
192+
190193
static_assert(sizeof(DisplayId) == sizeof(uint64_t));
191194
static_assert(sizeof(HalDisplayId) == sizeof(uint64_t));
192195
static_assert(sizeof(VirtualDisplayId) == sizeof(uint64_t));

libs/ui/include/ui/StaticDisplayInfo.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ enum class DisplayConnectionType { Internal, External, ftl_last = External };
2828
// Immutable information about physical display.
2929
struct StaticDisplayInfo {
3030
DisplayConnectionType connectionType = DisplayConnectionType::Internal;
31+
uint8_t port;
3132
float density = 0.f;
3233
bool secure = false;
3334
std::optional<DeviceProductInfo> deviceProductInfo;

libs/ui/tests/Android.bp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,6 @@ cc_test {
4444
],
4545
}
4646

47-
cc_test {
48-
name: "DisplayId_test",
49-
shared_libs: ["libui"],
50-
srcs: ["DisplayId_test.cpp"],
51-
cflags: [
52-
"-Wall",
53-
"-Werror",
54-
],
55-
}
56-
5747
cc_test {
5848
name: "DisplayIdentification_test",
5949
shared_libs: ["libui"],

libs/ui/tests/DisplayId_test.cpp

Lines changed: 0 additions & 101 deletions
This file was deleted.

services/surfaceflinger/CompositionEngine/include/compositionengine/DisplayCreationArgs.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class CompositionEngine;
3434
* A parameter object for creating Display instances
3535
*/
3636
struct DisplayCreationArgs {
37-
DisplayId id;
37+
DisplayIdVariant idVariant;
3838

3939
// Size of the display in pixels
4040
ui::Size pixels = ui::kInvalidSize;
@@ -68,8 +68,8 @@ class DisplayCreationArgsBuilder {
6868
public:
6969
DisplayCreationArgs build() { return std::move(mArgs); }
7070

71-
DisplayCreationArgsBuilder& setId(DisplayId id) {
72-
mArgs.id = id;
71+
DisplayCreationArgsBuilder& setId(DisplayIdVariant idVariant) {
72+
mArgs.idVariant = idVariant;
7373
return *this;
7474
}
7575

services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ class Output {
170170

171171
// Returns the DisplayId the output represents, if it has one
172172
virtual ftl::Optional<DisplayId> getDisplayId() const = 0;
173+
virtual ftl::Optional<DisplayIdVariant> getDisplayIdVariant() const = 0;
173174

174175
// Enables (or disables) composition on this output
175176
virtual void setCompositionEnabled(bool) = 0;

services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class Display : public compositionengine::impl::Output, public virtual compositi
4646

4747
// compositionengine::Output overrides
4848
ftl::Optional<DisplayId> getDisplayId() const override;
49+
ftl::Optional<DisplayIdVariant> getDisplayIdVariant() const override;
4950
bool isValid() const override;
5051
void dump(std::string&) const override;
5152
using compositionengine::impl::Output::setReleasedLayers;
@@ -104,8 +105,11 @@ class Display : public compositionengine::impl::Output, public virtual compositi
104105
override;
105106
bool hasPictureProcessing() const override;
106107
int32_t getMaxLayerPictureProfiles() const override;
108+
bool isGpuVirtualDisplay() const {
109+
return std::holds_alternative<GpuVirtualDisplayId>(mIdVariant);
110+
}
107111

108-
DisplayId mId;
112+
DisplayIdVariant mIdVariant;
109113
bool mIsDisconnected = false;
110114
adpf::PowerAdvisor* mPowerAdvisor = nullptr;
111115
bool mHasPictureProcessing = false;

services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class Output : public virtual compositionengine::Output {
4545
// compositionengine::Output overrides
4646
bool isValid() const override;
4747
ftl::Optional<DisplayId> getDisplayId() const override;
48+
ftl::Optional<DisplayIdVariant> getDisplayIdVariant() const override;
4849
void setCompositionEnabled(bool) override;
4950
void setLayerCachingEnabled(bool) override;
5051
void setLayerCachingTexturePoolEnabled(bool) override;

0 commit comments

Comments
 (0)