rsx/common/d3d12: Support for shader window setting.

This commit is contained in:
Vincent Lejeune 2016-01-27 00:30:34 +01:00
parent 39bc897b93
commit f6d2409b20
2 changed files with 6 additions and 0 deletions

View file

@ -191,6 +191,8 @@ void D3D12FragmentDecompiler::insertMainStart(std::stringstream & OS)
}
// A bit unclean, but works.
OS << " " << "float4 gl_Position = In.Position;" << std::endl;
if (m_prog.origin_mode == rsx::window_origin::bottom)
OS << " gl_Position.y = (" << std::to_string(m_prog.height) << " - gl_Position.y);\n";
// Declare output
for (const ParamType &PT : m_parr.params[PF_PARAM_NONE])
{

View file

@ -665,6 +665,10 @@ namespace rsx
result.addr = vm::base(rsx::get_address(result.offset, (shader_program & 0x3) - 1));
result.ctrl = rsx::method_registers[NV4097_SET_SHADER_CONTROL];
result.unnormalized_coords = 0;
u32 shader_window = rsx::method_registers[NV4097_SET_SHADER_WINDOW];
result.origin_mode = rsx::to_window_origin((shader_window >> 12) & 0xF);
result.pixel_center_mode = rsx::to_window_pixel_center((shader_window >> 16) & 0xF);
result.height = shader_window & 0xFFF;
std::array<texture_dimension, 16> texture_dimensions;
for (u32 i = 0; i < rsx::limits::textures_count; ++i)