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

Records