mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-04 03:46:42 +01:00
Merge pull request #5230 from lioncash/render
RenderBase: const correctness
This commit is contained in:
commit
db79c8db29
@ -122,7 +122,7 @@ void Renderer::RenderToXFB(u32 xfbAddr, const EFBRectangle& sourceRc, u32 fbStri
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::EFBToScaledX(int x)
|
int Renderer::EFBToScaledX(int x) const
|
||||||
{
|
{
|
||||||
switch (g_ActiveConfig.iEFBScale)
|
switch (g_ActiveConfig.iEFBScale)
|
||||||
{
|
{
|
||||||
@ -134,7 +134,7 @@ int Renderer::EFBToScaledX(int x)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::EFBToScaledY(int y)
|
int Renderer::EFBToScaledY(int y) const
|
||||||
{
|
{
|
||||||
switch (g_ActiveConfig.iEFBScale)
|
switch (g_ActiveConfig.iEFBScale)
|
||||||
{
|
{
|
||||||
@ -146,7 +146,17 @@ int Renderer::EFBToScaledY(int y)
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::CalculateTargetScale(int x, int y, int* scaledX, int* scaledY)
|
float Renderer::EFBToScaledXf(float x) const
|
||||||
|
{
|
||||||
|
return x * ((float)GetTargetWidth() / (float)EFB_WIDTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
float Renderer::EFBToScaledYf(float y) const
|
||||||
|
{
|
||||||
|
return y * ((float)GetTargetHeight() / (float)EFB_HEIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Renderer::CalculateTargetScale(int x, int y, int* scaledX, int* scaledY) const
|
||||||
{
|
{
|
||||||
if (g_ActiveConfig.iEFBScale == SCALE_AUTO || g_ActiveConfig.iEFBScale == SCALE_AUTO_INTEGRAL)
|
if (g_ActiveConfig.iEFBScale == SCALE_AUTO || g_ActiveConfig.iEFBScale == SCALE_AUTO_INTEGRAL)
|
||||||
{
|
{
|
||||||
@ -240,7 +250,7 @@ bool Renderer::CalculateTargetSize()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::ConvertStereoRectangle(const TargetRectangle& rc, TargetRectangle& leftRc,
|
void Renderer::ConvertStereoRectangle(const TargetRectangle& rc, TargetRectangle& leftRc,
|
||||||
TargetRectangle& rightRc)
|
TargetRectangle& rightRc) const
|
||||||
{
|
{
|
||||||
// Resize target to half its original size
|
// Resize target to half its original size
|
||||||
TargetRectangle drawRc = rc;
|
TargetRectangle drawRc = rc;
|
||||||
@ -300,7 +310,7 @@ void Renderer::DrawDebugText()
|
|||||||
if (g_ActiveConfig.bShowFPS || SConfig::GetInstance().m_ShowFrameCount)
|
if (g_ActiveConfig.bShowFPS || SConfig::GetInstance().m_ShowFrameCount)
|
||||||
{
|
{
|
||||||
if (g_ActiveConfig.bShowFPS)
|
if (g_ActiveConfig.bShowFPS)
|
||||||
final_cyan += StringFromFormat("FPS: %u", g_renderer->m_fps_counter.GetFPS());
|
final_cyan += StringFromFormat("FPS: %u", m_fps_counter.GetFPS());
|
||||||
|
|
||||||
if (g_ActiveConfig.bShowFPS && SConfig::GetInstance().m_ShowFrameCount)
|
if (g_ActiveConfig.bShowFPS && SConfig::GetInstance().m_ShowFrameCount)
|
||||||
final_cyan += " - ";
|
final_cyan += " - ";
|
||||||
@ -429,11 +439,11 @@ void Renderer::DrawDebugText()
|
|||||||
final_cyan += Statistics::ToStringProj();
|
final_cyan += Statistics::ToStringProj();
|
||||||
|
|
||||||
// and then the text
|
// and then the text
|
||||||
g_renderer->RenderText(final_cyan, 20, 20, 0xFF00FFFF);
|
RenderText(final_cyan, 20, 20, 0xFF00FFFF);
|
||||||
g_renderer->RenderText(final_yellow, 20, 20, 0xFFFFFF00);
|
RenderText(final_yellow, 20, 20, 0xFFFFFF00);
|
||||||
}
|
}
|
||||||
|
|
||||||
float Renderer::CalculateDrawAspectRatio(int target_width, int target_height)
|
float Renderer::CalculateDrawAspectRatio(int target_width, int target_height) const
|
||||||
{
|
{
|
||||||
// The dimensions are the sizes that are used to create the EFB/backbuffer textures, so
|
// The dimensions are the sizes that are used to create the EFB/backbuffer textures, so
|
||||||
// they should always be greater than zero.
|
// they should always be greater than zero.
|
||||||
@ -459,7 +469,8 @@ float Renderer::CalculateDrawAspectRatio(int target_width, int target_height)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::tuple<float, float> Renderer::ScaleToDisplayAspectRatio(const int width, const int height)
|
std::tuple<float, float> Renderer::ScaleToDisplayAspectRatio(const int width,
|
||||||
|
const int height) const
|
||||||
{
|
{
|
||||||
// Scale either the width or height depending the content aspect ratio.
|
// Scale either the width or height depending the content aspect ratio.
|
||||||
// This way we preserve as much resolution as possible when scaling.
|
// This way we preserve as much resolution as possible when scaling.
|
||||||
@ -474,7 +485,7 @@ std::tuple<float, float> Renderer::ScaleToDisplayAspectRatio(const int width, co
|
|||||||
return std::make_tuple(static_cast<float>(width) / ratio, static_cast<float>(height));
|
return std::make_tuple(static_cast<float>(width) / ratio, static_cast<float>(height));
|
||||||
}
|
}
|
||||||
|
|
||||||
TargetRectangle Renderer::CalculateFrameDumpDrawRectangle()
|
TargetRectangle Renderer::CalculateFrameDumpDrawRectangle() const
|
||||||
{
|
{
|
||||||
// No point including any borders in the frame dump image, since they'd have to be cropped anyway.
|
// No point including any borders in the frame dump image, since they'd have to be cropped anyway.
|
||||||
TargetRectangle rc;
|
TargetRectangle rc;
|
||||||
@ -712,10 +723,10 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, const
|
|||||||
u64 ticks, float Gamma)
|
u64 ticks, float Gamma)
|
||||||
{
|
{
|
||||||
// TODO: merge more generic parts into VideoCommon
|
// TODO: merge more generic parts into VideoCommon
|
||||||
g_renderer->SwapImpl(xfbAddr, fbWidth, fbStride, fbHeight, rc, ticks, Gamma);
|
SwapImpl(xfbAddr, fbWidth, fbStride, fbHeight, rc, ticks, Gamma);
|
||||||
|
|
||||||
if (m_xfb_written)
|
if (m_xfb_written)
|
||||||
g_renderer->m_fps_counter.Update();
|
m_fps_counter.Update();
|
||||||
|
|
||||||
frameCount++;
|
frameCount++;
|
||||||
GFX_DEBUGGER_PAUSE_AT(NEXT_FRAME, true);
|
GFX_DEBUGGER_PAUSE_AT(NEXT_FRAME, true);
|
||||||
|
@ -81,11 +81,11 @@ public:
|
|||||||
virtual void RestoreAPIState() {}
|
virtual void RestoreAPIState() {}
|
||||||
// Ideal internal resolution - determined by display resolution (automatic scaling) and/or a
|
// Ideal internal resolution - determined by display resolution (automatic scaling) and/or a
|
||||||
// multiple of the native EFB resolution
|
// multiple of the native EFB resolution
|
||||||
int GetTargetWidth() { return m_target_width; }
|
int GetTargetWidth() const { return m_target_width; }
|
||||||
int GetTargetHeight() { return m_target_height; }
|
int GetTargetHeight() const { return m_target_height; }
|
||||||
// Display resolution
|
// Display resolution
|
||||||
int GetBackbufferWidth() { return m_backbuffer_width; }
|
int GetBackbufferWidth() const { return m_backbuffer_width; }
|
||||||
int GetBackbufferHeight() { return m_backbuffer_height; }
|
int GetBackbufferHeight() const { return m_backbuffer_height; }
|
||||||
void SetWindowSize(int width, int height);
|
void SetWindowSize(int width, int height);
|
||||||
|
|
||||||
// EFB coordinate conversion functions
|
// EFB coordinate conversion functions
|
||||||
@ -93,23 +93,24 @@ public:
|
|||||||
// Use this to convert a whole native EFB rect to backbuffer coordinates
|
// Use this to convert a whole native EFB rect to backbuffer coordinates
|
||||||
virtual TargetRectangle ConvertEFBRectangle(const EFBRectangle& rc) = 0;
|
virtual TargetRectangle ConvertEFBRectangle(const EFBRectangle& rc) = 0;
|
||||||
|
|
||||||
const TargetRectangle& GetTargetRectangle() { return m_target_rectangle; }
|
const TargetRectangle& GetTargetRectangle() const { return m_target_rectangle; }
|
||||||
float CalculateDrawAspectRatio(int target_width, int target_height);
|
float CalculateDrawAspectRatio(int target_width, int target_height) const;
|
||||||
std::tuple<float, float> ScaleToDisplayAspectRatio(int width, int height);
|
std::tuple<float, float> ScaleToDisplayAspectRatio(int width, int height) const;
|
||||||
TargetRectangle CalculateFrameDumpDrawRectangle();
|
TargetRectangle CalculateFrameDumpDrawRectangle() const;
|
||||||
void UpdateDrawRectangle();
|
void UpdateDrawRectangle();
|
||||||
|
|
||||||
// Use this to convert a single target rectangle to two stereo rectangles
|
// Use this to convert a single target rectangle to two stereo rectangles
|
||||||
void ConvertStereoRectangle(const TargetRectangle& rc, TargetRectangle& leftRc,
|
void ConvertStereoRectangle(const TargetRectangle& rc, TargetRectangle& leftRc,
|
||||||
TargetRectangle& rightRc);
|
TargetRectangle& rightRc) const;
|
||||||
|
|
||||||
// Use this to upscale native EFB coordinates to IDEAL internal resolution
|
// Use this to upscale native EFB coordinates to IDEAL internal resolution
|
||||||
int EFBToScaledX(int x);
|
int EFBToScaledX(int x) const;
|
||||||
int EFBToScaledY(int y);
|
int EFBToScaledY(int y) const;
|
||||||
|
|
||||||
// Floating point versions of the above - only use them if really necessary
|
// Floating point versions of the above - only use them if really necessary
|
||||||
float EFBToScaledXf(float x) { return x * ((float)GetTargetWidth() / (float)EFB_WIDTH); }
|
float EFBToScaledXf(float x) const;
|
||||||
float EFBToScaledYf(float y) { return y * ((float)GetTargetHeight() / (float)EFB_HEIGHT); }
|
float EFBToScaledYf(float y) const;
|
||||||
|
|
||||||
// Random utilities
|
// Random utilities
|
||||||
void SaveScreenshot(const std::string& filename, bool wait_for_completion);
|
void SaveScreenshot(const std::string& filename, bool wait_for_completion);
|
||||||
void DrawDebugText();
|
void DrawDebugText();
|
||||||
@ -134,16 +135,16 @@ public:
|
|||||||
virtual void SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight,
|
virtual void SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight,
|
||||||
const EFBRectangle& rc, u64 ticks, float Gamma = 1.0f) = 0;
|
const EFBRectangle& rc, u64 ticks, float Gamma = 1.0f) = 0;
|
||||||
|
|
||||||
PEControl::PixelFormat GetPrevPixelFormat() { return m_prev_efb_format; }
|
PEControl::PixelFormat GetPrevPixelFormat() const { return m_prev_efb_format; }
|
||||||
void StorePixelFormat(PEControl::PixelFormat new_format) { m_prev_efb_format = new_format; }
|
void StorePixelFormat(PEControl::PixelFormat new_format) { m_prev_efb_format = new_format; }
|
||||||
PostProcessingShaderImplementation* GetPostProcessor() { return m_post_processor.get(); }
|
PostProcessingShaderImplementation* GetPostProcessor() const { return m_post_processor.get(); }
|
||||||
// Final surface changing
|
// Final surface changing
|
||||||
// This is called when the surface is resized (WX) or the window changes (Android).
|
// This is called when the surface is resized (WX) or the window changes (Android).
|
||||||
virtual void ChangeSurface(void* new_surface_handle) {}
|
virtual void ChangeSurface(void* new_surface_handle) {}
|
||||||
bool UseVertexDepthRange() const;
|
bool UseVertexDepthRange() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void CalculateTargetScale(int x, int y, int* scaledX, int* scaledY);
|
void CalculateTargetScale(int x, int y, int* scaledX, int* scaledY) const;
|
||||||
bool CalculateTargetSize();
|
bool CalculateTargetSize();
|
||||||
|
|
||||||
void CheckFifoRecording();
|
void CheckFifoRecording();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user