Summary: | More than one Assistant Tool causes black rectangle to appear | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | weavermarquez0 |
Component: | Tool/Assistants | Assignee: | sh_zam <shzam> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | alvin, crazyjerick, dan.hetherington, ghevan, griffinvalley, Gvgeo, haddipehalwan, halla, info, jitterfactor, lonsspammail, nate, pinknalu, scottpetrovic, shzam, taekwondosteph, tamtamy.tymona, tysontanx |
Priority: | NOR | ||
Version: | 4.4.3-beta1 | ||
Target Milestone: | --- | ||
Platform: | Microsoft Windows | ||
OS: | Microsoft Windows | ||
Latest Commit: | https://invent.kde.org/graphics/krita/-/commit/da0fe44bb426e0acd96142a09682931208ab483d | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: |
Video of the Black Rectangle in Krita
Overlapping assistants visual glitch under Windows (OpenGL) |
Description
weavermarquez0
2018-12-10 01:37:12 UTC
This may be helpful: This bug seems to not occur at any zoom level when I disable Canvas Graphics Acceleration in Settings -> Configure Krita -> Display. However, if I enable Canvas Graphics Acceleration at all, regardless of OpenGL or Direct3D 11 via ANGLE, regardless of scaling mode, and regardless of if texture buffer is enabled, this bug continues to occur. Thank you for your patience. This happens with some graphics drivers: it's a bug in the way those drivers handle textures, and there isn't anything we can do :-( I have the same problem on two windows pc. Desktop -> Windows 10 version 1809 (OS Build 17763.316). Radeon RX 470 or intel HD Graphics 4600. (Tested multiple driver versions on rx470) Laptop ->Windows 10 version 1607 (OS Build 14393.2068). Intel HD Graphics 5500 Tried 3.3.3, 4.1.7.101(release), 4.1.7.101 (git 55a1810) and even v4.2.0-prealpha-334-g7b4550bd46 krita versions Laptop on linux works fine. I can test and an older nvidia card, but at this point I'm pretty sure is not a graphics driver issue. The black box takes the dimensions from the the assistants lines you control with points(but not the ones of the preview that follow the cursor), so when you move the third point in an impossible position the box disappears with the assistant's lines together. But even if you disable both "Show Painting Assistants" and "Show Assistants Previews" the box still remains, till you remove the assistant(or change size/move). The black box is on the second or rest assistants, even if you resize the first one(first assistant will always render correctly). The problem is obvious when zooming and panning, but it mainly depends with the size of the assistants(ellipses and fish eye only) that overlap on 'viewport'.Generally when the area is less than about a quarter of the size of the viewport both on x and y the problem will not occur. If it covers the whole dimension on x or y will always occur. And Between quarter and full coverage will randomly appear on certain sizes. OpenGL, Direct3D11 or texture buffer make no difference. ================================== Krita Version: 3.3.3 OS Information Build ABI: x86_64-little_endian-llp64 Build CPU: x86_64 CPU: x86_64 Kernel Type: winnt Kernel Version: 10.0.17763 Pretty Productname: Windows 10 (10.0) Product Type: windows Product Version: 10 OpenGL Info Vendor: ATI Technologies Inc. Renderer: "Radeon (TM) RX 470 Graphics" Version: "3.0.13544 Compatibility Profile Context 25.20.15011.1004" Shading language: 4.60 Requested format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 0, profile QSurfaceFormat::OpenGLContextProfile(CompatibilityProfile)) Current format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 1, profile QSurfaceFormat::OpenGLContextProfile(NoProfile)) Version: 3.0 Supports deprecated functions true is OpenGL ES: false QPA OpenGL Detection Info supportsDesktopGL: true supportsAngleD3D11: true isQtPreferAngle: false overridePreferAngle: false == log == createPlatformOpenGLContext QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 0, profile QSurfaceFormat::OpenGLContextProfile(CompatibilityProfile)) Basic wglCreateContext gives version 4.6 OpenGL 2.0 entry points available GPU features: QSet() supportedRenderers GpuDescription(vendorId=0x1002, deviceId=0x67df, subSysId=0x34111462, revision=207, driver: "aticfx64.dll", version=25.20.15011.1004, "Radeon (TM) RX 470 Graphics") renderer: QFlags(0x1|0x2|0x4|0x8|0x20) Qt: Using WGL and OpenGL from "opengl32.dll" create OpenGL: "ATI Technologies Inc.","Radeon (TM) RX 470 Graphics" default ContextFormat: v4.6 profile: QSurfaceFormat::OpenGLContextProfile(CompatibilityProfile) options: QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions),SampleBuffers, Extension-API present Extensions: 298 "choosePixelFormat Attributes: 0x2003 , 0x2027 , 0x2010 , 0x1 , 0x2001 , 0x1 , 0x2014 , 0x18 , 0x2011 , 0x1 , 0x2022 , 0x18 , 0x2013 , 0x202b , 0x201b , 0x8 , 0x2023 , 0x8 , 0x2041 , 0x0 , \n obtained px # 21 of 80 \n PIXELFORMATDESCRIPTOR dwFlags=0x8025 PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL PFD_SUPPORT_COMPOSITION PFD_DOUBLEBUFFER iPixelType=0 cColorBits=32 cRedBits=8 cRedShift=16 cGreenBits=8 cGreenShift=8 cBlueBits=8 cBlueShift=0 cDepthBits=24 cStencilBits=8 cAuxBuffers=4 iLayerType=0 cAlphaBits=8 cAlphaShift=24 " createContext Creating context version 3 . 0 3 attributes QWindowsGLContext 0x2beef70 ARB requested: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 0, profile QSurfaceFormat::OpenGLContextProfile(CompatibilityProfile)) obtained # 21 ARB QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 1, profile QSurfaceFormat::OpenGLContextProfile(NoProfile)) PIXELFORMATDESCRIPTOR dwFlags=0x8025 PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL PFD_SUPPORT_COMPOSITION PFD_DOUBLEBUFFER iPixelType=0 cColorBits=32 cRedBits=8 cRedShift=16 cGreenBits=8 cGreenShift=8 cBlueBits=8 cBlueShift=0 cDepthBits=24 cStencilBits=8 cAuxBuffers=4 iLayerType=0 cAlphaBits=8 cAlphaShift=24 swap interval: 0 default: ContextFormat: v4.6 profile: QSurfaceFormat::OpenGLContextProfile(CompatibilityProfile) options: QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions) HGLRC= 0x30000 createPlatformOpenGLContext QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 0, profile QSurfaceFormat::OpenGLContextProfile(CompatibilityProfile)) "choosePixelFormat Attributes: 0x2003 , 0x2027 , 0x2010 , 0x1 , 0x2001 , 0x1 , 0x2014 , 0x18 , 0x2011 , 0x1 , 0x2022 , 0x18 , 0x2013 , 0x202b , 0x201b , 0x8 , 0x2023 , 0x8 , 0x2041 , 0x0 , \n obtained px # 21 of 80 \n PIXELFORMATDESCRIPTOR dwFlags=0x8025 PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL PFD_SUPPORT_COMPOSITION PFD_DOUBLEBUFFER iPixelType=0 cColorBits=32 cRedBits=8 cRedShift=16 cGreenBits=8 cGreenShift=8 cBlueBits=8 cBlueShift=0 cDepthBits=24 cStencilBits=8 cAuxBuffers=4 iLayerType=0 cAlphaBits=8 cAlphaShift=24 " createContext Creating context version 3 . 0 3 attributes QWindowsGLContext 0x122ef10 ARB requested: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 0, profile QSurfaceFormat::OpenGLContextProfile(CompatibilityProfile)) obtained # 21 ARB QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 1, profile QSurfaceFormat::OpenGLContextProfile(NoProfile)) PIXELFORMATDESCRIPTOR dwFlags=0x8025 PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL PFD_SUPPORT_COMPOSITION PFD_DOUBLEBUFFER iPixelType=0 cColorBits=32 cRedBits=8 cRedShift=16 cGreenBits=8 cGreenShift=8 cBlueBits=8 cBlueShift=0 cDepthBits=24 cStencilBits=8 cAuxBuffers=4 iLayerType=0 cAlphaBits=8 cAlphaShift=24 swap interval: 0 default: ContextFormat: v4.6 profile: QSurfaceFormat::OpenGLContextProfile(CompatibilityProfile) options: QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions) HGLRC= 0x10001 == end log == ================================================================================ SESSION: 05 Mar 2019 08:38:49 +0200 Krita Version: 4.2.0-pre-alpha (git 7b4550b) Qt Version (compiled): 5.12.1 Version (loaded): 5.12.1 OS Information Build ABI: x86_64-little_endian-llp64 Build CPU: x86_64 CPU: x86_64 Kernel Type: winnt Kernel Version: 10.0.14393 Pretty Productname: Windows 10 (10.0) Product Type: windows Product Version: 10 OpenGL Info Vendor: "Google Inc." Renderer: "ANGLE (Intel(R) HD Graphics 5500 Direct3D11 vs_5_0 ps_5_0)" Version: "OpenGL ES 3.0 (ANGLE 2.1.0.57ea533f79a7)" Shading language: "OpenGL ES GLSL ES 3.00 (ANGLE 2.1.0.57ea533f79a7)" Requested format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) Current format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::NoProfile) Version: 3.0 Supports deprecated functions false is OpenGL ES: true QPA OpenGL Detection Info supportsDesktopGL: true supportsAngleD3D11: true isQtPreferAngle: false == log == Supported renderers: QFlags(0x2|0x4) Surface format preference list: * QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) QSurfaceFormat::OpenGLES * QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) QSurfaceFormat::OpenGL * QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 16, greenBufferSize 16, blueBufferSize 16, alphaBufferSize 16, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::scRGBColorSpace, profile QSurfaceFormat::CompatibilityProfile) QSurfaceFormat::OpenGLES * QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::bt2020PQColorSpace, profile QSurfaceFormat::CompatibilityProfile) QSurfaceFormat::OpenGLES * QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 16, greenBufferSize 16, blueBufferSize 16, alphaBufferSize 16, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::scRGBColorSpace, profile QSurfaceFormat::CompatibilityProfile) QSurfaceFormat::OpenGL * QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 10, greenBufferSize 10, blueBufferSize 10, alphaBufferSize 2, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::bt2020PQColorSpace, profile QSurfaceFormat::CompatibilityProfile) QSurfaceFormat::OpenGL Probing format... QSurfaceFormat::DefaultColorSpace QSurfaceFormat::OpenGLES Found format: QSurfaceFormat(version 3.0, options QFlags<QSurfaceFormat::FormatOption>(DeprecatedFunctions), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 8, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 0, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::CompatibilityProfile) QSurfaceFormat::OpenGLES == end log == Hardware Information GPU Acceleration: auto Memory: 4010 Mb Number of Cores: 4 Swap Location: C:/Users/Name/AppData/Local/Temp 05 Mar 2019 08:39:09 +0200: Created image "Unnamed", 1600 * 1200 pixels, 300 dpi. Color model: 8-bit integer/channel RGB/Alpha (sRGB-elle-V2-srgbtrc.icc). Layers: 2 Tested and a Windows 7 system with an Intel HD Graphics 530, has the same problem. The only common that these 3 computers have is windows installation and CPU from intel (I tested the radeon GPU, with the integrated GPU disabled). The original reporter says it is caused by the graphics card "This bug seems to not occur at any zoom level when I *disable Canvas Graphics Acceleration*". This statement means it IS the graphics card that is causing it. The other reporter (gvgo) didn't seem to test it with their graphics card turned off. Canvas Graphics Acceleration has to be turned completely off to test this. Intel HD cards are graphics cards. Krita can't really fix the graphics card drivers. I would recommend trying to update the graphics card drivers if you want a better chance to use them with Krita. I reopen the bug, cause it seems to be closed on false assumption. Although the reason might be true. First, yes, I was reporting about Canvas Graphics Acceleration ON. The report had already the information that without works, I tried to give you more information. Probably should said that from start, although I included the options that don't help. But if you read my report you can see that my main GPU is an amd Radeon RX 470. And the last thing I said is, that I made sure that it was the only one running. (Wanted to make sure that the intel,that I use concurrently in the system for other reasons, was not used for krita) On top of that I tested 3 intel GPUs, trying to find out a common cause. About updates: I specifically said that I tried multiple drivers for Radeon. But for the intel only my main system runs on latest driver(not beta). The others probably are older. ============ NEW INFO I tested and an nvidia 750ti, it appears to behave differently, and would not notice if you were not aware of. The error is more difficult to reproduce and will fix soon after couple frames. It appears about twice in every ten tries, and in worse case, will go away the moment you stop zooming(continuous zoom). =========== Even if it is the GPU drivers. On the most popular platform, with the 2 of the 3 GPU makers having the issue, and the third also showing signs of it, shouldn't you try to change the problem? Of course I understand that with only 2 people reporting the problem, would not want to waste your time on this problem. But It seems wrong to me, saying that you resolved the bug, when there is obviously a problem. I think the issue is that we don't know what to do about this. We don't have this hardware...and we don't have access to the source code to see what is going on with the graphics card drivers. We also aren't getting many reports at all about this. It doesn't appear to be a common issue with graphics cards. Have you tried contacting one of these companies to see if they can help you? Do they even care about this issue? I don't know what exactly more info you would need at this point. I can give now the answer, without even asking. "We are very sorry you having this problem, be sure that we will look into your issue. You are valuable customer for us. Your best experience with our products, is our priority." As for you other question, for a small program, without any money, and no big names using it, I'm pretty sure you know the answer already. Beside jokes. Despite waiting that answer, I started searching more into that problem to complete the report for AMD. Only to find out that intel had it too. Nvidia test didn't convinced me, that there is not a problem in the program. As for contacting the companies, I'm not gonna lie to any report. I will also have to include this bug report that I clearly state that is a problem in all the GPUs. Despite this, if you wish, for me to sent a report as an individual, will do. If this would be, a way to help you. As for the no reports, it drove me crazy till today. Although I can see how most people would continue with one assistant, it breaks curverlinear perspective. But now, with nvidia behavior, knowing that most power users have nvidia, I can at least partially explain it. Coupled with the good possibility that they move to an other program and don't bother. Personally I'm not an artist, only recently picked it as a hobby, and just now move on from paper. For now I turn off acceleration, also preparing for dual boot anyway. I didn't report the issue to solve my problem. But merely to help you guys have a complete picture of the problems. I don't expect to solve the issue, as nvidia shows that driver plays a role. The best I was expecting was that you could found a workaround. Not having the hardware is a little difficult, I guess nobody uses windows... (Not sure how that would work). Close source is a problem, but I would never suggest to dig into drivers too. In the end, knowing how difficult this problem is to solve. Me too, would agree, is better to focus on more important bugs, and issues. But closing it, feels wrong. Dear Bug Submitter, This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information. For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging If you have already provided the requested information, please mark the bug as REPORTED so that the KDE team knows that the bug is ready to be confirmed. Thank you for helping us make KDE software even better for everyone! With only 2 people reporting, it looks like, this bug will remain unfixed. With all the info provided, and no more specific info asked, instead of changing to REPORTED again, will change the status from NEEDSINFO - WAITINGFORINFO to NEEDSINFO - BACKTRACE. No, it should be in the reported state. I don't know how to fix the issue, and the problem probably is in the way Qt paints QImage's using opengl. Just for the record. I can reproduce this issue easily on an intel graphics card Apple laptop. latest master(9894a2026969) Qt 5.12.3, mojave 10.14.6 If ivan can reproduce it, we should set it to confirmed. I just ran into this after watching a video on the Assistant tool. I decided to try out the tool by setting up guides for isometric drawing but the screen kept going black on zoom it. It appears to happen with the ends of assistants are all out of view and you are zooming in between them. I had assistants drawn over the entire canvas so if I zoomed in more than 50% it would all go black. After testing a much smaller assistants you can tell it is only if you are zooming in between endpoints. *** Bug 419068 has been marked as a duplicate of this bug. *** *** Bug 422157 has been marked as a duplicate of this bug. *** *** Bug 379746 has been marked as a duplicate of this bug. *** *** Bug 425998 has been marked as a duplicate of this bug. *** I just wanted to confirm that I too experience this bug. It's quite an unpleasant one as I cannot zoom past 100% when working on perspective drawings utilizing the vanishing point and fish-eye point assistants. My experience is exactly as described by the original poster for this bug. I have the latest drivers installed for my graphics card: AMD Radeon HD 7800 (2GB RAM) - driver date: 9/9/20 (vers.20.9.1); Win 10; Wacom Intuos 3 (model PTZ-630). I've never experienced this with the vanishing point ruler, but I've intermittently experienced it with small parallel rulers, and very often with fisheye perspective rulers I also have the same experience, using an NVIDIA GeForce GTX 950 on Windows 10 (10.0.19041 Build 19041), graphics driver version 27.21.14.5638. Created attachment 135110 [details]
Video of the Black Rectangle in Krita
I have been using the assistant tool in Krita 4.4.2. and the video show that on a .kra with only one layer, the screen behaves as normal; however, once assistants are placed, the screen immediately turns black or a black rectangle appears.
When using ANGLE as the renderer, overlapping Concentric Ellipse Assistants cause black rectangle to appear when zoom-in. Tested under Windows 10 X64 (20H2). How to trigger: 1. Make sure the renderer is ANGLE (DX11) 2. Create a new document 3. Choose Assistant Tool, create 2 Concentric Ellipse Assistant, put one of them inside another so they are overlapping. 4. Zoom in (in my case, 565.7%) I was unable to reproduce this bug under OpenGL, so I guess it is ANGLE specific. Tested with Krita 4.4.3 beta 1 (In reply to Tyson Tan from comment #23) > When using ANGLE as the renderer, overlapping Concentric Ellipse Assistants > cause black rectangle to appear when zoom-in. Tested under Windows 10 X64 > (20H2). > > How to trigger: > 1. Make sure the renderer is ANGLE (DX11) > 2. Create a new document > 3. Choose Assistant Tool, create 2 Concentric Ellipse Assistant, put one of > them inside another so they are overlapping. > 4. Zoom in (in my case, 565.7%) > > I was unable to reproduce this bug under OpenGL, so I guess it is ANGLE > specific. A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/826 Git commit 6d0b2be469d062f5a7077da8849bb4dcfbeda165 by Sharaf Zaman. Committed on 28/04/2021 at 16:59. Pushed by rempt into branch 'master'. Bugfix: Artifact with more than one active assitant Problem: With more than one assitants active on canvas, often on devices with high resolution the Pixmap cache would fill up immediately. This would internally trigger glDeleteTexture right after the first pixmap is rendered and when turn for second pixmap is due, it would get assigned the same name as the previously generated (which is a correct behavior! but it only seems to happen with some drivers). With same name as previous one Qt doesn't render it (see QOpenGL2PaintEngineExPrivate::updateTexture). Workaround: Because of this name clash, we workaround this Qt bug by increasing the cache size, so the new textures don't immediately delete the previous ones and take their names. Ideally, this should be fixed inside Qt. Devices with this problem: + Android + ChromeOS (mesa) + Windows (ANGLE) M +7 -4 libs/ui/opengl/kis_opengl.cpp https://invent.kde.org/graphics/krita/commit/6d0b2be469d062f5a7077da8849bb4dcfbeda165 Thank you, Sharaf! :D Git commit b57713c24454c78d1a54e3f8fa0526484ba819d3 by Sharaf Zaman. Committed on 08/06/2021 at 07:21. Pushed by szaman into branch 'krita/4.3'. Bugfix: Artifact with more than one active assitant Problem: With more than one assitants active on canvas, often on devices with high resolution the Pixmap cache would fill up immediately. This would internally trigger glDeleteTexture right after the first pixmap is rendered and when turn for second pixmap is due, it would get assigned the same name as the previously generated (which is a correct behavior! but it only seems to happen with some drivers). With same name as previous one Qt doesn't render it (see QOpenGL2PaintEngineExPrivate::updateTexture). Workaround: Because of this name clash, we workaround this Qt bug by increasing the cache size, so the new textures don't immediately delete the previous ones and take their names. Ideally, this should be fixed inside Qt. Devices with this problem: + Android + ChromeOS (mesa) + Windows (ANGLE) M +7 -4 libs/ui/opengl/kis_opengl.cpp https://invent.kde.org/graphics/krita/commit/b57713c24454c78d1a54e3f8fa0526484ba819d3 Git commit 01514224cc4558d94c67eb2b8e9feeabec8ab89c by Sharaf Zaman. Committed on 08/06/2021 at 07:26. Pushed by szaman into branch 'krita/4.4.5'. Bugfix: Artifact with more than one active assitant Problem: With more than one assitants active on canvas, often on devices with high resolution the Pixmap cache would fill up immediately. This would internally trigger glDeleteTexture right after the first pixmap is rendered and when turn for second pixmap is due, it would get assigned the same name as the previously generated (which is a correct behavior! but it only seems to happen with some drivers). With same name as previous one Qt doesn't render it (see QOpenGL2PaintEngineExPrivate::updateTexture). Workaround: Because of this name clash, we workaround this Qt bug by increasing the cache size, so the new textures don't immediately delete the previous ones and take their names. Ideally, this should be fixed inside Qt. Devices with this problem: + Android + ChromeOS (mesa) + Windows (ANGLE) M +7 -4 libs/ui/opengl/kis_opengl.cpp https://invent.kde.org/graphics/krita/commit/01514224cc4558d94c67eb2b8e9feeabec8ab89c Im getting this bug on macOS M1. Removing the if for NVIDIA and openGLES (from comment 29 patch) fixes the bug for this chip, however may I ask if this can be applied to all opengl aware devices we support? > --- Comment #30 from vanyossi <ghevan@gmail.com> ---
> Im getting this bug on macOS M1. Removing the if for NVIDIA and openGLES (from
> comment 29 patch) fixes the bug for this chip, however may I ask if this can be
> applied to all opengl aware devices we support?
Hello!
I think it should be safe enough to apply this to all OpenGL devices,
even though DesktopGL (seems like only Linux now) isn't a victim to the
bug.
I did some rudimentary testing on Linux and everything seems fine.
Does it still happen on any system? Can anyone confirm? I tried to use two overlapping concentric ellipses, switched to Freehand brush, zoomed in, but no black rectangles appear (I tested on Linux Mint with OpenGL on). Created attachment 149150 [details] Overlapping assistants visual glitch under Windows (OpenGL) I tested it against the issues reported in bug 422157. It still happens, but only when I set the canvas acceralation mode to OpenGL. D3D11 ANGLE mode works fine. Tested under Windows 10 21H2, AMD FirePro W5100 + latest Adrenalin driver. An ICC profile is assisned to the screen on system and in Krita. Yes, I can reproduce on Windows + Intel OpenGL driver too. A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/1537 Git commit 5b52e54952280f49d89476d2711a746005a67462 by Dmitry Kazakov, on behalf of Sharaf Zaman. Committed on 05/09/2022 at 14:54. Pushed by dkazakov into branch 'master'. Make the OpenGL workaround available for all platforms M +10 -0 libs/ui/dialogs/kis_dlg_preferences.cc M +65 -49 libs/ui/forms/wdgdisplaysettings.ui M +3 -5 libs/ui/opengl/kis_opengl.cpp https://invent.kde.org/graphics/krita/commit/5b52e54952280f49d89476d2711a746005a67462 Git commit 3d605d4ff24fc994cc605873f11bec43e6506a0a by Sharaf Zaman. Committed on 05/09/2022 at 17:26. Pushed by szaman into branch 'krita/5.1'. Make the OpenGL workaround available for all platforms (cherry picked from commit 5b52e54952280f49d89476d2711a746005a67462) M +10 -0 libs/ui/dialogs/kis_dlg_preferences.cc M +17 -1 libs/ui/forms/wdgdisplaysettings.ui M +3 -5 libs/ui/opengl/kis_opengl.cpp https://invent.kde.org/graphics/krita/commit/3d605d4ff24fc994cc605873f11bec43e6506a0a Git commit f63892259d518eadf436aa1c88d7adef45daa003 by Dmitry Kazakov. Committed on 20/09/2022 at 08:37. Pushed by dkazakov into branch 'krita/5.1'. Make the OpenGL workaround available for all platforms M +1 -1 libs/image/kis_paint_device.cc M +15 -4 plugins/dockers/layerdocker/LayerBox.cpp M +5 -1 plugins/dockers/layerdocker/LayerBox.h https://invent.kde.org/graphics/krita/commit/f63892259d518eadf436aa1c88d7adef45daa003 Git commit b520fe1920ed3e5d1caab994d814bf8bd1b07650 by Dmitry Kazakov, on behalf of Maciej Jesionowski. Committed on 15/11/2023 at 15:42. Pushed by dkazakov into branch 'master'. Draw assistants directly on the canvas Change the way assistants are rendered on the canvas. Instead of drawing the assistants into a pixmap, storing the pixmap in QPixmapCache, and then painting the pixmap onto the canvas, this patch skips the intermediate pixmap and draws the assistants directly on the canvas. The QPixmapCache method is prone to a bug where the pixmap is evicted from the cache before the rendering is complete, resulting in a black rectangle. Also this method performs very poorly with hardware acceleration, because we're doing a costly texture upload, texture sampling, and blending. The performance is especially bad when assistants take a large portion of the screen when zoomed in and the canvas is zoomed or rotated. Changes in this patch: - Add a menu option in Display settings to toggle assistants drawing mode - Use direct drawing mode by default - Remove the workaround detection for NVIDIA The old options are left for troubleshooting, but it's unlikely anyone would find them to work better on the current GPU hardware. Related: bug 361709 M +4 -0 libs/ui/KisDecorationsManager.cpp M +26 -10 libs/ui/dialogs/kis_dlg_preferences.cc M +49 -17 libs/ui/forms/wdgdisplaysettings.ui M +15 -0 libs/ui/kis_config.cc M +8 -0 libs/ui/kis_config.h M +1 -1 libs/ui/kis_painting_assistant.h M +15 -2 libs/ui/kis_painting_assistants_decoration.cpp M +1 -0 libs/ui/kis_painting_assistants_decoration.h M +9 -20 libs/ui/opengl/kis_opengl.cpp M +0 -5 libs/ui/opengl/kis_opengl.h https://invent.kde.org/graphics/krita/-/commit/b520fe1920ed3e5d1caab994d814bf8bd1b07650 Git commit da0fe44bb426e0acd96142a09682931208ab483d by Dmitry Kazakov, on behalf of Maciej Jesionowski. Committed on 15/11/2023 at 15:43. Pushed by dkazakov into branch 'krita/5.2'. Draw assistants directly on the canvas Change the way assistants are rendered on the canvas. Instead of drawing the assistants into a pixmap, storing the pixmap in QPixmapCache, and then painting the pixmap onto the canvas, this patch skips the intermediate pixmap and draws the assistants directly on the canvas. The QPixmapCache method is prone to a bug where the pixmap is evicted from the cache before the rendering is complete, resulting in a black rectangle. Also this method performs very poorly with hardware acceleration, because we're doing a costly texture upload, texture sampling, and blending. The performance is especially bad when assistants take a large portion of the screen when zoomed in and the canvas is zoomed or rotated. Changes in this patch: - Add a menu option in Display settings to toggle assistants drawing mode - Use direct drawing mode by default - Remove the workaround detection for NVIDIA The old options are left for troubleshooting, but it's unlikely anyone would find them to work better on the current GPU hardware. Related: bug 361709 M +4 -0 libs/ui/KisDecorationsManager.cpp M +26 -10 libs/ui/dialogs/kis_dlg_preferences.cc M +49 -17 libs/ui/forms/wdgdisplaysettings.ui M +15 -0 libs/ui/kis_config.cc M +8 -0 libs/ui/kis_config.h M +1 -1 libs/ui/kis_painting_assistant.h M +15 -2 libs/ui/kis_painting_assistants_decoration.cpp M +1 -0 libs/ui/kis_painting_assistants_decoration.h M +9 -20 libs/ui/opengl/kis_opengl.cpp M +0 -5 libs/ui/opengl/kis_opengl.h https://invent.kde.org/graphics/krita/-/commit/da0fe44bb426e0acd96142a09682931208ab483d |