Просмотр исходного кода

Merge pull request #9943 from vonchenplus/gentleman

video_core: Fix inline_index and draw_texture error
liamwhite 3 лет назад
Родитель
Сommit
638044820d

+ 1 - 0
src/video_core/engines/draw_manager.cpp

@@ -164,6 +164,7 @@ void DrawManager::DrawEnd(u32 instance_count, bool force_draw) {
         draw_state.index_buffer.count =
             static_cast<u32>(draw_state.inline_index_draw_indexes.size() / 4);
         draw_state.index_buffer.format = Maxwell3D::Regs::IndexFormat::UnsignedInt;
+        maxwell3d->dirty.flags[VideoCommon::Dirty::IndexBuffer] = true;
         ProcessDraw(true, instance_count);
         draw_state.inline_index_draw_indexes.clear();
         break;

+ 1 - 2
src/video_core/renderer_opengl/blit_image.cpp

@@ -22,7 +22,7 @@ BlitImageHelper::~BlitImageHelper() = default;
 void BlitImageHelper::BlitColor(GLuint dst_framebuffer, GLuint src_image_view, GLuint src_sampler,
                                 const Region2D& dst_region, const Region2D& src_region,
                                 const Extent3D& src_size) {
-    glEnable(GL_CULL_FACE);
+    glDisable(GL_CULL_FACE);
     glDisable(GL_COLOR_LOGIC_OP);
     glDisable(GL_DEPTH_TEST);
     glDisable(GL_STENCIL_TEST);
@@ -31,7 +31,6 @@ void BlitImageHelper::BlitColor(GLuint dst_framebuffer, GLuint src_image_view, G
     glDisable(GL_ALPHA_TEST);
     glDisablei(GL_BLEND, 0);
     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-    glCullFace(GL_BACK);
     glFrontFace(GL_CW);
     glColorMaski(0, GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
     glDepthRangeIndexed(0, 0.0, 0.0);

+ 1 - 0
src/video_core/renderer_opengl/gl_rasterizer.cpp

@@ -357,6 +357,7 @@ void RasterizerOpenGL::DrawTexture() {
                                         .y = static_cast<s32>(draw_texture_state.src_y1)}};
         blit_image.BlitColor(texture_cache.GetFramebuffer()->Handle(), texture.DefaultHandle(),
                              sampler->Handle(), dst_region, src_region, texture.size);
+        state_tracker.InvalidateState();
     }
 
     ++num_queued_commands;