Skip to content

Add Copy to some structs #1332

Open
Open
@CrazyboyQCD

Description

@CrazyboyQCD

Godbolt Link
As you can see in the asm output, even set opt-level = 3, if we don't add Copy to structs with all fields Copy derived, in clone() it generates more mov and large struct can't trigger memcpy, I suggest to add Copy to them to alleviate binary size bloated and performance problem.
List of structs that could add Copy (Simple search may miss):

  • Dav1dWarpedMotionParams
  • Dav1dSequenceHeader
  • Rav1dSequenceHeader
  • Dav1dSegmentationData
  • Rav1dSegmentationData
  • Dav1dSegmentationDataSet
  • Rav1dSegmentationDataSet
  • Dav1dLoopfilterModeRefDeltas
  • Rav1dLoopfilterModeRefDeltas
  • Rav1dFilmGrainData
  • Dav1dFilmGrainData
  • Dav1dFrameHeaderFilmGrain
  • Rav1dFrameHeaderFilmGrain
  • Dav1dFrameHeaderOperatingPoint
  • Dav1dFrameHeaderSuperRes
  • Rav1dFrameHeaderSuperRes
  • Dav1dFrameHeaderTiling
  • Rav1dFrameHeaderTiling
  • Dav1dFrameHeaderQuant
  • Rav1dFrameHeaderQuant
  • Dav1dFrameHeaderSegmentation
  • Rav1dFrameHeaderSegmentation
  • Dav1dFrameHeaderDeltaQ
  • Rav1dFrameHeaderDeltaQ
  • Dav1dFrameHeaderDeltaLF
  • Rav1dFrameHeaderDeltaLF
  • Dav1dFrameHeaderDelta
  • Rav1dFrameHeaderDelta
  • Dav1dFrameHeaderLoopFilter
  • Rav1dFrameHeaderLoopFilter
  • Dav1dFrameHeaderCdef
  • Rav1dFrameHeaderCdef
  • Dav1dFrameHeaderRestoration
  • Rav1dFrameHeaderRestoration
  • Dav1dFrameHeader
  • Rav1dFrameSize
  • Rav1dFrameSkipMode
  • Rav1dFrameHeader
  • Rav1dPictureParameters
  • AlignedPixelChunk
  • CdfContext
  • CdfMvContext
  • CdfMvComponent
  • CdfCoefContext
  • CdfModeContext
  • CdfModeInterContext
  • Rav1dTileGroupHeader
  • Av1BlockIntra
  • Av1BlockInter1d
  • Av1BlockInter2d
  • Av1BlockInterNd
  • Av1BlockInter

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions