[Mesa-dev] [Bug 107524] Broken packDouble2x32 at llvmpipe

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Aug 8 16:14:13 UTC 2018


https://bugs.freedesktop.org/show_bug.cgi?id=107524

            Bug ID: 107524
           Summary: Broken packDouble2x32 at llvmpipe
           Product: Mesa
           Version: git
          Hardware: All
                OS: Linux (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Drivers/Gallium/llvmpipe
          Assignee: mesa-dev at lists.freedesktop.org
          Reporter: matwey.kornilov at gmail.com
        QA Contact: mesa-dev at lists.freedesktop.org

I've tested Mesa llvmpipe from recent master (e02f061b690d) and found the
following behavior.

The following fragment shader works as expected on Intel GPU (Intel HD Graphics
620 (Kaby Lake GT2)) and shows black screen at llvmpipe.

        #version 330
        #extension GL_ARB_gpu_shader_fp64 : require
        in vec2 UV;
        out vec4 color;
        uniform usampler2D image_texture;
        uniform sampler1D colormap;
        uniform float c;
        uniform float z;

        void main() {
                double raw_value = packDouble2x32(texture(image_texture,
UV).gr);
                double value = c * (raw_value - z);
                color = texture(colormap, float(clamp(value, 0.0, 1.0)));
        }

At the same time, the following tiny modification fixes the shader at llvmpipe:

        #version 330
        #extension GL_ARB_gpu_shader_fp64 : require
        in vec2 UV;
        out vec4 color;
        uniform usampler2D image_texture;
        uniform sampler1D colormap;
        uniform float c;
        uniform float z;

        void main() {
                double raw_value = packDouble2x32(uvec2(texture(image_texture,
UV).g, texture(image_texture, UV).r));
                double value = c * (raw_value - z);
                color = texture(colormap, float(clamp(value, 0.0, 1.0)));
        }

I've compared TGSI output from both of them and found the following difference:
In broken case DADD tries to operate on .yxyx

  5: DADD TEMP[1].xy, TEMP[1].yxyx, TEMP[2].xyxy

I am not sure that DADD knows what to do with swapped yx.

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180808/3f04d53f/attachment.html>


More information about the mesa-dev mailing list