View Issue Details

IDProjectCategoryView StatusLast Update
0000489Cinelerra-GG[All Projects] Bugpublic2020-09-01 22:40
ReporterAndrew-R Assigned Togoodguy  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version2020-04 
Target VersionFixed in Version 
Summary0000489: DRI3 still doesn't work
DescriptionNow, I have TWO GPUS in my motherboard, both driven by nouveau (open-source nvidia driver):
Motherboard:
MSI MS-7693/970A-G46 (MS-7693), BIOS V2.8 01/08/2016

just glxinfo
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: nouveau (0x10de)
    Device: NV92 (0x606)
    Version: 20.3.0
    Accelerated: yes
    Video memory: 373MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 3.3
    Max compat profile version: 3.3
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL vendor string: nouveau
OpenGL renderer string: NV92
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.3.0-devel (git-f7e7cf637e)
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:

and DRI_PRIME=1 glxinfo

Extended renderer info (GLX_MESA_query_renderer):
    Vendor: nouveau (0x10de)
    Device: NVA3 (0xca3)
    Version: 20.3.0
    Accelerated: yes
    Video memory: 1023MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 3.3
    Max compat profile version: 3.3
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL vendor string: nouveau
OpenGL renderer string: NVA3
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.3.0-devel (git-f7e7cf637e)
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

second card is even faster (after I reclock it manually, automatic reclocking not supported yet):

echo 0f > /sys/kernel/debug/dri/1/pstate
cat /sys/kernel/debug/dri/1/pstate
03: core 135 MHz shader 270 MHz memory 135 MHz
07: core 405 MHz shader 810 MHz memory 324 MHz
0f: core 550 MHz shader 1340 MHz memory 790 MHz AC DC *
AC: core 549 MHz shader 1339 MHz memory 789 MHz

Now, for using it like this (with just DRI_PRIME=1 env. variable) I used this xorg.conf minifile, setting DRI3 globally:

cat /etc/X11/xorg.conf.d/20-nouveau.conf
Section "Device"
    Identifier "Card0"
    Driver "nouveau"
    Option "PageFlip" "1"
    #Option "AccelMethod" "glamor"
    Option "DRI" "3"

and for X server 1.19.7 it works ....

But CinGG set to openGL output produces errors by default (without my dri3_disable patch):

cin
Cinelerra Infinity - built: Aug 10 2020 09:35:00
git://git.cinelerra-gg.org/goodguy/cinelerra.git
(c) 2006-2019 Heroine Virtual Ltd. by Adam Williams
2007-2020 mods for Cinelerra-GG by W.P.Morrow aka goodguy
Cinelerra is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. There is absolutely no warranty for Cinelerra.

RenderFarmClient::main_loop: client started
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glCopyTexSubImage2D(missing readbuffer, format=GL_RGBA)
Mesa: 1 similar GL_INVALID_OPERATION errors
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glCopyTexSubImage2D(missing readbuffer, format=GL_RGBA)
Mesa: 1 similar GL_INVALID_OPERATION errors
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glCopyTexSubImage2D(missing readbuffer, format=GL_RGBA)
Mesa: 1 similar GL_INVALID_OPERATION errors
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glCopyTexSubImage2D(missing readbuffer, format=GL_RGBA)
Mesa: 1 similar GL_INVALID_OPERATION errors
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glCopyTexSubImage2D(missing readbuffer, format=GL_RGBA)
Mesa: 1 similar GL_INVALID_OPERATION errors
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glCopyTexSubImage2D(missing readbuffer, format=GL_RGBA)
Mesa: 1 similar GL_INVALID_OPERATION errors
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glCopyTexSubImage2D(missing readbuffer, format=GL_RGBA)
Mesa: 1 similar GL_INVALID_OPERATION errors
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glCopyTexSubImage2D(missing readbuffer, format=GL_RGBA)
Mesa: 26 similar GL_INVALID_OPERATION errors
Mesa: User error: GL_INVALID_OPERATION in glReadPixels(no readbuffer)
Mesa: User error: GL_INVALID_OPERATION in glDeleteShader
Session time: 0:00:50
Cpu time: user: 0:00:24.507 sys: 0:00:02.600

Image in compositor become garbled IF I set fade below 100% (so, no direct path is used)

BUT if I disable dri3 it works!

LIBGL_DRI3_DISABLE=1 cin
Cinelerra Infinity - built: Aug 10 2020 09:35:00
git://git.cinelerra-gg.org/goodguy/cinelerra.git
(c) 2006-2019 Heroine Virtual Ltd. by Adam Williams
2007-2020 mods for Cinelerra-GG by W.P.Morrow aka goodguy
Cinelerra is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. There is absolutely no warranty for Cinelerra.

RenderFarmClient::main_loop: client started
Mesa: User error: GL_INVALID_OPERATION in glDeleteShader
Session time: 0:00:44
Cpu time: user: 0:00:27.944 sys: 0:00:02.467

