| 699 | } |
| 700 | |
| 701 | struct DrawListItemRenderState |
| 702 | { |
| 703 | const DrawListItem& Item; |
| 704 | mutable size_t Hash = 0; |
| 705 | |
| 706 | struct Hasher |
| 707 | { |
| 708 | size_t operator()(const DrawListItemRenderState& State) const |
| 709 | { |
| 710 | if (State.Hash == 0) |
| 711 | { |
| 712 | State.Hash = ComputeHash(State.Item.pPSO, |
| 713 | State.Item.IndexBuffer, |
| 714 | State.Item.NumVertexBuffers, |
| 715 | State.Item.Material.GetSRB()); |
| 716 | for (Uint32 i = 0; i < State.Item.NumVertexBuffers; ++i) |
| 717 | { |
| 718 | HashCombine(State.Hash, State.Item.VertexBuffers[i]); |
| 719 | } |
| 720 | } |
| 721 | return State.Hash; |
| 722 | } |
| 723 | }; |
| 724 | |
| 725 | bool operator==(const DrawListItemRenderState& rhs) const |
| 726 | { |
| 727 | return (Item.pPSO == rhs.Item.pPSO && |
| 728 | Item.IndexBuffer == rhs.Item.IndexBuffer && |
| 729 | Item.NumVertexBuffers == rhs.Item.NumVertexBuffers && |
| 730 | Item.Material.GetSRB() == rhs.Item.Material.GetSRB() && |
| 731 | Item.VertexBuffers == rhs.Item.VertexBuffers); |
| 732 | } |
| 733 | }; |
| 734 | std::unordered_map<DrawListItemRenderState, Uint32, DrawListItemRenderState::Hasher> DrawListItemRenderStateIDs; |
| 735 | |
| 736 | bool DrawListDirty = false; |
nothing calls this directly
no outgoing calls
no test coverage detected