diff options
| author | 2019-05-27 19:37:46 -0300 | |
|---|---|---|
| committer | 2019-07-06 00:37:55 -0300 | |
| commit | 2e39c20da5701b8356bd1024f4f783c1db39a3fd (patch) | |
| tree | 5fff3454afc3294b0eaaf0339febee508030aafe /src | |
| parent | Merge pull request #2601 from FernandoS27/texture_cache (diff) | |
| download | yuzu-2e39c20da5701b8356bd1024f4f783c1db39a3fd.tar.gz yuzu-2e39c20da5701b8356bd1024f4f783c1db39a3fd.tar.xz yuzu-2e39c20da5701b8356bd1024f4f783c1db39a3fd.zip | |
gl_rasterizer: Move index buffer uploading to its own method
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 21 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 4 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index f45a3c5ef..e89f96aec 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -215,7 +215,15 @@ void RasterizerOpenGL::SetupVertexBuffer(GLuint vao) { | |||
| 215 | gpu.dirty_flags.vertex_array.reset(); | 215 | gpu.dirty_flags.vertex_array.reset(); |
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | DrawParameters RasterizerOpenGL::SetupDraw() { | 218 | GLintptr RasterizerOpenGL::SetupIndexBuffer() { |
| 219 | if (accelerate_draw != AccelDraw::Indexed) { | ||
| 220 | return 0; | ||
| 221 | } | ||
| 222 | const auto& regs = system.GPU().Maxwell3D().regs; | ||
| 223 | return buffer_cache.UploadMemory(regs.index_array.IndexStart(), CalculateIndexBufferSize()); | ||
| 224 | } | ||
| 225 | |||
| 226 | DrawParameters RasterizerOpenGL::SetupDraw(GLintptr index_buffer_offset) { | ||
| 219 | const auto& gpu = system.GPU().Maxwell3D(); | 227 | const auto& gpu = system.GPU().Maxwell3D(); |
| 220 | const auto& regs = gpu.regs; | 228 | const auto& regs = gpu.regs; |
| 221 | const bool is_indexed = accelerate_draw == AccelDraw::Indexed; | 229 | const bool is_indexed = accelerate_draw == AccelDraw::Indexed; |
| @@ -230,8 +238,7 @@ DrawParameters RasterizerOpenGL::SetupDraw() { | |||
| 230 | MICROPROFILE_SCOPE(OpenGL_Index); | 238 | MICROPROFILE_SCOPE(OpenGL_Index); |
| 231 | params.index_format = MaxwellToGL::IndexFormat(regs.index_array.format); | 239 | params.index_format = MaxwellToGL::IndexFormat(regs.index_array.format); |
| 232 | params.count = regs.index_array.count; | 240 | params.count = regs.index_array.count; |
| 233 | params.index_buffer_offset = | 241 | params.index_buffer_offset = index_buffer_offset; |
| 234 | buffer_cache.UploadMemory(regs.index_array.IndexStart(), CalculateIndexBufferSize()); | ||
| 235 | params.base_vertex = static_cast<GLint>(regs.vb_element_base); | 242 | params.base_vertex = static_cast<GLint>(regs.vb_element_base); |
| 236 | } else { | 243 | } else { |
| 237 | params.count = regs.vertex_buffer.count; | 244 | params.count = regs.vertex_buffer.count; |
| @@ -643,10 +650,12 @@ void RasterizerOpenGL::DrawArrays() { | |||
| 643 | gpu.dirty_flags.vertex_array.set(); | 650 | gpu.dirty_flags.vertex_array.set(); |
| 644 | } | 651 | } |
| 645 | 652 | ||
| 646 | const GLuint vao = SetupVertexFormat(); | 653 | const GLuint vertex_array = SetupVertexFormat(); |
| 647 | SetupVertexBuffer(vao); | 654 | |
| 655 | SetupVertexBuffer(vertex_array); | ||
| 656 | const GLintptr index_buffer_offset = SetupIndexBuffer(); | ||
| 648 | 657 | ||
| 649 | DrawParameters params = SetupDraw(); | 658 | DrawParameters params = SetupDraw(index_buffer_offset); |
| 650 | texture_cache.GuardSamplers(true); | 659 | texture_cache.GuardSamplers(true); |
| 651 | SetupShaders(params.primitive_mode); | 660 | SetupShaders(params.primitive_mode); |
| 652 | texture_cache.GuardSamplers(false); | 661 | texture_cache.GuardSamplers(false); |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index bf67e3a70..8f1757e25 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -220,7 +220,9 @@ private: | |||
| 220 | 220 | ||
| 221 | void SetupVertexBuffer(GLuint vao); | 221 | void SetupVertexBuffer(GLuint vao); |
| 222 | 222 | ||
| 223 | DrawParameters SetupDraw(); | 223 | GLintptr SetupIndexBuffer(); |
| 224 | |||
| 225 | DrawParameters SetupDraw(GLintptr index_buffer_offset); | ||
| 224 | 226 | ||
| 225 | void SetupShaders(GLenum primitive_mode); | 227 | void SetupShaders(GLenum primitive_mode); |
| 226 | 228 | ||