class PipeScalerWindowPosition
Defined at line 463 of file ../../src/graphics/display/drivers/intel-display/registers-pipe-scaler.h
PS_WIN_POS (Pipe Scaler Window Position)
The scaler outputs the scaled contents to the scaler window, a rectangular
region specified by `PipeScalerWindowPosition` and `PipeScalerWindowSize`
on the output surface.
This register specifies the location of the top-left corner. "x" and "y"
are relative to the display device, thus rotation / flipping of planes and
pipe doesn't affect the order of x and y.
This register and `PipeScalerWindowSize` must be set so that the whole
scaler window is within the output surface:
For plane scaling, it outputs to the pipe source, so
x_position + x_size
<
= PipeSourceSize.horizontal_source_size
y_position + y_size
<
= PipeSourceSize.vertical_source_size
must be satisfied.
For pipe scaling, it outputs to the transcoder, so
x_position + x_size
<
= PipeActiveSize.x_size
y_position + y_size
<
= PipeActiveSize.y_size
If the pipe is not joined to other pipes,
PipeActiveSize.x_size = TranscoderHorizontalTotal.active_size
PipeActiveSize.y_size = TranscoderVerticalTotal.active_size
TODO(liyl): The documentation is unclear how the pipe active size is defined
in the case of joined pipes (whether a division is needed).
otherwise,
PipeActiveSize.x_size = TranscoderHorizontalTotal.active_size / #(joined pipes)
+ PipeSeamExcess.left_excess_amount + PipeSeamExcess.right_excess_amount
PipeActiveSize.y_size = TranscoderVerticalTotal.active_size
Note that the excess amount must be taken into account when merging
pipes' output to a single transcoder.
This register is double buffered. See PipeScalerWindowSize for arming and
dis-arming double-buffer updates.
This register's reserved fields are all MBZ (must be zero). So, this register
can be safely written without reading it first.
Tiger Lake: IHD-OS-TGL-Vol 2c-1.22-Rev 2.0 Part 2, Pages 1021-1022
Kaby Lake: IHD-OS-KBL-Vol 2c-1.17 Part 2, Pages 666-667
Public Members
field_RsvdZ_467
field_x_position_471
field_RsvdZ_473
field_y_position_477
static const uint32_t kBaseAddr
Public Methods
template <, >
SelfType & set_x_position (typename SelfType::ValueType val)
Horizontal (x) position of the left of the rectangle.
Must be even for YUV planes / pipes.
Defined at line 471 of file ../../src/graphics/display/drivers/intel-display/registers-pipe-scaler.h
template <, >
typename SelfType::ValueType x_position ()
Horizontal (x) position of the left of the rectangle.
Must be even for YUV planes / pipes.
Defined at line 471 of file ../../src/graphics/display/drivers/intel-display/registers-pipe-scaler.h
template <, >
SelfType & set_y_position (typename SelfType::ValueType val)
Vertical (y) position of the top of the rectangle.
Must be even for YUV planes / pipes, or for interlaced output.
Defined at line 477 of file ../../src/graphics/display/drivers/intel-display/registers-pipe-scaler.h
template <, >
typename SelfType::ValueType y_position ()
Vertical (y) position of the top of the rectangle.
Must be even for YUV planes / pipes, or for interlaced output.
Defined at line 477 of file ../../src/graphics/display/drivers/intel-display/registers-pipe-scaler.h