mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-01 20:18:15 +01:00
Dialog screens (tabbed, two-pane, simple and the others built on UIBaseDialogScreen) center their content at up to 1400 wide, instead of stretching settings rows and buttons across very wide windows. On large screens, those screens and the main screen also get an inset on all sides, since controls right at the edge are hard to see there. It grows with the screen's smaller dimension, from nothing at 600 to the full inset at 1000, and is always full on TVs. The game, popups, and the screens that position things to match the game's screen (display layout, touch control layout and tests, custom button and visual mapping) are left as they were. The root's bounds are computed by UIScreen::GetContentBounds, since UI::Margins can't hold widths this large. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
64 lines
1.9 KiB
C++
64 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include "Common/System/Display.h"
|
|
#include "Common/UI/Context.h"
|
|
#include "Common/UI/View.h"
|
|
#include "Common/UI/ViewGroup.h"
|
|
#include "Common/UI/TabHolder.h"
|
|
|
|
#include "Common/Log.h"
|
|
#include "UI/BaseScreens.h"
|
|
#include "Common/GPU/thin3d.h"
|
|
|
|
class GPUDriverTestScreen : public UIBaseDialogScreen {
|
|
public:
|
|
bool LimitContentArea() const override { return false; }
|
|
GPUDriverTestScreen();
|
|
~GPUDriverTestScreen();
|
|
|
|
void CreateViews() override;
|
|
void DrawForeground(UIContext &dc) override;
|
|
|
|
const char *tag() const override { return "GPUDriverTest"; }
|
|
|
|
private:
|
|
void DiscardTest(UIContext &dc);
|
|
void ShaderTest(UIContext &dc);
|
|
|
|
// Common objects
|
|
Draw::SamplerState *samplerNearest_ = nullptr;
|
|
|
|
// Discard/depth/stencil stuff
|
|
// ===========================
|
|
|
|
Draw::ShaderModule *discardFragShader_ = nullptr;
|
|
Draw::Pipeline *discardWriteDepthStencil_ = nullptr;
|
|
Draw::Pipeline *discardWriteDepth_ = nullptr;
|
|
Draw::Pipeline *discardWriteStencil_ = nullptr;
|
|
|
|
// Stencil test, with and without DepthAlways
|
|
Draw::Pipeline *drawTestStencilEqual_ = nullptr;
|
|
Draw::Pipeline *drawTestStencilNotEqual_ = nullptr;
|
|
Draw::Pipeline *drawTestStencilEqualDepthAlways_ = nullptr;
|
|
Draw::Pipeline *drawTestStencilNotEqualDepthAlways_ = nullptr;
|
|
|
|
// Depth tests with and without StencilAlways
|
|
Draw::Pipeline *drawTestStencilAlwaysDepthLessEqual_ = nullptr;
|
|
Draw::Pipeline *drawTestStencilAlwaysDepthGreater_ = nullptr;
|
|
Draw::Pipeline *drawTestDepthLessEqual_ = nullptr;
|
|
Draw::Pipeline *drawTestDepthGreater_ = nullptr;
|
|
|
|
|
|
// Shader tests
|
|
// ============
|
|
|
|
Draw::Pipeline *adrenoLogicDiscardPipeline_ = nullptr;
|
|
Draw::ShaderModule *adrenoLogicDiscardFragShader_ = nullptr;
|
|
Draw::ShaderModule *adrenoLogicDiscardVertShader_ = nullptr;
|
|
Draw::Pipeline *flatShadingPipeline_ = nullptr;
|
|
Draw::ShaderModule *flatFragShader_ = nullptr;
|
|
Draw::ShaderModule *flatVertShader_ = nullptr;
|
|
|
|
UI::TabHolder *tabHolder_ = nullptr;
|
|
};
|