mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 11:30:21 +01:00
isl: Add assertions for render target swizzle restrictions
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
This commit is contained in:
parent
f90ccf48bc
commit
0c114f2cf0
1 changed files with 32 additions and 0 deletions
|
|
@ -453,6 +453,38 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
|
|||
#endif
|
||||
|
||||
#if (GEN_GEN >= 8 || GEN_IS_HASWELL)
|
||||
if (info->view->usage & ISL_SURF_USAGE_RENDER_TARGET_BIT) {
|
||||
/* From the Sky Lake PRM Vol. 2d,
|
||||
* RENDER_SURFACE_STATE::Shader Channel Select Red
|
||||
*
|
||||
* "For Render Target, Red, Green and Blue Shader Channel Selects
|
||||
* MUST be such that only valid components can be swapped i.e. only
|
||||
* change the order of components in the pixel. Any other values for
|
||||
* these Shader Channel Select fields are not valid for Render
|
||||
* Targets. This also means that there MUST not be multiple shader
|
||||
* channels mapped to the same RT channel."
|
||||
*/
|
||||
assert(info->view->swizzle.r == ISL_CHANNEL_SELECT_RED ||
|
||||
info->view->swizzle.r == ISL_CHANNEL_SELECT_GREEN ||
|
||||
info->view->swizzle.r == ISL_CHANNEL_SELECT_BLUE);
|
||||
assert(info->view->swizzle.g == ISL_CHANNEL_SELECT_RED ||
|
||||
info->view->swizzle.g == ISL_CHANNEL_SELECT_GREEN ||
|
||||
info->view->swizzle.g == ISL_CHANNEL_SELECT_BLUE);
|
||||
assert(info->view->swizzle.b == ISL_CHANNEL_SELECT_RED ||
|
||||
info->view->swizzle.b == ISL_CHANNEL_SELECT_GREEN ||
|
||||
info->view->swizzle.b == ISL_CHANNEL_SELECT_BLUE);
|
||||
assert(info->view->swizzle.r != info->view->swizzle.g);
|
||||
assert(info->view->swizzle.r != info->view->swizzle.b);
|
||||
assert(info->view->swizzle.g != info->view->swizzle.b);
|
||||
|
||||
/* From the Sky Lake PRM Vol. 2d,
|
||||
* RENDER_SURFACE_STATE::Shader Channel Select Alpha
|
||||
*
|
||||
* "For Render Target, this field MUST be programmed to
|
||||
* value = SCS_ALPHA."
|
||||
*/
|
||||
assert(info->view->swizzle.a == ISL_CHANNEL_SELECT_ALPHA);
|
||||
}
|
||||
s.ShaderChannelSelectRed = info->view->swizzle.r;
|
||||
s.ShaderChannelSelectGreen = info->view->swizzle.g;
|
||||
s.ShaderChannelSelectBlue = info->view->swizzle.b;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue