/src/mozilla-central/gfx/layers/mlgpu/RenderPassMLGPU-inl.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* vim: set ts=8 sts=2 et sw=2 tw=80: */ |
3 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
4 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
5 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | | |
7 | | #ifndef mozilla_gfx_layers_mlgpu_RenderPassMLGPU_inl_h |
8 | | #define mozilla_gfx_layers_mlgpu_RenderPassMLGPU_inl_h |
9 | | |
10 | | namespace mozilla { |
11 | | namespace layers { |
12 | | |
13 | | template <typename Traits> |
14 | | static inline bool |
15 | | AddShaderTriangles(VertexStagingBuffer* aBuffer, |
16 | | const Traits& aTraits, |
17 | | const gfx::Polygon* aGeometry = nullptr) |
18 | 0 | { |
19 | 0 | typedef typename Traits::TriangleVertices TriangleVertices; |
20 | 0 | typedef typename Traits::FirstTriangle FirstTriangle; |
21 | 0 | typedef typename Traits::SecondTriangle SecondTriangle; |
22 | 0 |
|
23 | 0 | if (!aGeometry) { |
24 | 0 | TriangleVertices base1 = aTraits.MakeVertex(FirstTriangle()); |
25 | 0 | TriangleVertices base2 = aTraits.MakeVertex(SecondTriangle()); |
26 | 0 | auto data1 = aTraits.MakeVertexData(FirstTriangle()); |
27 | 0 | auto data2 = aTraits.MakeVertexData(SecondTriangle()); |
28 | 0 | return aBuffer->PrependItem(base1, data1) && aBuffer->PrependItem(base2, data2); |
29 | 0 | } |
30 | 0 |
|
31 | 0 | auto triangles = aTraits.GenerateTriangles(*aGeometry); |
32 | 0 | for (const auto& triangle : triangles) { |
33 | 0 | TriangleVertices base = aTraits.MakeVertex(triangle); |
34 | 0 | auto data = aTraits.MakeVertexData(triangle); |
35 | 0 | if (!aBuffer->PrependItem(base, data)) { |
36 | 0 | return false; |
37 | 0 | } |
38 | 0 | } |
39 | 0 | return true; |
40 | 0 | } Unexecuted instantiation: Unified_cpp_gfx_layers10.cpp:bool mozilla::layers::AddShaderTriangles<mozilla::layers::mlg::ColorTraits>(mozilla::layers::StagingBuffer<0ul>*, mozilla::layers::mlg::ColorTraits const&, mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> const*) Unexecuted instantiation: Unified_cpp_gfx_layers10.cpp:bool mozilla::layers::AddShaderTriangles<mozilla::layers::mlg::TexturedTraits>(mozilla::layers::StagingBuffer<0ul>*, mozilla::layers::mlg::TexturedTraits const&, mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> const*) |
41 | | |
42 | | template <typename Traits> |
43 | | inline bool |
44 | | BatchRenderPass<Traits>::Txn::AddImpl(const Traits& aTraits) |
45 | 0 | { |
46 | 0 | VertexStagingBuffer* instances = mPass->GetInstances(); |
47 | 0 |
|
48 | 0 | if (mPass->mGeometry == GeometryMode::Polygon) { |
49 | 0 | if (const Maybe<gfx::Polygon>& geometry = aTraits.geometry()) { |
50 | 0 | gfx::Polygon polygon = geometry->ClipPolygon(aTraits.rect()); |
51 | 0 | if (polygon.IsEmpty()) { |
52 | 0 | return true; |
53 | 0 | } |
54 | 0 | return AddShaderTriangles(instances, aTraits, &polygon); |
55 | 0 | } |
56 | 0 | return AddShaderTriangles(instances, aTraits); |
57 | 0 | } |
58 | 0 | |
59 | 0 | typedef typename Traits::UnitQuadVertex UnitQuadVertex; |
60 | 0 | typedef typename Traits::UnitQuad UnitQuad; |
61 | 0 |
|
62 | 0 | UnitQuadVertex base = aTraits.MakeUnitQuadVertex(); |
63 | 0 | auto data = aTraits.MakeVertexData(UnitQuad()); |
64 | 0 | return instances->AddItem(base, data); |
65 | 0 | } Unexecuted instantiation: mozilla::layers::BatchRenderPass<mozilla::layers::mlg::ColorTraits>::Txn::AddImpl(mozilla::layers::mlg::ColorTraits const&) Unexecuted instantiation: mozilla::layers::BatchRenderPass<mozilla::layers::mlg::TexturedTraits>::Txn::AddImpl(mozilla::layers::mlg::TexturedTraits const&) |
66 | | |
67 | | } // namespace layers |
68 | | } // namespace mozilla |
69 | | |
70 | | #endif // mozilla_gfx_layers_mlgpu_RenderPassMLGPU_inl_h |