summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2015-12-20 00:34:56 +1000
committerStenzek <stenzek@gmail.com>2015-12-20 14:42:14 +1000
commita61fc372bbb538cba7bf43a6402f3036fb468810 (patch)
tree02d3994714326189f0f57c7fc21efb970aedb567 /Source/Core/VideoBackends
parent7b628c99ec4731ab606b8dd50ce3c3223d81b4eb (diff)
VideoCommon: Change PokeEFB to take a pointer rather than a vector
This saves allocating a vector for the pass-through path.
Diffstat (limited to 'Source/Core/VideoBackends')
-rw-r--r--Source/Core/VideoBackends/D3D/Render.cpp14
-rw-r--r--Source/Core/VideoBackends/D3D/Render.h2
-rw-r--r--Source/Core/VideoBackends/OGL/FramebufferManager.cpp6
-rw-r--r--Source/Core/VideoBackends/OGL/FramebufferManager.h2
-rw-r--r--Source/Core/VideoBackends/OGL/Render.cpp17
-rw-r--r--Source/Core/VideoBackends/OGL/Render.h2
6 files changed, 10 insertions, 33 deletions
diff --git a/Source/Core/VideoBackends/D3D/Render.cpp b/Source/Core/VideoBackends/D3D/Render.cpp
index 434742c5c1..e7a04ea6ba 100644
--- a/Source/Core/VideoBackends/D3D/Render.cpp
+++ b/Source/Core/VideoBackends/D3D/Render.cpp
@@ -474,21 +474,11 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data)
else if (alpha_read_mode.ReadMode == 1) return (ret | 0xFF000000); // GX_READ_FF
else /*if(alpha_read_mode.ReadMode == 0)*/ return (ret & 0x00FFFFFF); // GX_READ_00
}
- else // if (type == POKE_COLOR || type == POKE_Z)
- {
- std::vector<EfbPokeData> vector;
- EfbPokeData d;
- d.x = x;
- d.y = y;
- d.data = poke_data;
- vector.push_back(d);
- PokeEFB(type, vector);
- }
return 0;
}
-void Renderer::PokeEFB(EFBAccessType type, const std::vector<EfbPokeData>& data)
+void Renderer::PokeEFB(EFBAccessType type, const EfbPokeData* points, size_t num_points)
{
ResetAPIState();
@@ -513,7 +503,7 @@ void Renderer::PokeEFB(EFBAccessType type, const std::vector<EfbPokeData>& data)
FramebufferManager::GetEFBDepthTexture()->GetDSV());
}
- D3D::DrawEFBPokeQuads(type, data.data(), data.size());
+ D3D::DrawEFBPokeQuads(type, points, num_points);
if (type == POKE_Z)
{
diff --git a/Source/Core/VideoBackends/D3D/Render.h b/Source/Core/VideoBackends/D3D/Render.h
index a6da457be8..8e25419a5a 100644
--- a/Source/Core/VideoBackends/D3D/Render.h
+++ b/Source/Core/VideoBackends/D3D/Render.h
@@ -37,7 +37,7 @@ public:
void RenderText(const std::string& text, int left, int top, u32 color) override;
u32 AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) override;
- void PokeEFB(EFBAccessType type, const std::vector<EfbPokeData>& data) override;
+ void PokeEFB(EFBAccessType type, const EfbPokeData* points, size_t num_points) override;
u16 BBoxRead(int index) override;
void BBoxWrite(int index, u16 value) override;
diff --git a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp
index 6bde570d66..e826c031b0 100644
--- a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp
+++ b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp
@@ -643,7 +643,7 @@ void FramebufferManager::GetTargetSize(unsigned int *width, unsigned int *height
*height = m_targetHeight;
}
-void FramebufferManager::PokeEFB(EFBAccessType type, const std::vector<EfbPokeData>& data)
+void FramebufferManager::PokeEFB(EFBAccessType type, const EfbPokeData* points, size_t num_points)
{
g_renderer->ResetAPIState();
@@ -657,10 +657,10 @@ void FramebufferManager::PokeEFB(EFBAccessType type, const std::vector<EfbPokeDa
glBindVertexArray(m_EfbPokes_VAO);
glBindBuffer(GL_ARRAY_BUFFER, m_EfbPokes_VBO);
- glBufferData(GL_ARRAY_BUFFER, sizeof(EfbPokeData) * data.size(), data.data(), GL_STREAM_DRAW);
+ glBufferData(GL_ARRAY_BUFFER, sizeof(EfbPokeData) * num_points, points, GL_STREAM_DRAW);
m_EfbPokes.Bind();
glViewport(0, 0, m_targetWidth, m_targetHeight);
- glDrawArrays(GL_POINTS, 0, (GLsizei)data.size());
+ glDrawArrays(GL_POINTS, 0, (GLsizei)num_points);
g_renderer->RestoreAPIState();
diff --git a/Source/Core/VideoBackends/OGL/FramebufferManager.h b/Source/Core/VideoBackends/OGL/FramebufferManager.h
index a1d2895562..24978990eb 100644
--- a/Source/Core/VideoBackends/OGL/FramebufferManager.h
+++ b/Source/Core/VideoBackends/OGL/FramebufferManager.h
@@ -92,7 +92,7 @@ public:
// convtype=0 -> rgb8->rgba6, convtype=2 -> rgba6->rgb8
static void ReinterpretPixelData(unsigned int convtype);
- static void PokeEFB(EFBAccessType type, const std::vector<EfbPokeData>& data);
+ static void PokeEFB(EFBAccessType type, const EfbPokeData* points, size_t num_points);
private:
XFBSourceBase* CreateXFBSource(unsigned int target_width, unsigned int target_height, unsigned int layers) override;
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp
index 4720925304..11e028c5c6 100644
--- a/Source/Core/VideoBackends/OGL/Render.cpp
+++ b/Source/Core/VideoBackends/OGL/Render.cpp
@@ -944,19 +944,6 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data)
}
}
- case POKE_COLOR:
- case POKE_Z:
- {
- std::vector<EfbPokeData> vector;
- EfbPokeData d;
- d.x = x;
- d.y = y;
- d.data = poke_data;
- vector.push_back(d);
- PokeEFB(type, vector);
- break;
- }
-
default:
break;
}
@@ -964,9 +951,9 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data)
return 0;
}
-void Renderer::PokeEFB(EFBAccessType type, const std::vector<EfbPokeData>& data)
+void Renderer::PokeEFB(EFBAccessType type, const EfbPokeData* points, size_t num_points)
{
- FramebufferManager::PokeEFB(type, data);
+ FramebufferManager::PokeEFB(type, points, num_points);
}
u16 Renderer::BBoxRead(int index)
diff --git a/Source/Core/VideoBackends/OGL/Render.h b/Source/Core/VideoBackends/OGL/Render.h
index b939911cee..3eb64663ab 100644
--- a/Source/Core/VideoBackends/OGL/Render.h
+++ b/Source/Core/VideoBackends/OGL/Render.h
@@ -87,7 +87,7 @@ public:
void FlipImageData(u8 *data, int w, int h, int pixel_width = 3);
u32 AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) override;
- void PokeEFB(EFBAccessType type, const std::vector<EfbPokeData>& data) override;
+ void PokeEFB(EFBAccessType type, const EfbPokeData* points, size_t num_points) override;
u16 BBoxRead(int index) override;
void BBoxWrite(int index, u16 value) override;