rebrand as VTE passthrough

This commit is contained in:
Vladislav Mikhalin 2025-01-01 14:21:23 +03:00
parent c230ed1507
commit 8e944f9e28

View File

@ -1074,16 +1074,17 @@ void Rasterizer::UpdateViewportScissorState() {
.extent = {vp_scsr.GetWidth(), vp_scsr.GetHeight()}, .extent = {vp_scsr.GetWidth(), vp_scsr.GetHeight()},
}); });
const bool viewport_disabled = !vp_ctl.xoffset_enable && !vp_ctl.xscale_enable && const bool vte_passthrough_enabled = !vp_ctl.xoffset_enable && !vp_ctl.xscale_enable &&
!vp_ctl.yoffset_enable && !vp_ctl.yscale_enable && !vp_ctl.yoffset_enable && !vp_ctl.yscale_enable &&
!vp_ctl.zoffset_enable && !vp_ctl.zscale_enable; !vp_ctl.zoffset_enable && !vp_ctl.zscale_enable &&
if (viewport_disabled) { vp_ctl.xy_transformed && !vp_ctl.w_transformed;
// If viewport is disabled, normalized device coordinates should be treated as pixel if (vte_passthrough_enabled) {
// coordinates and viewport should be at least as large as the scissors. // VTE passthrough is enabled. This means that vertex coordinates should be directly
// passed to pixel coordinates. Setup the viewport accordingly.
const auto& scissor = scissors.back(); const auto& scissor = scissors.back();
const auto xoffset = float(scissor.offset.x); const auto xoffset = float(scissor.offset.x);
const auto xscale = float(scissor.extent.width);
const auto yoffset = float(scissor.offset.y); const auto yoffset = float(scissor.offset.y);
const auto xscale = float(scissor.extent.width);
const auto yscale = float(scissor.extent.height); const auto yscale = float(scissor.extent.height);
viewports.push_back({ viewports.push_back({
.x = xoffset - xscale, .x = xoffset - xscale,
@ -1095,10 +1096,10 @@ void Rasterizer::UpdateViewportScissorState() {
}); });
} else { } else {
const auto xoffset = vp_ctl.xoffset_enable ? vp.xoffset : 0.f; const auto xoffset = vp_ctl.xoffset_enable ? vp.xoffset : 0.f;
const auto xscale = vp_ctl.xscale_enable ? vp.xscale : 1.f;
const auto yoffset = vp_ctl.yoffset_enable ? vp.yoffset : 0.f; const auto yoffset = vp_ctl.yoffset_enable ? vp.yoffset : 0.f;
const auto yscale = vp_ctl.yscale_enable ? vp.yscale : 1.f;
const auto zoffset = vp_ctl.zoffset_enable ? vp.zoffset : 0.f; const auto zoffset = vp_ctl.zoffset_enable ? vp.zoffset : 0.f;
const auto xscale = vp_ctl.xscale_enable ? vp.xscale : 1.f;
const auto yscale = vp_ctl.yscale_enable ? vp.yscale : 1.f;
const auto zscale = vp_ctl.zscale_enable ? vp.zscale : 1.f; const auto zscale = vp_ctl.zscale_enable ? vp.zscale : 1.f;
viewports.push_back({ viewports.push_back({
.x = xoffset - xscale, .x = xoffset - xscale,