[Config] - add config cvars for internal resolution

This commit is contained in:
Cancerous 2020-01-18 14:19:57 -05:00 committed by illusion
parent 72880bf383
commit ea0db4aee9
3 changed files with 21 additions and 8 deletions

View File

@ -70,8 +70,8 @@ namespace d3d12 {
constexpr uint32_t D3D12CommandProcessor::kQueueFrames; constexpr uint32_t D3D12CommandProcessor::kQueueFrames;
constexpr uint32_t constexpr uint32_t
D3D12CommandProcessor::RootExtraParameterIndices::kUnavailable; D3D12CommandProcessor::RootExtraParameterIndices::kUnavailable;
constexpr uint32_t D3D12CommandProcessor::kSwapTextureWidth; // constexpr uint32_t D3D12CommandProcessor::kSwapTextureWidth();
constexpr uint32_t D3D12CommandProcessor::kSwapTextureHeight; // constexpr uint32_t D3D12CommandProcessor::kSwapTextureHeight();
constexpr uint32_t D3D12CommandProcessor::kScratchBufferSizeIncrement; constexpr uint32_t D3D12CommandProcessor::kScratchBufferSizeIncrement;
D3D12CommandProcessor::D3D12CommandProcessor( D3D12CommandProcessor::D3D12CommandProcessor(

View File

@ -17,6 +17,7 @@
#include <unordered_map> #include <unordered_map>
#include <utility> #include <utility>
#include "xenia/base/cvar.h"
#include "xenia/gpu/command_processor.h" #include "xenia/gpu/command_processor.h"
#include "xenia/gpu/d3d12/d3d12_graphics_system.h" #include "xenia/gpu/d3d12/d3d12_graphics_system.h"
#include "xenia/gpu/d3d12/deferred_command_list.h" #include "xenia/gpu/d3d12/deferred_command_list.h"
@ -31,6 +32,9 @@
#include "xenia/ui/d3d12/d3d12_context.h" #include "xenia/ui/d3d12/d3d12_context.h"
#include "xenia/ui/d3d12/pools.h" #include "xenia/ui/d3d12/pools.h"
DECLARE_int32(internal_tile_height);
DECLARE_int32(internal_tile_width);
namespace xe { namespace xe {
namespace gpu { namespace gpu {
namespace d3d12 { namespace d3d12 {
@ -331,13 +335,18 @@ class D3D12CommandProcessor : public CommandProcessor {
uint8_t* gamma_ramp_upload_mapping_ = nullptr; uint8_t* gamma_ramp_upload_mapping_ = nullptr;
D3D12_PLACED_SUBRESOURCE_FOOTPRINT gamma_ramp_footprints_[kQueueFrames * 2]; D3D12_PLACED_SUBRESOURCE_FOOTPRINT gamma_ramp_footprints_[kQueueFrames * 2];
static constexpr uint32_t kSwapTextureWidth = 1920; static constexpr uint32_t kSwapTextureWidth() {
static constexpr uint32_t kSwapTextureHeight = 1080; return cvars::internal_tile_width;
}
static constexpr uint32_t kSwapTextureHeight() {
return cvars::internal_tile_height;
}
inline std::pair<uint32_t, uint32_t> GetSwapTextureSize() const { inline std::pair<uint32_t, uint32_t> GetSwapTextureSize() const {
if (texture_cache_->IsResolutionScale2X()) { if (texture_cache_->IsResolutionScale2X()) {
return std::make_pair(kSwapTextureWidth * 2, kSwapTextureHeight * 2); return std::make_pair(kSwapTextureWidth() * 2, kSwapTextureHeight() * 2);
} }
return std::make_pair(kSwapTextureWidth, kSwapTextureHeight); return std::make_pair(kSwapTextureWidth(), kSwapTextureHeight());
} }
ID3D12Resource* swap_texture_ = nullptr; ID3D12Resource* swap_texture_ = nullptr;
D3D12_PLACED_SUBRESOURCE_FOOTPRINT swap_texture_copy_footprint_; D3D12_PLACED_SUBRESOURCE_FOOTPRINT swap_texture_copy_footprint_;

View File

@ -9,6 +9,7 @@
#include "xenia/kernel/xboxkrnl/xboxkrnl_video.h" #include "xenia/kernel/xboxkrnl/xboxkrnl_video.h"
#include "xenia/base/cvar.h"
#include "xenia/base/logging.h" #include "xenia/base/logging.h"
#include "xenia/emulator.h" #include "xenia/emulator.h"
#include "xenia/gpu/graphics_system.h" #include "xenia/gpu/graphics_system.h"
@ -28,6 +29,9 @@ DEFINE_double(kernel_display_gamma_power, 2.22222233,
"Display gamma to use with kernel_display_gamma_type 3.", "Display gamma to use with kernel_display_gamma_type 3.",
"Kernel"); "Kernel");
DEFINE_int32(internal_tile_height, 720, "guest resolution height", "Video");
DEFINE_int32(internal_tile_width, 1280, "guest resolution width", "Video");
namespace xe { namespace xe {
namespace kernel { namespace kernel {
namespace xboxkrnl { namespace xboxkrnl {
@ -132,8 +136,8 @@ DECLARE_XBOXKRNL_EXPORT1(VdGetCurrentDisplayInformation, kVideo, kStub);
void VdQueryVideoMode(pointer_t<X_VIDEO_MODE> video_mode) { void VdQueryVideoMode(pointer_t<X_VIDEO_MODE> video_mode) {
// TODO(benvanik): get info from actual display. // TODO(benvanik): get info from actual display.
video_mode.Zero(); video_mode.Zero();
video_mode->display_width = 1920; video_mode->display_width = cvars::internal_tile_width;
video_mode->display_height = 1080; video_mode->display_height = cvars::internal_tile_height;
video_mode->is_interlaced = 0; video_mode->is_interlaced = 0;
video_mode->is_widescreen = 1; video_mode->is_widescreen = 1;
video_mode->is_hi_def = 1; video_mode->is_hi_def = 1;