It also works with DRI_PRIME=1, so dumb disable probably not very good idea ....

Now I also have VDPAU acceleration (via VP3 co-processor on videocard, card itself being 02:00.0 VGA compatible controller: NVIDIA Corporation GT215 [GeForce GT 240] (rev a2) (prog-if 00 [VGA controller]) , but CinGG upset card too much ...most likely bug in mesa/nouveau - something to track separately ....

Mplayer works, but may hang on quit, same for ffmpeg.
Steps To ReproduceSet your X server to use DRI3 (with opensource drivers)
Launch CinGG
Load video
set video output to openGL
set fade below 100% (92% for example)
Hit play

Image become garbled/ not updating.
TagsNo tags attached.

Activities

PhyllisSmith

PhyllisSmith

2020-09-01 22:40

manager   ~0003961

People taking advantage of DRI3, can do a search to find this patch which will fix there problem.
PhyllisSmith

PhyllisSmith

2020-08-30 04:18

manager   ~0003949

GG says there are small gains for getting dri3 going so this may be useful as Andrew indicated so hopefully they can search the BTs and find this patch.
Andrew-R

Andrew-R

2020-08-30 01:54

reporter   ~0003948

Ok, I'll keep this patch for local use (May be other users or you can benchmark dri2 vs dri3 for single card?)
PhyllisSmith

PhyllisSmith

2020-08-30 01:20

manager   ~0003947

OK, gg had time to look at this in detail today. He thinks the following:
- it is only applicable to AMD systems that have Radeon drivers
- he thinks that a fix would be better to go into xconfig
- maybe it works correctly in some situations or it gets fixed, and then it would unnecessarily restrict cinelerra for that user

In conclusion, he does not want to apply this patch at this time. Perhaps there is some misunderstanding and if so, please let us know.
Andrew-R

Andrew-R

2020-08-26 19:52

reporter   ~0003944

patch

diff --git a/cinelerra-5.1/cinelerra/main.C b/cinelerra-5.1/cinelerra/main.C
index 0def64b7..3f123b98 100644
--- a/cinelerra-5.1/cinelerra/main.C
+++ b/cinelerra-5.1/cinelerra/main.C
@@ -168,6 +168,15 @@ int main(int argc, char *argv[])
        batch_path[0] = 0;
        deamon_path[0] = 0;
        Units::init();
+
+ /* disable dri3 for non_prime, it broke hw effects on nouveau as of 26-08-2020 */
+ const char *prime = getenv("DRI_PRIME");
+ if (prime)
+ setenv("LIBGL_DRI3_DISABLE", "0", 1);
+ else
+ setenv("LIBGL_DRI3_DISABLE", "1", 1);
+
+
        const char *lang = getenv("LANGUAGE");
        if( lang ) lang = cstrdup(lang);
        File::init_cin_path();

dri3_disable_cin51-new.diff (637 bytes)
diff --git a/cinelerra-5.1/cinelerra/main.C b/cinelerra-5.1/cinelerra/main.C
index 0def64b7..3f123b98 100644
--- a/cinelerra-5.1/cinelerra/main.C
+++ b/cinelerra-5.1/cinelerra/main.C
@@ -168,6 +168,15 @@ int main(int argc, char *argv[])
 	batch_path[0] = 0;
 	deamon_path[0] = 0;
 	Units::init();
+
+       /* disable dri3 for non_prime, it broke hw effects on nouveau as of 26-08-2020 */
+	const char *prime = getenv("DRI_PRIME");
+	if (prime)
+	setenv("LIBGL_DRI3_DISABLE", "0", 1);
+	else
+	setenv("LIBGL_DRI3_DISABLE", "1", 1);
+
+
 	const char *lang = getenv("LANGUAGE");
 	if( lang ) lang = cstrdup(lang);
 	File::init_cin_path();

Issue History

Date Modified Username Field Change
2020-08-13 03:37 Andrew-R New Issue
2020-08-18 21:57 PhyllisSmith Assigned To => goodguy
2020-08-18 21:57 PhyllisSmith Status new => assigned
2020-08-26 19:52 Andrew-R File Added: dri3_disable_cin51-new.diff
2020-08-26 19:52 Andrew-R Note Added: 0003944
2020-08-30 01:20 PhyllisSmith Note Added: 0003947
2020-08-30 01:20 PhyllisSmith Status assigned => feedback
2020-08-30 01:54 Andrew-R Note Added: 0003948
2020-08-30 01:54 Andrew-R Status feedback => assigned
2020-08-30 04:18 PhyllisSmith Note Added: 0003949
2020-08-30 04:19 PhyllisSmith Status assigned => resolved
2020-08-30 04:19 PhyllisSmith Resolution open => fixed
2020-09-01 22:40 PhyllisSmith Status resolved => closed
2020-09-01 22:40 PhyllisSmith Note Added: 0003961