Commit cda9fd5e authored by bsheedy's avatar bsheedy Committed by Commit Bot

Refactor remaining WMR wrappers

Refactors the remaining WMR wrappers that have mock implementations
(those in wmr_timestamp.h and wmr_rendering.h) in the same way as
https://crrev.com/c/1603748.

Bug: 961020
Change-Id: I0a28f981cf705c4950b660058712c9643546a784
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1611422
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Auto-Submit: Brian Sheedy <bsheedy@chromium.org>
Reviewed-by: default avatarAlexander Cooper <alcooper@chromium.org>
Cr-Commit-Position: refs/heads/master@{#659656}
parent c097ed0a
...@@ -21,4 +21,9 @@ ABI::Windows::Foundation::TimeSpan MockWMRTimestamp::PredictionAmount() const { ...@@ -21,4 +21,9 @@ ABI::Windows::Foundation::TimeSpan MockWMRTimestamp::PredictionAmount() const {
return ret; return ret;
} }
ABI::Windows::Perception::IPerceptionTimestamp* MockWMRTimestamp::GetRawPtr()
const {
return nullptr;
}
} // namespace device } // namespace device
...@@ -15,6 +15,7 @@ class MockWMRTimestamp : public WMRTimestamp { ...@@ -15,6 +15,7 @@ class MockWMRTimestamp : public WMRTimestamp {
ABI::Windows::Foundation::DateTime TargetTime() const override; ABI::Windows::Foundation::DateTime TargetTime() const override;
ABI::Windows::Foundation::TimeSpan PredictionAmount() const override; ABI::Windows::Foundation::TimeSpan PredictionAmount() const override;
ABI::Windows::Perception::IPerceptionTimestamp* GetRawPtr() const override;
private: private:
DISALLOW_COPY_AND_ASSIGN(MockWMRTimestamp); DISALLOW_COPY_AND_ASSIGN(MockWMRTimestamp);
......
...@@ -44,7 +44,7 @@ std::unique_ptr<WMRTimestamp> WMRHolographicFramePredictionImpl::Timestamp() { ...@@ -44,7 +44,7 @@ std::unique_ptr<WMRTimestamp> WMRHolographicFramePredictionImpl::Timestamp() {
ComPtr<IPerceptionTimestamp> timestamp; ComPtr<IPerceptionTimestamp> timestamp;
HRESULT hr = prediction_->get_Timestamp(&timestamp); HRESULT hr = prediction_->get_Timestamp(&timestamp);
DCHECK(SUCCEEDED(hr)); DCHECK(SUCCEEDED(hr));
return std::make_unique<WMRTimestamp>(timestamp); return std::make_unique<WMRTimestampImpl>(timestamp);
} }
std::vector<std::unique_ptr<WMRCameraPose>> std::vector<std::unique_ptr<WMRCameraPose>>
...@@ -62,7 +62,7 @@ WMRHolographicFramePredictionImpl::CameraPoses() { ...@@ -62,7 +62,7 @@ WMRHolographicFramePredictionImpl::CameraPoses() {
for (uint32_t i = 0; i < num; i++) { for (uint32_t i = 0; i < num; i++) {
ComPtr<IHolographicCameraPose> pose; ComPtr<IHolographicCameraPose> pose;
poses->GetAt(i, &pose); poses->GetAt(i, &pose);
ret_val.push_back(std::make_unique<WMRCameraPose>(pose)); ret_val.push_back(std::make_unique<WMRCameraPoseImpl>(pose));
} }
return ret_val; return ret_val;
...@@ -92,7 +92,7 @@ WMRHolographicFrameImpl::TryGetRenderingParameters(const WMRCameraPose* pose) { ...@@ -92,7 +92,7 @@ WMRHolographicFrameImpl::TryGetRenderingParameters(const WMRCameraPose* pose) {
&rendering_params); &rendering_params);
if (FAILED(hr)) if (FAILED(hr))
return nullptr; return nullptr;
return std::make_unique<WMRRenderingParameters>(rendering_params); return std::make_unique<WMRRenderingParametersImpl>(rendering_params);
} }
bool WMRHolographicFrameImpl::TryPresentUsingCurrentPrediction() { bool WMRHolographicFrameImpl::TryPresentUsingCurrentPrediction() {
......
...@@ -40,6 +40,8 @@ using Microsoft::WRL::ComPtr; ...@@ -40,6 +40,8 @@ using Microsoft::WRL::ComPtr;
namespace device { namespace device {
// WMRCoordinateSystem // WMRCoordinateSystem
ISpatialCoordinateSystem* WMRCoordinateSystem::GetRawPtr() const { ISpatialCoordinateSystem* WMRCoordinateSystem::GetRawPtr() const {
// This should only ever be used by the real implementation, so by default
// make sure it's not called.
NOTREACHED(); NOTREACHED();
return nullptr; return nullptr;
} }
......
...@@ -22,9 +22,6 @@ class WMRCoordinateSystem { ...@@ -22,9 +22,6 @@ class WMRCoordinateSystem {
virtual bool TryGetTransformTo( virtual bool TryGetTransformTo(
const WMRCoordinateSystem* other, const WMRCoordinateSystem* other,
ABI::Windows::Foundation::Numerics::Matrix4x4* this_to_other) = 0; ABI::Windows::Foundation::Numerics::Matrix4x4* this_to_other) = 0;
// This should only ever be used by the real implementation, so by default
// make sure it's not called.
virtual ABI::Windows::Perception::Spatial::ISpatialCoordinateSystem* virtual ABI::Windows::Perception::Spatial::ISpatialCoordinateSystem*
GetRawPtr() const; GetRawPtr() const;
}; };
......
...@@ -26,22 +26,21 @@ using Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess; ...@@ -26,22 +26,21 @@ using Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess;
namespace device { namespace device {
// WMRCamera // WMRCamera
WMRCamera::WMRCamera(ComPtr<IHolographicCamera> camera) : camera_(camera) { WMRCameraImpl::WMRCameraImpl(ComPtr<IHolographicCamera> camera)
: camera_(camera) {
DCHECK(camera_); DCHECK(camera_);
} }
WMRCamera::WMRCamera() {} WMRCameraImpl::~WMRCameraImpl() = default;
WMRCamera::~WMRCamera() = default; WF::Size WMRCameraImpl::RenderTargetSize() {
WF::Size WMRCamera::RenderTargetSize() {
WF::Size val; WF::Size val;
HRESULT hr = camera_->get_RenderTargetSize(&val); HRESULT hr = camera_->get_RenderTargetSize(&val);
DCHECK(SUCCEEDED(hr)); DCHECK(SUCCEEDED(hr));
return val; return val;
} }
bool WMRCamera::IsStereo() { bool WMRCameraImpl::IsStereo() {
boolean val; boolean val;
HRESULT hr = camera_->get_IsStereo(&val); HRESULT hr = camera_->get_IsStereo(&val);
DCHECK(SUCCEEDED(hr)); DCHECK(SUCCEEDED(hr));
...@@ -49,37 +48,44 @@ bool WMRCamera::IsStereo() { ...@@ -49,37 +48,44 @@ bool WMRCamera::IsStereo() {
} }
// WMRCameraPose // WMRCameraPose
WMRCameraPose::WMRCameraPose(ComPtr<IHolographicCameraPose> pose) ABI::Windows::Graphics::Holographic::IHolographicCameraPose*
WMRCameraPose::GetRawPtr() const {
// This should only ever be used by the real implementation, so by default
// make sure it's not called.
NOTREACHED();
return nullptr;
}
WMRCameraPoseImpl::WMRCameraPoseImpl(ComPtr<IHolographicCameraPose> pose)
: pose_(pose) { : pose_(pose) {
DCHECK(pose_); DCHECK(pose_);
} }
WMRCameraPose::WMRCameraPose() {} WMRCameraPoseImpl::~WMRCameraPoseImpl() = default;
WMRCameraPose::~WMRCameraPose() = default;
WF::Rect WMRCameraPose::Viewport() { WF::Rect WMRCameraPoseImpl::Viewport() {
WF::Rect val; WF::Rect val;
HRESULT hr = pose_->get_Viewport(&val); HRESULT hr = pose_->get_Viewport(&val);
DCHECK(SUCCEEDED(hr)); DCHECK(SUCCEEDED(hr));
return val; return val;
} }
std::unique_ptr<WMRCamera> WMRCameraPose::HolographicCamera() { std::unique_ptr<WMRCamera> WMRCameraPoseImpl::HolographicCamera() {
ComPtr<IHolographicCamera> camera; ComPtr<IHolographicCamera> camera;
HRESULT hr = pose_->get_HolographicCamera(&camera); HRESULT hr = pose_->get_HolographicCamera(&camera);
DCHECK(SUCCEEDED(hr)); DCHECK(SUCCEEDED(hr));
return std::make_unique<WMRCamera>(camera); return std::make_unique<WMRCameraImpl>(camera);
} }
HolographicStereoTransform WMRCameraPose::ProjectionTransform() { HolographicStereoTransform WMRCameraPoseImpl::ProjectionTransform() {
HolographicStereoTransform val; HolographicStereoTransform val;
HRESULT hr = pose_->get_ProjectionTransform(&val); HRESULT hr = pose_->get_ProjectionTransform(&val);
DCHECK(SUCCEEDED(hr)); DCHECK(SUCCEEDED(hr));
return val; return val;
} }
bool WMRCameraPose::TryGetViewTransform(const WMRCoordinateSystem* origin, bool WMRCameraPoseImpl::TryGetViewTransform(
const WMRCoordinateSystem* origin,
HolographicStereoTransform* transform) { HolographicStereoTransform* transform) {
ComPtr<IReference<HolographicStereoTransform>> transform_ref; ComPtr<IReference<HolographicStereoTransform>> transform_ref;
if (FAILED(pose_->TryGetViewTransform(origin->GetRawPtr(), &transform_ref)) || if (FAILED(pose_->TryGetViewTransform(origin->GetRawPtr(), &transform_ref)) ||
...@@ -90,22 +96,21 @@ bool WMRCameraPose::TryGetViewTransform(const WMRCoordinateSystem* origin, ...@@ -90,22 +96,21 @@ bool WMRCameraPose::TryGetViewTransform(const WMRCoordinateSystem* origin,
return SUCCEEDED(hr); return SUCCEEDED(hr);
} }
IHolographicCameraPose* WMRCameraPose::GetRawPtr() const { IHolographicCameraPose* WMRCameraPoseImpl::GetRawPtr() const {
return pose_.Get(); return pose_.Get();
} }
// WMRRenderingParameters // WMRRenderingParameters
WMRRenderingParameters::WMRRenderingParameters( WMRRenderingParametersImpl::WMRRenderingParametersImpl(
ComPtr<IHolographicCameraRenderingParameters> rendering_params) ComPtr<IHolographicCameraRenderingParameters> rendering_params)
: rendering_params_(rendering_params) { : rendering_params_(rendering_params) {
DCHECK(rendering_params_); DCHECK(rendering_params_);
} }
WMRRenderingParameters::WMRRenderingParameters() {} WMRRenderingParametersImpl::~WMRRenderingParametersImpl() = default;
WMRRenderingParameters::~WMRRenderingParameters() = default;
ComPtr<ID3D11Texture2D> WMRRenderingParameters::TryGetBackbufferAsTexture2D() { ComPtr<ID3D11Texture2D>
WMRRenderingParametersImpl::TryGetBackbufferAsTexture2D() {
ComPtr<IDirect3DSurface> surface; ComPtr<IDirect3DSurface> surface;
if (FAILED(rendering_params_->get_Direct3D11BackBuffer(&surface))) if (FAILED(rendering_params_->get_Direct3D11BackBuffer(&surface)))
return nullptr; return nullptr;
......
...@@ -18,76 +18,98 @@ class WMRCoordinateSystem; ...@@ -18,76 +18,98 @@ class WMRCoordinateSystem;
class WMRCamera { class WMRCamera {
public: public:
explicit WMRCamera( virtual ~WMRCamera() = default;
virtual ABI::Windows::Foundation::Size RenderTargetSize() = 0;
virtual bool IsStereo() = 0;
};
class WMRCameraImpl : public WMRCamera {
public:
explicit WMRCameraImpl(
Microsoft::WRL::ComPtr< Microsoft::WRL::ComPtr<
ABI::Windows::Graphics::Holographic::IHolographicCamera> camera); ABI::Windows::Graphics::Holographic::IHolographicCamera> camera);
virtual ~WMRCamera(); ~WMRCameraImpl() override;
virtual ABI::Windows::Foundation::Size RenderTargetSize();
virtual bool IsStereo();
protected: ABI::Windows::Foundation::Size RenderTargetSize() override;
// Necessary so subclasses don't call the explicit constructor. bool IsStereo() override;
WMRCamera();
private: private:
Microsoft::WRL::ComPtr< Microsoft::WRL::ComPtr<
ABI::Windows::Graphics::Holographic::IHolographicCamera> ABI::Windows::Graphics::Holographic::IHolographicCamera>
camera_; camera_;
DISALLOW_COPY_AND_ASSIGN(WMRCamera); DISALLOW_COPY_AND_ASSIGN(WMRCameraImpl);
}; };
class WMRCameraPose { class WMRCameraPose {
public: public:
explicit WMRCameraPose( virtual ~WMRCameraPose() = default;
Microsoft::WRL::ComPtr<
ABI::Windows::Graphics::Holographic::IHolographicCameraPose> pose);
virtual ~WMRCameraPose();
virtual ABI::Windows::Foundation::Rect Viewport(); virtual ABI::Windows::Foundation::Rect Viewport() = 0;
virtual std::unique_ptr<WMRCamera> HolographicCamera(); virtual std::unique_ptr<WMRCamera> HolographicCamera() = 0;
virtual ABI::Windows::Graphics::Holographic::HolographicStereoTransform virtual ABI::Windows::Graphics::Holographic::HolographicStereoTransform
ProjectionTransform(); ProjectionTransform() = 0;
virtual bool TryGetViewTransform( virtual bool TryGetViewTransform(
const WMRCoordinateSystem* origin, const WMRCoordinateSystem* origin,
ABI::Windows::Graphics::Holographic::HolographicStereoTransform* ABI::Windows::Graphics::Holographic::HolographicStereoTransform*
transform); transform) = 0;
ABI::Windows::Graphics::Holographic::IHolographicCameraPose* GetRawPtr() virtual ABI::Windows::Graphics::Holographic::IHolographicCameraPose*
const; GetRawPtr() const;
};
class WMRCameraPoseImpl : public WMRCameraPose {
public:
explicit WMRCameraPoseImpl(
Microsoft::WRL::ComPtr<
ABI::Windows::Graphics::Holographic::IHolographicCameraPose> pose);
~WMRCameraPoseImpl() override;
protected: ABI::Windows::Foundation::Rect Viewport() override;
// Necessary so subclasses don't call the explicit constructor. std::unique_ptr<WMRCamera> HolographicCamera() override;
WMRCameraPose(); ABI::Windows::Graphics::Holographic::HolographicStereoTransform
ProjectionTransform() override;
bool TryGetViewTransform(
const WMRCoordinateSystem* origin,
ABI::Windows::Graphics::Holographic::HolographicStereoTransform*
transform) override;
ABI::Windows::Graphics::Holographic::IHolographicCameraPose* GetRawPtr()
const override;
private: private:
Microsoft::WRL::ComPtr< Microsoft::WRL::ComPtr<
ABI::Windows::Graphics::Holographic::IHolographicCameraPose> ABI::Windows::Graphics::Holographic::IHolographicCameraPose>
pose_; pose_;
DISALLOW_COPY_AND_ASSIGN(WMRCameraPose); DISALLOW_COPY_AND_ASSIGN(WMRCameraPoseImpl);
}; };
class WMRRenderingParameters { class WMRRenderingParameters {
public: public:
explicit WMRRenderingParameters( virtual ~WMRRenderingParameters() = default;
virtual Microsoft::WRL::ComPtr<ID3D11Texture2D>
TryGetBackbufferAsTexture2D() = 0;
};
class WMRRenderingParametersImpl : public WMRRenderingParameters {
public:
explicit WMRRenderingParametersImpl(
Microsoft::WRL::ComPtr<ABI::Windows::Graphics::Holographic:: Microsoft::WRL::ComPtr<ABI::Windows::Graphics::Holographic::
IHolographicCameraRenderingParameters> IHolographicCameraRenderingParameters>
rendering_params); rendering_params);
virtual ~WMRRenderingParameters(); ~WMRRenderingParametersImpl() override;
virtual Microsoft::WRL::ComPtr<ID3D11Texture2D> TryGetBackbufferAsTexture2D(); Microsoft::WRL::ComPtr<ID3D11Texture2D> TryGetBackbufferAsTexture2D()
override;
protected:
// Necessary so subclasses don't call the explicit constructor.
WMRRenderingParameters();
private: private:
Microsoft::WRL::ComPtr<ABI::Windows::Graphics::Holographic:: Microsoft::WRL::ComPtr<ABI::Windows::Graphics::Holographic::
IHolographicCameraRenderingParameters> IHolographicCameraRenderingParameters>
rendering_params_; rendering_params_;
DISALLOW_COPY_AND_ASSIGN(WMRRenderingParameters); DISALLOW_COPY_AND_ASSIGN(WMRRenderingParametersImpl);
}; };
} // namespace device } // namespace device
#endif // DEVICE_VR_WINDOWS_MIXED_REALITY_WRAPPERS_WMR_RENDERING_H_ #endif // DEVICE_VR_WINDOWS_MIXED_REALITY_WRAPPERS_WMR_RENDERING_H_
...@@ -14,30 +14,29 @@ using ABI::Windows::Perception::IPerceptionTimestamp; ...@@ -14,30 +14,29 @@ using ABI::Windows::Perception::IPerceptionTimestamp;
using Microsoft::WRL::ComPtr; using Microsoft::WRL::ComPtr;
namespace device { namespace device {
WMRTimestamp::WMRTimestamp(ComPtr<IPerceptionTimestamp> timestamp)
WMRTimestampImpl::WMRTimestampImpl(ComPtr<IPerceptionTimestamp> timestamp)
: timestamp_(timestamp) { : timestamp_(timestamp) {
DCHECK(timestamp_); DCHECK(timestamp_);
} }
WMRTimestamp::WMRTimestamp() {} WMRTimestampImpl::~WMRTimestampImpl() = default;
WMRTimestamp::~WMRTimestamp() = default;
DateTime WMRTimestamp::TargetTime() const { DateTime WMRTimestampImpl::TargetTime() const {
DateTime val; DateTime val;
HRESULT hr = timestamp_->get_TargetTime(&val); HRESULT hr = timestamp_->get_TargetTime(&val);
DCHECK(SUCCEEDED(hr)); DCHECK(SUCCEEDED(hr));
return val; return val;
} }
TimeSpan WMRTimestamp::PredictionAmount() const { TimeSpan WMRTimestampImpl::PredictionAmount() const {
TimeSpan val; TimeSpan val;
HRESULT hr = timestamp_->get_PredictionAmount(&val); HRESULT hr = timestamp_->get_PredictionAmount(&val);
DCHECK(SUCCEEDED(hr)); DCHECK(SUCCEEDED(hr));
return val; return val;
} }
IPerceptionTimestamp* WMRTimestamp::GetRawPtr() const { IPerceptionTimestamp* WMRTimestampImpl::GetRawPtr() const {
return timestamp_.Get(); return timestamp_.Get();
} }
} // namespace device } // namespace device
...@@ -12,24 +12,33 @@ ...@@ -12,24 +12,33 @@
namespace device { namespace device {
class WMRTimestamp { class WMRTimestamp {
public: public:
explicit WMRTimestamp( virtual ~WMRTimestamp() = default;
virtual ABI::Windows::Foundation::DateTime TargetTime() const = 0;
virtual ABI::Windows::Foundation::TimeSpan PredictionAmount() const = 0;
// No default implementation w/ a NOTREACHED like other GetRawPtr()s because
// this is expected to be called on both the real and mock implementations in
// MixedRealityInputHelper::GetInputState().
virtual ABI::Windows::Perception::IPerceptionTimestamp* GetRawPtr() const = 0;
};
class WMRTimestampImpl : public WMRTimestamp {
public:
explicit WMRTimestampImpl(
Microsoft::WRL::ComPtr<ABI::Windows::Perception::IPerceptionTimestamp> Microsoft::WRL::ComPtr<ABI::Windows::Perception::IPerceptionTimestamp>
timestamp); timestamp);
virtual ~WMRTimestamp(); ~WMRTimestampImpl() override;
virtual ABI::Windows::Foundation::DateTime TargetTime() const;
virtual ABI::Windows::Foundation::TimeSpan PredictionAmount() const;
ABI::Windows::Perception::IPerceptionTimestamp* GetRawPtr() const;
protected: ABI::Windows::Foundation::DateTime TargetTime() const override;
// Necessary so subclasses don't call the explicit constructor. ABI::Windows::Foundation::TimeSpan PredictionAmount() const override;
WMRTimestamp(); ABI::Windows::Perception::IPerceptionTimestamp* GetRawPtr() const override;
private: private:
Microsoft::WRL::ComPtr<ABI::Windows::Perception::IPerceptionTimestamp> Microsoft::WRL::ComPtr<ABI::Windows::Perception::IPerceptionTimestamp>
timestamp_; timestamp_;
DISALLOW_COPY_AND_ASSIGN(WMRTimestamp); DISALLOW_COPY_AND_ASSIGN(WMRTimestampImpl);
}; };
} // namespace device } // namespace device
#endif // DEVICE_VR_WINDOWS_MIXED_REALITY_WRAPPERS_WMR_TIMESTAMP_H_ #endif // DEVICE_VR_WINDOWS_MIXED_REALITY_WRAPPERS_WMR_TIMESTAMP_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment