Hello community,

here is the log from the commit of package virglrenderer for openSUSE:Factory 
checked in at 2020-02-19 12:39:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virglrenderer (Old)
 and      /work/SRC/openSUSE:Factory/.virglrenderer.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "virglrenderer"

Wed Feb 19 12:39:12 2020 rev:11 rq:773741 version:0.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/virglrenderer/virglrenderer.changes      
2020-02-09 21:02:26.527354391 +0100
+++ /work/SRC/openSUSE:Factory/.virglrenderer.new.26092/virglrenderer.changes   
2020-02-19 12:39:12.943471586 +0100
@@ -1,0 +2,11 @@
+Wed Feb 12 14:47:31 UTC 2020 - Bruce Rogers <brog...@suse.com>
+
+- Update package to 0.8.2
+  Release is all bug fixes it seems. It includes these patches in
+  the release tarball:
+  vrend-Don-t-free-resource-struct-in-_resource_alloca.patch
+  vrend-Don-t-try-launching-a-grid-if-no-CS-is-availab.patch
+  vrend-Use-the-original-context-to-delete-objects.patch
+  vrend-Don-t-switch-to-ctx0-when-deleting-ctx0.patch
+
+-------------------------------------------------------------------

Old:
----
  virglrenderer-virglrenderer-0.8.1.tar.gz
  vrend-Don-t-free-resource-struct-in-_resource_alloca.patch
  vrend-Don-t-switch-to-ctx0-when-deleting-ctx0.patch
  vrend-Don-t-try-launching-a-grid-if-no-CS-is-availab.patch
  vrend-Use-the-original-context-to-delete-objects.patch

New:
----
  virglrenderer-virglrenderer-0.8.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ virglrenderer.spec ++++++
--- /var/tmp/diff_new_pack.XGAyu8/_old  2020-02-19 12:39:14.123473859 +0100
+++ /var/tmp/diff_new_pack.XGAyu8/_new  2020-02-19 12:39:14.123473859 +0100
@@ -18,7 +18,7 @@
 
 %define         libname lib%{name}1
 Name:           virglrenderer
-Version:        0.8.1
+Version:        0.8.2
 Release:        0
 Summary:        Virgl Rendering library
 License:        MIT
@@ -26,11 +26,6 @@
 URL:            https://virgil3d.github.io/
 Source0:        
https://gitlab.freedesktop.org/virgl/%{name}/-/archive/%{name}-%{version}/%{name}-%{name}-%{version}.tar.gz
 
-Patch0001:      vrend-Don-t-free-resource-struct-in-_resource_alloca.patch
-Patch0002:      vrend-Don-t-try-launching-a-grid-if-no-CS-is-availab.patch
-Patch0003:      vrend-Use-the-original-context-to-delete-objects.patch
-Patch0004:      vrend-Don-t-switch-to-ctx0-when-deleting-ctx0.patch
-
 BuildRequires:  Mesa-devel
 BuildRequires:  meson >= 0.46
 BuildRequires:  pkgconfig >= 0.9.0
@@ -76,10 +71,6 @@
 
 %prep
 %setup -q -n %{name}-%{name}-%{version}
-%patch0001 -p1
-%patch0002 -p1
-%patch0003 -p1
-%patch0004 -p1
 
 %build
 %meson

++++++ virglrenderer-virglrenderer-0.8.1.tar.gz -> 
virglrenderer-virglrenderer-0.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/ci/.gitlab-ci.yml 
new/virglrenderer-virglrenderer-0.8.2/ci/.gitlab-ci.yml
--- old/virglrenderer-virglrenderer-0.8.1/ci/.gitlab-ci.yml     2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/ci/.gitlab-ci.yml     2020-02-12 
07:29:08.000000000 +0100
@@ -60,8 +60,8 @@
     paths:
       - results/
 
-make check:
-  stage: sanity test
+
+.tests_base: 
   services:
     - docker:dind
   before_script:
@@ -72,7 +72,7 @@
              $RD_CONFIG
              -v $PWD:/virglrenderer
              $CI_REGISTRY_IMAGE@$DOCKER_IMAGE_DIGEST
-             bash -c "/virglrenderer/ci/run_tests.sh --make-check"
+             bash -c "/virglrenderer/ci/run_tests.sh $TEST_SUITE"
     - echo -e "\nThat's all folks\n"
   only:
     - branches
@@ -85,54 +85,28 @@
     paths:
       - results/
 
-make check meson:
+.make_check_base:
   stage: sanity test
-  services:
-    - docker:dind
-  before_script:
-    *docker-setup
-  script:
-    - docker run
-             --ulimit core=99999999999:99999999999
-             $RD_CONFIG
-             -v $PWD:/virglrenderer
-             $CI_REGISTRY_IMAGE@$DOCKER_IMAGE_DIGEST
-             bash -c "/virglrenderer/ci/run_tests.sh --make-check-meson"
-    - echo -e "\nThat's all folks\n"
-  only:
-    - branches
-    - tags
-    - merge_requests
-    - schedules
+  extends: .tests_base
 
-  artifacts:
-    when: always
-    paths:
-      - results/
+make check:
+  variables:
+    TEST_SUITE: '--make-check'
+  extends: .make_check_base
+
+mesa check meson:
+  variables:
+    TEST_SUITE: '--make-check-meson'
+  extends: .make_check_base
 
+make check clang-fuzzer:
+  variables:
+    TEST_SUITE: '--make-check-clang-fuzzer'
+  extends: .make_check_base
 
 .tests:
   stage: test
-  services:
-    - docker:dind
-  before_script:
-    *docker-setup
-  script:
-    - docker run
-             --ulimit core=99999999999:99999999999
-             $RD_CONFIG
-             -v $PWD:/virglrenderer
-             $CI_REGISTRY_IMAGE@$DOCKER_IMAGE_DIGEST
-             bash -c "/virglrenderer/ci/run_tests.sh $TEST_SUITE"
-    - echo -e "\nThat's all folks\n"
-  only:
-    - merge_requests
-    - schedules
-
-  artifacts:
-    when: always
-    paths:
-      - results/
+  extends: .tests_base
 
 piglit - gl host:
   variables:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/ci/run_tests.sh 
new/virglrenderer-virglrenderer-0.8.2/ci/run_tests.sh
--- old/virglrenderer-virglrenderer-0.8.1/ci/run_tests.sh       2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/ci/run_tests.sh       2020-02-12 
07:29:08.000000000 +0100
@@ -6,6 +6,10 @@
 
    use_meson=$1
 
+   if [ "x$2" = "xfuzzer" ]; then
+      use_clang_fuzzer=1
+   fi
+
    # Let .gitlab-ci or local ci runner set
    # desired thread count
    NUM_THREADS=${NUM_THREADS:-$(expr $(expr $(nproc) / 8) + 1)}
@@ -56,7 +60,12 @@
       if [ -d "$VIRGL_PATH" ]; then
           cd $VIRGL_PATH
           mkdir build
-          meson build/ -Dprefix=/usr/local -Ddebug=true -Dtests=true 
--fatal-meson-warnings
+          if [ "x$use_clang_fuzzer" = "x1" ]; then
+             CC=clang-8
+             FUZZER=-Dfuzzer=true
+          fi
+
+          meson build/ -Dprefix=/usr/local -Ddebug=true -Dtests=true 
--fatal-meson-warnings $FUZZER
           ninja -C build -j$NUM_THREADS install
       fi
    fi
@@ -91,6 +100,19 @@
    )
 }
 
+run_make_check_clang_fuzzer()
+{
+   run_setup meson fuzzer
+   (
+      cd /virglrenderer/build
+      mkdir -p /virglrenderer/results/make_check_clang_fuzzer
+      VRENDTEST_USE_EGL_SURFACELESS=1 ninja -j$NUM_THREADS test
+      RET=$?
+      cp /virglrenderer/build/meson-logs/testlog.txt 
/virglrenderer/results/make_check_clang_fuzzer/
+      return $RET
+   )
+}
+
 run_deqp()
 {
    run_setup meson
@@ -170,6 +192,10 @@
          run_make_check_meson
          ;;
 
+         --make-check-clang-fuzzer)
+         run_make_check_clang_fuzzer
+         ;;
+
          --deqp-gl-gl-tests)
          run_deqp gl gl
          ;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/configure.ac 
new/virglrenderer-virglrenderer-0.8.2/configure.ac
--- old/virglrenderer-virglrenderer-0.8.1/configure.ac  2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/configure.ac  2020-02-12 
07:29:08.000000000 +0100
@@ -2,7 +2,7 @@
 
 AC_PREREQ([2.60])
 
-AC_INIT([virglrenderer], [0.8.1],
+AC_INIT([virglrenderer], [0.8.2],
     [virglrenderer-de...@lists.freedesktop.org])
 
 AC_ARG_ENABLE(autotools,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/meson.build 
new/virglrenderer-virglrenderer-0.8.2/meson.build
--- old/virglrenderer-virglrenderer-0.8.1/meson.build   2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/meson.build   2020-02-12 
07:29:08.000000000 +0100
@@ -23,7 +23,7 @@
 
 project(
    'virglrenderer', 'c',
-   version: '0.8.1',
+   version: '0.8.2',
    license : 'MIT',
    meson_version : '>= 0.46',
    default_options : ['buildtype=release', 'b_ndebug=if-release',
@@ -40,7 +40,7 @@
 
 binary_age    = 1
 interface_age = 4
-revision      = 1
+revision      = 2
 
 cc = meson.get_compiler('c')
 
@@ -60,6 +60,16 @@
    endif
 endforeach
 
+flags = [
+   '-fvisibility=hidden',
+]
+
+foreach f : flags
+   if cc.has_argument(f)
+      add_project_arguments(f, language : 'c')
+   endif
+endforeach
+
 prog_python = import('python').find_installation('python3')
 
 libdrm_dep = dependency('libdrm', version : '>=2.4.50')
@@ -86,9 +96,11 @@
    conf_data.set('HAVE_EVENTFD_H', 1)
 endif
 
-debug_enabled = get_option('debug')
+if cc.has_header('sys/select.h')
+  conf_data.set('HAVE_SYS_SELECT_H', 1)
+endif
 
-if debug_enabled
+if get_option('buildtype') == 'debug'
    add_global_arguments('-DDEBUG=1', language : 'c')
 endif
 
@@ -113,7 +125,7 @@
 endif
 
 if with_egl
-   if cc.has_header('epoxy/egl.h') and 
epoxy_dep.get_pkgconfig_variable('epoxy_has_egl') == '1'
+   if cc.has_header('epoxy/egl.h', dependencies: epoxy_dep) and 
epoxy_dep.get_pkgconfig_variable('epoxy_has_egl') == '1'
       gbm_dep = dependency('gbm', version: '>= ' + _gbm_ver, required: 
require_egl)
       have_egl = gbm_dep.found()
       conf_data.set('HAVE_EPOXY_EGL_H', 1)
@@ -124,7 +136,7 @@
 endif
 
 if with_glx
-   if cc.has_header('epoxy/glx.h') and 
epoxy_dep.get_pkgconfig_variable('epoxy_has_glx') == '1'
+   if cc.has_header('epoxy/glx.h', dependencies: epoxy_dep) and 
epoxy_dep.get_pkgconfig_variable('epoxy_has_glx') == '1'
       glx_dep = dependency('x11', required: require_glx)
       have_glx = glx_dep.found()
       conf_data.set('HAVE_EPOXY_GLX_H', 1)
@@ -183,7 +195,6 @@
 lines += ''
 lines += 'gbm_alloc: ' + (with_gbm_allocation ? 'yes' : 'no' )
 lines += ''
-lines += 'debug:     ' + (debug_enabled ? 'yes' : 'no' )
 lines += 'tests:     ' + (with_tests ? 'yes' : 'no' )
 lines += 'fuzzer:    ' + (with_fuzzer ? 'yes' : 'no' )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/src/Makefile.am 
new/virglrenderer-virglrenderer-0.8.2/src/Makefile.am
--- old/virglrenderer-virglrenderer-0.8.1/src/Makefile.am       2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/Makefile.am       2020-02-12 
07:29:08.000000000 +0100
@@ -57,7 +57,7 @@
 lib_LTLIBRARIES = libvirglrenderer.la
 noinst_LTLIBRARIES = libvrend.la
 
-GM_LDFLAGS = -Wl,-Bsymbolic -version-number 1:4:1 -no-undefined
+GM_LDFLAGS = -Wl,-Bsymbolic -version-number 1:4:2 -no-undefined
 
 libvirglrenderer_la_SOURCES = virglrenderer.c
 libvirglrenderer_ladir = $(libdir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/src/meson.build 
new/virglrenderer-virglrenderer-0.8.2/src/meson.build
--- old/virglrenderer-virglrenderer-0.8.1/src/meson.build       2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/meson.build       2020-02-12 
07:29:08.000000000 +0100
@@ -23,12 +23,10 @@
 
 subdir('gallium')
 
-virglrenderer_sources = [
+virgl_sources = [
    'iov.c',
    'virgl_hw.h',
    'virgl_protocol.h',
-   'virglrenderer.c',
-   'virglrenderer.h',
    'vrend_blitter.c',
    'vrend_blitter.h',
    'vrend_debug.c',
@@ -48,19 +46,25 @@
    'vrend_util.h',
 ]
 
-virglrenderer_egl_sources = [
+virglrenderer_sources = [
+   'virglrenderer.c',
+   'virglrenderer.h',
+]
+
+
+virgl_egl_sources = [
    'virgl_gbm.c',
    'virgl_gbm.h',
    'virgl_egl_context.c',
    'virgl_egl.h',
 ]
 
-virglrenderer_glx_sources = [
+virgl_glx_sources = [
    'virgl_glx_context.c',
    'virgl_glx.h',
 ]
 
-virglrenderer_depends = [
+virgl_depends = [
    gallium_dep,
    epoxy_dep,
    libdrm_dep,
@@ -69,35 +73,48 @@
 ]
 
 if have_egl
-   virglrenderer_sources += virglrenderer_egl_sources
-   virglrenderer_depends += [gbm_dep]
+   virgl_sources += virgl_egl_sources
+   virgl_depends += [gbm_dep]
 endif
 
 if have_glx
-   virglrenderer_sources += virglrenderer_glx_sources
-   virglrenderer_depends += [glx_dep]
+   virgl_sources += virgl_glx_sources
+   virgl_depends += [glx_dep]
 endif
 
+libvirgl = static_library(
+   'virgl',
+   virgl_sources,
+   include_directories: [inc_gallium, inc_configuration],
+   dependencies : virgl_depends,
+)
+
+libvirgl_inc = [
+   inc_gallium,
+   inc_configuration,
+   include_directories('.')
+]
+
+libvirgl_dep = declare_dependency(
+   link_with: libvirgl,
+   include_directories: libvirgl_inc
+)
+
 libvirglrenderer = shared_library(
    'virglrenderer',
    virglrenderer_sources,
    include_directories: [inc_gallium, inc_configuration],
-   dependencies : virglrenderer_depends,
+   dependencies : [virgl_depends, libvirgl_dep],
    version : binary_age.to_string() + '.'
              + interface_age.to_string() + '.'
              + revision.to_string(),
    install : true
 )
 
-libvirglrenderer_inc = [
-   inc_gallium,
-   inc_configuration,
-   include_directories('.')
-]
-
 libvirglrenderer_dep = declare_dependency(
    link_with: libvirglrenderer,
-   include_directories: libvirglrenderer_inc
+   include_directories: libvirgl_inc,
+   dependencies : [libvirgl_dep, gallium_dep]
 )
 
 install_headers('virglrenderer.h', subdir : 'virgl')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/src/virgl_egl.h 
new/virglrenderer-virglrenderer-0.8.2/src/virgl_egl.h
--- old/virglrenderer-virglrenderer-0.8.1/src/virgl_egl.h       2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/virgl_egl.h       2020-02-12 
07:29:08.000000000 +0100
@@ -58,5 +58,6 @@
 void virgl_egl_image_destroy(struct virgl_egl *egl, void *image);
 
 bool virgl_egl_need_fence_and_wait_external(struct virgl_egl *egl);
-void virgl_egl_fence_and_wait_external(struct virgl_egl *egl);
+void *virgl_egl_fence(struct virgl_egl *egl);
+void virgl_egl_wait_fence(struct virgl_egl *egl, void* fence);
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/src/virgl_egl_context.c 
new/virglrenderer-virglrenderer-0.8.2/src/virgl_egl_context.c
--- old/virglrenderer-virglrenderer-0.8.1/src/virgl_egl_context.c       
2019-12-20 11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/virgl_egl_context.c       
2020-02-12 07:29:08.000000000 +0100
@@ -518,21 +518,25 @@
    return (egl && egl->need_fence_and_wait_external);
 }
 
-void virgl_egl_fence_and_wait_external(struct virgl_egl *egl)
+void *virgl_egl_fence(struct virgl_egl *egl)
 {
    const EGLint attrib_list[] = {EGL_SYNC_CONDITION_KHR,
                                  EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR,
                                  EGL_NONE};
-   EGLSyncKHR fence;
+   EGLSyncKHR fence = EGL_NO_SYNC_KHR;
 
    if (!egl || !has_bit(egl->extension_bits, EGL_KHR_FENCE_SYNC)) {
-      return;
+      return (void *)fence;
    }
 
-   fence = eglCreateSyncKHR(egl->egl_display, EGL_SYNC_FENCE_KHR, attrib_list);
-   if (fence != EGL_NO_SYNC_KHR) {
-      eglClientWaitSyncKHR(egl->egl_display, fence,
-                           EGL_SYNC_FLUSH_COMMANDS_BIT_KHR, EGL_FOREVER_KHR);
-      eglDestroySyncKHR(egl->egl_display, fence);
-   }
+   return (void *)eglCreateSyncKHR(egl->egl_display, EGL_SYNC_FENCE_KHR, 
attrib_list);
+}
+
+void virgl_egl_wait_fence(struct virgl_egl *egl, void* sync)
+{
+   EGLSyncKHR fence = (EGLSyncKHR) sync;
+   if (fence == EGL_NO_SYNC_KHR)
+      return;
+   eglWaitSyncKHR(egl->egl_display, fence, 0);
+   eglDestroySyncKHR(egl->egl_display, fence);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/src/virgl_hw.h 
new/virglrenderer-virglrenderer-0.8.2/src/virgl_hw.h
--- old/virglrenderer-virglrenderer-0.8.1/src/virgl_hw.h        2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/virgl_hw.h        2020-02-12 
07:29:08.000000000 +0100
@@ -555,7 +555,8 @@
         VIRGL_ERROR_GL_ANY_SAMPLES_PASSED,
         VIRGL_ERROR_CTX_ILLEGAL_FORMAT,
         VIRGL_ERROR_CTX_ILLEGAL_SAMPLER_VIEW_TARGET,
-        VIRGL_ERROR_CTX_TRANSFER_IOV_BOUNDS
+        VIRGL_ERROR_CTX_TRANSFER_IOV_BOUNDS,
+        VIRGL_ERROR_CTX_ILLEGAL_DUAL_SRC_BLEND
 };
 
 #define VIRGL_RESOURCE_Y_0_TOP (1 << 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/src/vrend_blitter.c 
new/virglrenderer-virglrenderer-0.8.2/src/vrend_blitter.c
--- old/virglrenderer-virglrenderer-0.8.1/src/vrend_blitter.c   2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/vrend_blitter.c   2020-02-12 
07:29:08.000000000 +0100
@@ -451,7 +451,7 @@
    struct virgl_gl_ctx_param ctx_params;
    int i;
    if (blit_ctx->initialised) {
-      vrend_clicbs->make_current(blit_ctx->gl_context);
+      vrend_sync_make_current(blit_ctx->gl_context);
       return;
    }
 
@@ -467,7 +467,7 @@
          break;
    }
 
-   vrend_clicbs->make_current(blit_ctx->gl_context);
+   vrend_sync_make_current(blit_ctx->gl_context);
    glGenVertexArrays(1, &blit_ctx->vaoid);
    glGenFramebuffers(1, &blit_ctx->fb_id);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/src/vrend_blitter.h 
new/virglrenderer-virglrenderer-0.8.2/src/vrend_blitter.h
--- old/virglrenderer-virglrenderer-0.8.1/src/vrend_blitter.h   2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/vrend_blitter.h   2020-02-12 
07:29:08.000000000 +0100
@@ -27,17 +27,17 @@
 /* shaders for blitting */
 
 #define HEADER_GL                               \
-   "// Blitter\n"                               \
    "#version 130\n"                             \
+   "// Blitter\n"                               \
 
 #define HEADER_GLES                             \
-   "// Blitter\n"                               \
    "#version 310 es\n"                          \
+   "// Blitter\n"                               \
    "precision mediump float;\n"                 \
 
 #define HEADER_GLES_MS_ARRAY                             \
-   "// Blitter\n"                               \
    "#version 310 es\n"                          \
+   "// Blitter\n"                               \
    "#extension GL_OES_texture_storage_multisample_2d_array: require\n" \
    "precision mediump float;\n"                 \
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/src/vrend_debug.c 
new/virglrenderer-virglrenderer-0.8.2/src/vrend_debug.c
--- old/virglrenderer-virglrenderer-0.8.1/src/vrend_debug.c     2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/vrend_debug.c     2020-02-12 
07:29:08.000000000 +0100
@@ -123,6 +123,7 @@
    {"gles", dbg_gles, "GLES host specific debug"},
    {"all", dbg_all, "Enable all debugging output"},
    {"guestallow", dbg_allow_guest_override, "Allow the guest to override the 
debug flags"},
+   {"khr", dbg_khr, "Enable debug via KHR_debug extension"},
    DEBUG_NAMED_VALUE_END
 };
 
@@ -174,7 +175,34 @@
 static
 void vrend_default_debug_callback(const char *fmt, va_list va)
 {
-   vfprintf(stderr, fmt, va);
+   static FILE* fp = NULL;
+   if (NULL == fp) {
+      const char* log = getenv("VIRGL_LOG_FILE");
+      if (log) {
+         char *log_prefix = strdup(log);
+         char *log_suffix = strstr(log_prefix, "%PID%");
+         if (log_suffix) {
+            *log_suffix = 0;
+            log_suffix += 5;
+            int len = strlen(log) + 32;
+            char *name = malloc(len);
+            snprintf(name, len, "%s%d%s", log_prefix, getpid(), log_suffix);
+            fp = fopen(name, "a");
+            free(name);
+         } else {
+            fp = fopen(log, "a");
+         }
+         free(log_prefix);
+         if (NULL == fp) {
+            fprintf(stderr, "Can't open %s\n", log);
+            fp = stderr;
+         }
+      } else {
+            fp = stderr;
+      }
+   }
+   vfprintf(fp, fmt, va);
+   fflush(fp);
 }
 
 static virgl_debug_callback_type debug_callback = vrend_default_debug_callback;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/src/vrend_debug.h 
new/virglrenderer-virglrenderer-0.8.2/src/vrend_debug.h
--- old/virglrenderer-virglrenderer-0.8.1/src/vrend_debug.h     2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/vrend_debug.h     2020-02-12 
07:29:08.000000000 +0100
@@ -49,6 +49,7 @@
    dbg_all = (1 << 13) - 1,
    dbg_allow_guest_override = 1 << 16,
    dbg_feature_use = 1 << 17,
+   dbg_khr = 1 << 18,
 };
 
 const char *vrend_get_comand_name(enum virgl_context_cmd cmd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/src/vrend_decode.c 
new/virglrenderer-virglrenderer-0.8.2/src/vrend_decode.c
--- old/virglrenderer-virglrenderer-0.8.1/src/vrend_decode.c    2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/vrend_decode.c    2020-02-12 
07:29:08.000000000 +0100
@@ -1192,7 +1192,8 @@
    if (num_abo < 1)
       return 0;
 
-   if (start_slot > PIPE_MAX_HW_ATOMIC_BUFFERS ||
+   if (num_abo > PIPE_MAX_HW_ATOMIC_BUFFERS ||
+       start_slot > PIPE_MAX_HW_ATOMIC_BUFFERS ||
        start_slot > PIPE_MAX_HW_ATOMIC_BUFFERS - num_abo)
       return EINVAL;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/src/vrend_renderer.c 
new/virglrenderer-virglrenderer-0.8.2/src/vrend_renderer.c
--- old/virglrenderer-virglrenderer-0.8.1/src/vrend_renderer.c  2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/vrend_renderer.c  2020-02-12 
07:29:08.000000000 +0100
@@ -67,9 +67,6 @@
 extern struct virgl_egl *egl;
 #endif
 
-/* debugging via KHR_debug extension */
-int vrend_use_debug_cb = 0;
-
 int use_context = CONTEXT_NONE;
 
 static const uint32_t fake_occlusion_query_samples_passed_default = 1024;
@@ -681,7 +678,21 @@
 
 static inline bool vrend_format_can_sample(enum virgl_formats format)
 {
-   return tex_conv_table[format].bindings & VIRGL_BIND_SAMPLER_VIEW;
+   if (tex_conv_table[format].bindings & VIRGL_BIND_SAMPLER_VIEW)
+      return true;
+
+#ifdef ENABLE_GBM_ALLOCATION
+   uint32_t gbm_format = 0;
+   if (virgl_gbm_convert_format(&format, &gbm_format))
+      return false;
+
+   if (!gbm || !gbm->device || !gbm_format)
+      return false;
+
+   return gbm_device_is_format_supported(gbm->device, gbm_format, 
GBM_BO_USE_TEXTURING);
+#else
+   return false;
+#endif
 }
 
 static inline bool vrend_format_can_readback(enum virgl_formats format)
@@ -1514,12 +1525,18 @@
 
    if (fs->sel->sinfo.num_outputs > 1) {
       if (util_blend_state_is_dual(&ctx->sub->blend_state, 0)) {
-         glBindFragDataLocationIndexed(prog_id, 0, 0, "fsout_c0");
-         glBindFragDataLocationIndexed(prog_id, 0, 1, "fsout_c1");
+         if (has_feature(feat_dual_src_blend)) {
+            glBindFragDataLocationIndexed(prog_id, 0, 0, "fsout_c0");
+            glBindFragDataLocationIndexed(prog_id, 0, 1, "fsout_c1");
+         } else {
+            report_context_error(ctx, VIRGL_ERROR_CTX_ILLEGAL_DUAL_SRC_BLEND, 
0);
+         }
          sprog->dual_src_linked = true;
       } else {
-         glBindFragDataLocationIndexed(prog_id, 0, 0, "fsout_c0");
-         glBindFragDataLocationIndexed(prog_id, 1, 0, "fsout_c1");
+         if (has_feature(feat_dual_src_blend)) {
+            glBindFragDataLocationIndexed(prog_id, 0, 0, "fsout_c0");
+            glBindFragDataLocationIndexed(prog_id, 1, 0, "fsout_c1");
+         }
          sprog->dual_src_linked = false;
       }
    } else
@@ -1704,6 +1721,13 @@
    FREE(obj);
 }
 
+void vrend_sync_make_current(virgl_gl_context gl_cxt) {
+   GLsync sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
+   vrend_clicbs->make_current(gl_cxt);
+   glWaitSync(sync, 0, GL_TIMEOUT_IGNORED);
+   glDeleteSync(sync);
+}
+
 int vrend_create_surface(struct vrend_context *ctx,
                          uint32_t handle,
                          uint32_t res_handle, uint32_t format,
@@ -4604,6 +4628,13 @@
       }
       ctx->sub->shader_dirty = true;
    }
+
+   if (!ctx->sub->prog) {
+      vrend_printf("%s: Skipping compute shader execution due to missing 
shaders: %s\n",
+                   __func__, ctx->debug_name);
+      return;
+   }
+
    vrend_use_program(ctx, ctx->sub->prog->id);
 
    vrend_draw_bind_ubo_shader(ctx, PIPE_SHADER_COMPUTE, 0);
@@ -4831,7 +4862,9 @@
       else
          glDisable(GL_BLEND);
 
-      if (state->rt[0].colormask != ctx->sub->hw_blend_state.rt[0].colormask) {
+      if (state->rt[0].colormask != ctx->sub->hw_blend_state.rt[0].colormask ||
+          (ctx->sub->hw_blend_state.independent_blend_enable &&
+           !state->independent_blend_enable)) {
          int i;
          for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++)
             ctx->sub->hw_blend_state.rt[i].colormask = state->rt[i].colormask;
@@ -5752,7 +5785,7 @@
    gl_ver = epoxy_gl_version();
 
    /* enable error output as early as possible */
-   if (vrend_use_debug_cb && epoxy_has_gl_extension("GL_KHR_debug")) {
+   if (vrend_debug(NULL, dbg_khr) && epoxy_has_gl_extension("GL_KHR_debug")) {
       glDebugMessageCallback(vrend_debug_cb, NULL);
       glEnable(GL_DEBUG_OUTPUT);
       glDisable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
@@ -5866,6 +5899,8 @@
    int i, j;
    struct vrend_streamout_object *obj, *tmp;
 
+   vrend_clicbs->make_current(sub->gl_context);
+
    if (sub->fb_id)
       glDeleteFramebuffers(1, &sub->fb_id);
 
@@ -5961,9 +5996,10 @@
 
    vrend_set_index_buffer(ctx, 0, 0, 0);
 
-   vrend_renderer_force_ctx_0();
    LIST_FOR_EACH_ENTRY_SAFE(sub, tmp, &ctx->sub_ctxs, head)
       vrend_destroy_sub_context(sub);
+   if(ctx->ctx_id)
+      vrend_renderer_force_ctx_0();
 
    vrend_object_fini_ctx_table(ctx->res_hash);
 
@@ -6455,11 +6491,11 @@
           has_feature(feat_egl_image_storage)) {
          glEGLImageTargetTexStorageEXT(gr->target, (GLeglImageOES) image_oes, 
NULL);
       } else if (has_feature(feat_egl_image_external)) {
+         gr->storage_bits &= ~VREND_STORAGE_GL_IMMUTABLE;
          glEGLImageTargetTexture2DOES(gr->target, (GLeglImageOES) image_oes);
       } else {
          vrend_printf( "missing GL_OES_EGL_image_external extensions\n");
          glBindTexture(gr->target, 0);
-         FREE(gr);
          return EINVAL;
       }
    } else {
@@ -6470,7 +6506,6 @@
       if (internalformat == 0) {
          vrend_printf("unknown format is %d\n", pr->format);
          glBindTexture(gr->target, 0);
-         FREE(gt);
          return EINVAL;
       }
 
@@ -7377,6 +7412,10 @@
    if (actually_invert && !has_feature(feat_mesa_invert))
       separate_invert = true;
 
+#ifdef PIPE_ARCH_BIG_ENDIAN
+   glPixelStorei(GL_PACK_SWAP_BYTES, 1);
+#endif
+
    if (num_iovs > 1 || separate_invert)
       need_temp = 1;
 
@@ -7491,6 +7530,11 @@
    if (!need_temp && row_stride)
       glPixelStorei(GL_PACK_ROW_LENGTH, 0);
    glPixelStorei(GL_PACK_ALIGNMENT, 4);
+
+#ifdef PIPE_ARCH_BIG_ENDIAN
+   glPixelStorei(GL_PACK_SWAP_BYTES, 0);
+#endif
+
    if (need_temp) {
       write_transfer_data(&res->base, iov, num_iovs, data,
                           info->stride, info->box, info->level, info->offset,
@@ -7612,12 +7656,13 @@
       return EINVAL;
    }
 
+   void* fence = NULL;
 #ifdef HAVE_EPOXY_EGL_H
    // Some platforms require extra synchronization before transferring.
    if (transfer_mode == VIRGL_TRANSFER_FROM_HOST) {
       if (virgl_egl_need_fence_and_wait_external(egl)) {
          vrend_hw_switch_context(ctx, true);
-         virgl_egl_fence_and_wait_external(egl);
+         fence = virgl_egl_fence(egl);
       }
    }
 #endif
@@ -7654,6 +7699,7 @@
 
    if (info->context0) {
       vrend_renderer_force_ctx_0();
+      virgl_egl_wait_fence(egl, fence);
       ctx = NULL;
    }
 
@@ -8276,10 +8322,6 @@
                util_format_name(format),
                format != dst_fmt ? "(emulated)" : "");
 
-   unsigned layers_factor = 1;
-   if (res->target == GL_TEXTURE_CUBE_MAP || res->target == 
GL_TEXTURE_CUBE_MAP_ARRAY)
-      layers_factor = 6;
-
    if (vrend_state.use_gles) {
       assert(res->target != GL_TEXTURE_RECTANGLE_NV);
       assert(res->target != GL_TEXTURE_1D);
@@ -8287,7 +8329,7 @@
    }
 
    glTextureView(view_id, res->target, res->id, fmt, 0, res->base.last_level + 
1,
-                 0, layers_factor * res->base.depth0);
+                 0, res->base.array_size);
    return view_id;
 }
 
@@ -8409,7 +8451,7 @@
                              has_feature(feat_texture_srgb_decode),
                              has_feature(feat_srgb_write_control),
                              skip_dest_swizzle);
-      vrend_clicbs->make_current(ctx->sub->gl_context);
+      vrend_sync_make_current(ctx->sub->gl_context);
       goto cleanup;
    }
 
@@ -9527,8 +9569,9 @@
 
    /* All of the formats are common. */
    for (i = 0; i < VIRGL_FORMAT_MAX; i++) {
-      if (tex_conv_table[i].internalformat != 0) {
-         enum virgl_formats fmt = (enum virgl_formats)i;
+      enum virgl_formats fmt = (enum virgl_formats)i;
+      if (tex_conv_table[i].internalformat != 0 || fmt == VIRGL_FORMAT_YV12 ||
+          fmt == VIRGL_FORMAT_NV12) {
          if (vrend_format_can_sample(fmt)) {
             set_format_bit(&caps->v1.sampler, fmt);
             if (vrend_format_can_render(fmt))
@@ -10198,9 +10241,9 @@
    if (tofree) {
       if (ctx->sub == tofree) {
          ctx->sub = ctx->sub0;
-         vrend_clicbs->make_current(ctx->sub->gl_context);
       }
       vrend_destroy_sub_context(tofree);
+      vrend_clicbs->make_current(ctx->sub->gl_context);
    }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/src/vrend_renderer.h 
new/virglrenderer-virglrenderer-0.8.2/src/vrend_renderer.h
--- old/virglrenderer-virglrenderer-0.8.1/src/vrend_renderer.h  2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/src/vrend_renderer.h  2020-02-12 
07:29:08.000000000 +0100
@@ -362,9 +362,6 @@
                             bool condtion,
                             uint mode);
 void *vrend_renderer_get_cursor_contents(uint32_t res_handle, uint32_t *width, 
uint32_t *height);
-void vrend_bind_va(GLuint vaoid);
-int vrend_renderer_flush_buffer_res(struct vrend_resource *res,
-                                    struct pipe_box *box);
 
 void vrend_renderer_fill_caps(uint32_t set, uint32_t version,
                               union virgl_caps *caps);
@@ -470,4 +467,6 @@
 
 int vrend_renderer_execute(void *execute_args, uint32_t execute_size);
 
+void vrend_sync_make_current(virgl_gl_context);
+
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/tests/fuzzer/Makefile.am 
new/virglrenderer-virglrenderer-0.8.2/tests/fuzzer/Makefile.am
--- old/virglrenderer-virglrenderer-0.8.1/tests/fuzzer/Makefile.am      
2019-12-20 11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/tests/fuzzer/Makefile.am      
2020-02-12 07:29:08.000000000 +0100
@@ -11,7 +11,6 @@
        $(EPOXY_CFLAGS) \
        $(VISIBILITY_CFLAGS) \
        $(CODE_COVERAGE_CFLAGS) \
-       -fsanitize=address \
        -fsanitize=fuzzer
 
 if FUZZER
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/tests/fuzzer/meson.build 
new/virglrenderer-virglrenderer-0.8.2/tests/fuzzer/meson.build
--- old/virglrenderer-virglrenderer-0.8.1/tests/fuzzer/meson.build      
2019-12-20 11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/tests/fuzzer/meson.build      
2020-02-12 07:29:08.000000000 +0100
@@ -27,7 +27,7 @@
 virgl_fuzzer = executable(
    'virgl_fuzzer',
    'virgl_fuzzer.c',
-   c_args : [ '-fsanitize=address', '-fsanitize=fuzzer' ],
-   link_args : [ '-fsanitize=address', '-fsanitize=fuzzer' ],
-   dependencies : [libvirglrenderer_dep, epoxy_dep]
+   c_args : [ '-fsanitize=fuzzer' ],
+   link_args : [ '-fsanitize=fuzzer' ],
+   dependencies : [libvirglrenderer_dep, gallium_dep, epoxy_dep]
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/tests/meson.build 
new/virglrenderer-virglrenderer-0.8.2/tests/meson.build
--- old/virglrenderer-virglrenderer-0.8.1/tests/meson.build     2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/tests/meson.build     2020-02-12 
07:29:08.000000000 +0100
@@ -30,11 +30,11 @@
    'testvirgl_encode.h',
 ]
 
-libvrtest = library(
+libvrtest = static_library(
    'vrtest',
    libvrtest_sources,
    dependencies : [
-      libvirglrenderer_dep,
+      libvirgl_dep,
       gallium_dep,
       check_dep
    ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/tests/test_fuzzer_formats.c 
new/virglrenderer-virglrenderer-0.8.2/tests/test_fuzzer_formats.c
--- old/virglrenderer-virglrenderer-0.8.1/tests/test_fuzzer_formats.c   
2019-12-20 11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/tests/test_fuzzer_formats.c   
2020-02-12 07:29:08.000000000 +0100
@@ -146,6 +146,28 @@
    virgl_renderer_submit_cmd((void *) cmd, ctx_id, VIRGL_CMD_BLIT_SIZE + 1);
 }
 
+static void test_format_fail_and_double_free()
+{
+   struct virgl_renderer_resource_create_args args;
+
+   args.handle = 1;
+   args.target = 3;
+   args.format = 191;
+   args.bind = 10;
+   args.width = 49;
+   args.height = 0;
+   args.depth = 0;
+   args.array_size = 0;
+   args.last_level = 0;
+   args.nr_samples = 0;
+   args.flags = 0;
+
+   virgl_renderer_resource_create(&args, NULL, 0);
+   virgl_renderer_ctx_attach_resource(ctx_id, args.handle);
+}
+
+
+
 
 /* Issue #141 */
 static void test_blit_info_format_check()
@@ -654,11 +676,294 @@
    virgl_renderer_submit_cmd((void *) cmd, ctx_id, 11 + 4 + 1);
 }
 
+
+static void test_cs_nullpointer_deference()
+{
+
+   struct virgl_renderer_resource_create_args args;
+   args.handle = 0x6e735f72;
+   args.target = 2;
+   args.format = 0x101;
+   args.bind = 0x19191919;
+   args.width = 0x19191919;
+   args.height = 0x19191919;
+   args.depth = 0x411959;
+   args.array_size = 0;
+   args.last_level = 0x19190000;
+   args.nr_samples = 0;
+   args.flags = 0x31313100;
+
+   virgl_renderer_resource_create(&args, NULL, 0);
+   virgl_renderer_ctx_attach_resource(ctx_id, args.handle);
+
+   uint32_t cmd[9];
+   int i = 0;
+   cmd[i++] = 0x0083925;
+   cmd[i++] = 0x00313131;
+   cmd[i++] = 0;
+   cmd[i++] = 0;
+   cmd[i++] = 0;
+   cmd[i++] = 0x25313131;
+   cmd[i++] = 0x39;
+   cmd[i++] = 0x0001370b;
+   cmd[i++] = 0x00340000;
+
+  virgl_renderer_submit_cmd((void *) cmd, ctx_id, 9);
+}
+
+static void test_vrend_set_signle_abo_heap_overflow() {
+
+    struct virgl_renderer_resource_create_args args;
+    args.handle = 0x4c474572;
+    args.target = 0;
+    args.format = 0x43;
+    args.bind = 0x80000;
+    args.width = 0x5f5f616d;
+    args.height = 0x69667562;
+    args.depth = 0x726f706d;
+    args.array_size = 0xbbbbbb74;
+    args.last_level = 0xbbbbbbbb;
+    args.nr_samples = 0xbbbbbbbb;
+    args.flags = 0xff;
+
+    virgl_renderer_resource_create(&args, NULL, 0);
+    virgl_renderer_ctx_attach_resource(ctx_id, args.handle);
+
+    uint32_t cmd[0xde];
+    int i = 0;
+
+    cmd[i++] = 0x000e1919;
+    cmd[i++] = 0x00003f00;
+    cmd[i++] = 0xc7cf3000;
+    cmd[i++] = 0x00083907;
+    cmd[i++] = 0x6e73735f;
+    cmd[i++] = 0x32323232;
+    cmd[i++] = 0x19312161;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0xffbe1959;
+    cmd[i++] = 0xbbbbbbff;
+    cmd[i++] = 0xbbbbbb29;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0x000000ff;
+    cmd[i++] = 0x000e1928;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x4111d000;
+    cmd[i++] = 0xfe010000;
+    cmd[i++] = 0x00000172;
+    cmd[i++] = 0x32323200;
+    cmd[i++] = 0xe6cedea2;
+    cmd[i++] = 0xe6e6e6e6;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0xffbe1959;
+    cmd[i++] = 0xbbbbbbff;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0x000000ff;
+    cmd[i++] = 0x000e1919;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xc7cfa400;
+    cmd[i++] = 0x00083907;
+    cmd[i++] = 0x6e73735f;
+    cmd[i++] = 0x32323232;
+    cmd[i++] = 0x19312161;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x00000159;
+    cmd[i++] = 0xbbbbbb00;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0x000000ff;
+    cmd[i++] = 0x006e1928;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xbeee3000;
+    cmd[i++] = 0xe6e6ffff;
+    cmd[i++] = 0x19e6e6e6;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x59191919;
+    cmd[i++] = 0xffffbe19;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xffbbbbbb;
+    cmd[i++] = 0x19000000;
+    cmd[i++] = 0x00000e19;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x07c7cfa4;
+    cmd[i++] = 0x5f000839;
+    cmd[i++] = 0x326e7373;
+    cmd[i++] = 0x00390732;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x4111d000;
+    cmd[i++] = 0xfe010000;
+    cmd[i++] = 0x00000172;
+    cmd[i++] = 0x32323200;
+    cmd[i++] = 0xe6cedea2;
+    cmd[i++] = 0xe6e6e6e6;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0xffbe1959;
+    cmd[i++] = 0xbbbbbbff;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0x000000ff;
+    cmd[i++] = 0x000e1919;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xc7cfa400;
+    cmd[i++] = 0x00083907;
+    cmd[i++] = 0x6e73735f;
+    cmd[i++] = 0x32323232;
+    cmd[i++] = 0x19312161;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x00000159;
+    cmd[i++] = 0xbbbbbb00;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0x000000ff;
+    cmd[i++] = 0x002e1928;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xbeee3000;
+    cmd[i++] = 0xe6e6ffff;
+    cmd[i++] = 0x19e6e6e6;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x59191919;
+    cmd[i++] = 0xffffbe19;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xffbbbbbb;
+    cmd[i++] = 0x19000000;
+    cmd[i++] = 0x00000a19;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x07c7cfa4;
+    cmd[i++] = 0x5f000839;
+    cmd[i++] = 0x326e7373;
+    cmd[i++] = 0x08390732;
+    cmd[i++] = 0x73735f00;
+    cmd[i++] = 0x3232326e;
+    cmd[i++] = 0x31216132;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x00015919;
+    cmd[i++] = 0xbbbb0000;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0x00bbbbbb;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xbbbb0000;
+    cmd[i++] = 0x000000ff;
+    cmd[i++] = 0x002e1928;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x08ee3000;
+    cmd[i++] = 0x73735f00;
+    cmd[i++] = 0x3232326e;
+    cmd[i++] = 0x31216132;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x00015919;
+    cmd[i++] = 0xbbbb0000;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0x00bbbbbb;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xbbbb0000;
+    cmd[i++] = 0x000000ff;
+    cmd[i++] = 0x002e1928;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xbeee3000;
+    cmd[i++] = 0xe6e6ffff;
+    cmd[i++] = 0x19e6e6e6;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x59191919;
+    cmd[i++] = 0xffffbe19;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xffbbbbbb;
+    cmd[i++] = 0x19000000;
+    cmd[i++] = 0x61323219;
+    cmd[i++] = 0x19193121;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0x19191919;
+    cmd[i++] = 0xbbbbbb19;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0xffbbbbbb;
+    cmd[i++] = 0x28000000;
+    cmd[i++] = 0x00002e19;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xffbeee30;
+    cmd[i++] = 0x00cffeff;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00006161;
+    cmd[i++] = 0x315d3100;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xbb000000;
+    cmd[i++] = 0xbbbbbbbb;
+    cmd[i++] = 0x000000ff;
+    cmd[i++] = 0x000e1919;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0xc7cfa400;
+    cmd[i++] = 0x7865745f;
+    cmd[i++] = 0x00000000;
+    cmd[i++] = 0x65727574;
+    cmd[i++] = 0x0b87765f;
+    cmd[i++] = 0x40000137;
+    cmd[i++] = 0x00004000;
+    cmd[i++] = 0x00340034;
+
+    virgl_renderer_submit_cmd((void *) cmd, ctx_id, 0xde);
+}
+
 int main()
 {
    initialize_environment();
 
    test_format_wrong_size();
+   test_format_fail_and_double_free();
    test_blit_info_format_check();
    test_blit_info_format_check_null_format();
    test_format_is_plain_nullptr_deref_trigger();
@@ -672,6 +977,10 @@
    test_heap_overflow_vrend_renderer_transfer_write_iov();
    test_heap_overflow_vrend_renderer_transfer_write_iov_compressed_tex();
 
+   test_cs_nullpointer_deference();
+   test_vrend_set_signle_abo_heap_overflow();
+
+
    virgl_renderer_context_destroy(ctx_id);
    virgl_renderer_cleanup(&cookie);
    virgl_egl_destroy(test_egl);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/tests/test_virgl_cmd.c 
new/virglrenderer-virglrenderer-0.8.2/tests/test_virgl_cmd.c
--- old/virglrenderer-virglrenderer-0.8.1/tests/test_virgl_cmd.c        
2019-12-20 11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/tests/test_virgl_cmd.c        
2020-02-12 07:29:08.000000000 +0100
@@ -67,6 +67,12 @@
 }
 END_TEST
 
+#ifdef PIPE_ARCH_LITTLE_ENDIAN
+static const uint32_t test_green = 0xff00ff00;
+#else
+static const uint32_t test_green = 0x00ff00ff;
+#endif
+
 /* create a resource - clear it to a color, do a transfer */
 START_TEST(virgl_test_clear)
 {
@@ -127,7 +133,7 @@
     /* check the returned values */
     for (i = 0; i < 5; i++) {
        uint32_t *ptr = res.iovs[0].iov_base;
-       ck_assert_int_eq(ptr[i], 0xff00ff00);
+       ck_assert_int_eq(ptr[i], test_green);
     }
 
     /* cleanup */
@@ -216,7 +222,7 @@
     /* check the returned values */
     for (i = 0; i < 5; i++) {
        uint32_t *ptr = res2.iovs[0].iov_base;
-       ck_assert_int_eq(ptr[i], 0xff00ff00);
+       ck_assert_int_eq(ptr[i], test_green);
     }
 
     /* cleanup */
@@ -460,7 +466,7 @@
        uint32_t *ptr = res.iovs[0].iov_base;
        for (h = 0; h < th; h++) {
            for (w = 0; w < tw; w++) {
-               if (ptr[h * tw + w] != 0xff00ff00)
+               if (ptr[h * tw + w] != test_green)
                    all_cleared = false;
            }
        }
@@ -724,7 +730,7 @@
        uint32_t *ptr = res.iovs[0].iov_base;
        for (h = 0; h < th; h++) {
            for (w = 0; w < tw; w++) {
-               if (ptr[h * tw + w] != 0xff00ff00)
+               if (ptr[h * tw + w] != test_green)
                    all_cleared = false;
            }
        }
@@ -969,7 +975,7 @@
        uint32_t *ptr = res.iovs[0].iov_base;
        for (h = 0; h < th; h++) {
            for (w = 0; w < tw; w++) {
-               if (ptr[h * tw + w] != 0xff00ff00)
+               if (ptr[h * tw + w] != test_green)
                    all_cleared = false;
            }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/vtest/Makefile.am 
new/virglrenderer-virglrenderer-0.8.2/vtest/Makefile.am
--- old/virglrenderer-virglrenderer-0.8.1/vtest/Makefile.am     2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/vtest/Makefile.am     2020-02-12 
07:29:08.000000000 +0100
@@ -50,7 +50,6 @@
        $(EPOXY_CFLAGS) \
        $(VISIBILITY_CFLAGS) \
        $(CODE_COVERAGE_CFLAGS) \
-       -fsanitize=address \
        -fsanitize=fuzzer
 
 vtest_fuzzer_LDADD = $(top_builddir)/src/gallium/auxiliary/libgallium.la 
$(top_builddir)/src/libvirglrenderer.la
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/virglrenderer-virglrenderer-0.8.1/vtest/meson.build 
new/virglrenderer-virglrenderer-0.8.2/vtest/meson.build
--- old/virglrenderer-virglrenderer-0.8.1/vtest/meson.build     2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/vtest/meson.build     2020-02-12 
07:29:08.000000000 +0100
@@ -36,7 +36,7 @@
 virgl_test_server = executable(
    'virgl_test_server',
    virgl_test_server_sources,
-   dependencies : libvirglrenderer_dep,
+   dependencies : [libvirglrenderer_dep, gallium_dep],
    install : true
 )
 
@@ -52,8 +52,8 @@
    vtest_fuzzer = executable(
       'vtest_fuzzer',
       'vtest_fuzzer.c',
-      c_args : [ '-fsanitize=address', '-fsanitize=fuzzer' ],
-      link_args : [ '-fsanitize=address', '-fsanitize=fuzzer' ],
+      c_args : [ '-fsanitize=fuzzer' ],
+      link_args : [ '-fsanitize=fuzzer' ],
       objects : vtest_obj,
       dependencies : libvirglrenderer_dep
    )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/virglrenderer-virglrenderer-0.8.1/vtest/vtest_server.c 
new/virglrenderer-virglrenderer-0.8.2/vtest/vtest_server.c
--- old/virglrenderer-virglrenderer-0.8.1/vtest/vtest_server.c  2019-12-20 
11:38:08.000000000 +0100
+++ new/virglrenderer-virglrenderer-0.8.2/vtest/vtest_server.c  2020-02-12 
07:29:08.000000000 +0100
@@ -39,7 +39,9 @@
 #include "vtest.h"
 #include "vtest_protocol.h"
 #include "virglrenderer.h"
-
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
 
 
 struct vtest_program


Reply via email to