[Mesa-users] Mesa: llvmpipe: issues with using packDouble2x32

Matwey V. Kornilov matwey.kornilov at gmail.com
Tue Aug 7 18:08:14 UTC 2018


Hi Brain,

Thank you for useful advice. I've found the following.

The shader when black screen is the following:

llvmpipe: Create fragment shader #261 0x275fd10:
FRAG
PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1
DCL IN[0], GENERIC[0], CONSTANT
DCL OUT[0], COLOR
  0: MOV OUT[0], IN[0]
  1: END
usage masks:
  IN[0].xyzw

FRAG
DCL IN[0].xy, GENERIC[9], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL SVIEW[0], 2D, UINT
DCL SVIEW[1], 1D, FLOAT
DCL CONST[0][0..1]
DCL TEMP[0..2], LOCAL
IMM[0] FLT64 {0,00000000, 1,00000000}
  0: F2D TEMP[0].xy, CONST[0][0].xxxx
  1: MOV TEMP[1].xy, IN[0].xyyy
  2: TEX TEMP[1].xy, TEMP[1], SAMP[0], 2D
  3: F2D TEMP[2].xy, CONST[0][1].xxxx
  4: DNEG TEMP[2].xy, TEMP[2].xyxy
  5: DADD TEMP[1].xy, TEMP[1].yxyx, TEMP[2].xyxy
  6: DMUL TEMP[0].xy, TEMP[0].xyxy, TEMP[1].xyxy
  7: DMAX TEMP[0].xy, TEMP[0].xyxy, IMM[0].xyxy
  8: DMIN TEMP[0].xy, TEMP[0].xyxy, IMM[0].zwzw
  9: D2F TEMP[0].x, TEMP[0].xyxy
 10: MOV TEMP[0].x, TEMP[0].xxxx
 11: TEX TEMP[0], TEMP[0], SAMP[1], 1D
 12: MOV OUT[0], TEMP[0]
 13: END

llvmpipe: Create fragment shader #262 0x2916910:
FRAG
DCL IN[0].xy, GENERIC[9], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL SVIEW[0], 2D, UINT
DCL SVIEW[1], 1D, FLOAT
DCL CONST[0][0..1]
DCL TEMP[0..2], LOCAL
IMM[0] FLT64 {0,00000000, 1,00000000}
  0: F2D TEMP[0].xy, CONST[0][0].xxxx
  1: MOV TEMP[1].xy, IN[0].xyyy
  2: TEX TEMP[1].xy, TEMP[1], SAMP[0], 2D
  3: F2D TEMP[2].xy, CONST[0][1].xxxx
  4: DNEG TEMP[2].xy, TEMP[2].xyxy
  5: DADD TEMP[1].xy, TEMP[1].yxyx, TEMP[2].xyxy
  6: DMUL TEMP[0].xy, TEMP[0].xyxy, TEMP[1].xyxy
  7: DMAX TEMP[0].xy, TEMP[0].xyxy, IMM[0].xyxy
  8: DMIN TEMP[0].xy, TEMP[0].xyxy, IMM[0].zwzw
  9: D2F TEMP[0].x, TEMP[0].xyxy
 10: MOV TEMP[0].x, TEMP[0].xxxx
 11: TEX TEMP[0], TEMP[0], SAMP[1], 1D
 12: MOV OUT[0], TEMP[0]
 13: END
usage masks:
  IN[0].xy


For good shader version:

llvmpipe: Create fragment shader #261 0x236ad50:
FRAG
PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1
DCL IN[0], GENERIC[0], CONSTANT
DCL OUT[0], COLOR
  0: MOV OUT[0], IN[0]
  1: END
usage masks:
  IN[0].xyzw

FRAG
DCL IN[0].xy, GENERIC[9], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL SVIEW[0], 2D, UINT
DCL SVIEW[1], 1D, FLOAT
DCL CONST[0][0..1]
DCL TEMP[0..2], LOCAL
IMM[0] FLT64 {0,00000000, 1,00000000}
  0: MOV TEMP[0].xy, IN[0].xyyy
  1: TEX TEMP[0].y, TEMP[0], SAMP[0], 2D
  2: MOV TEMP[0].x, TEMP[0].yyyy
  3: MOV TEMP[1].xy, IN[0].xyyy
  4: TEX TEMP[1].x, TEMP[1], SAMP[0], 2D
  5: MOV TEMP[0].y, TEMP[1].xxxx
  6: F2D TEMP[1].xy, CONST[0][0].xxxx
  7: F2D TEMP[2].xy, CONST[0][1].xxxx
  8: DNEG TEMP[2].xy, TEMP[2].xyxy
  9: DADD TEMP[0].xy, TEMP[0].xyxy, TEMP[2].xyxy
 10: DMUL TEMP[0].xy, TEMP[1].xyxy, TEMP[0].xyxy
 11: DMAX TEMP[0].xy, TEMP[0].xyxy, IMM[0].xyxy
 12: DMIN TEMP[0].xy, TEMP[0].xyxy, IMM[0].zwzw
 13: D2F TEMP[0].x, TEMP[0].xyxy
 14: MOV TEMP[0].x, TEMP[0].xxxx
 15: TEX TEMP[0], TEMP[0], SAMP[1], 1D
 16: MOV OUT[0], TEMP[0]
 17: END

llvmpipe: Create fragment shader #262 0x2525fd0:
FRAG
DCL IN[0].xy, GENERIC[9], PERSPECTIVE
DCL OUT[0], COLOR
DCL SAMP[0]
DCL SAMP[1]
DCL SVIEW[0], 2D, UINT
DCL SVIEW[1], 1D, FLOAT
DCL CONST[0][0..1]
DCL TEMP[0..2], LOCAL
IMM[0] FLT64 {0,00000000, 1,00000000}
  0: MOV TEMP[0].xy, IN[0].xyyy
  1: TEX TEMP[0].y, TEMP[0], SAMP[0], 2D
  2: MOV TEMP[0].x, TEMP[0].yyyy
  3: MOV TEMP[1].xy, IN[0].xyyy
  4: TEX TEMP[1].x, TEMP[1], SAMP[0], 2D
  5: MOV TEMP[0].y, TEMP[1].xxxx
  6: F2D TEMP[1].xy, CONST[0][0].xxxx
  7: F2D TEMP[2].xy, CONST[0][1].xxxx
  8: DNEG TEMP[2].xy, TEMP[2].xyxy
  9: DADD TEMP[0].xy, TEMP[0].xyxy, TEMP[2].xyxy
 10: DMUL TEMP[0].xy, TEMP[1].xyxy, TEMP[0].xyxy
 11: DMAX TEMP[0].xy, TEMP[0].xyxy, IMM[0].xyxy
 12: DMIN TEMP[0].xy, TEMP[0].xyxy, IMM[0].zwzw
 13: D2F TEMP[0].x, TEMP[0].xyxy
 14: MOV TEMP[0].x, TEMP[0].xxxx
 15: TEX TEMP[0], TEMP[0], SAMP[1], 1D
 16: MOV OUT[0], TEMP[0]
 17: END
usage masks:
  IN[0].xy



2018-08-07 17:29 GMT+03:00 Brian Paul <brianp at vmware.com>:
> On 08/07/2018 03:16 AM, Matwey V. Kornilov wrote:
>>
>> Hi all,
>>
>> I am running Mesa-18.0.2 with Intel HD Graphics 620 (Kaby Lake GT2) on
>> Linux 4.12.14. I am trying to use GLSL packDouble2x32() function from
>> GL_ARB_gpu_shader_fp64 extension in my application.
>>
>> The following fragment shader works as expected:
>>
>>    #version 330
>>    #extension GL_ARB_gpu_shader_fp64 : require
>>    in vec2 UV;
>>    out vec4 color;
>>    uniform usampler2D image_texture;
>>
>>    void main() {
>>        double value = packDouble2x32(texture(image_texture, UV).gr);
>>        color = vec4(float(value), 0.0, 0.0, 1.0);
>>    }
>>
>> `image_texture` parameters are the following. Texture type is
>> GL_UNSIGNED_INT, pixel format is GL_RG_INTEGER and texture format is
>> GL_RG32UI.
>>
>> However, when I force usage of llvmpipe with the same Mesa installation:
>>
>>    OpenGL vendor string: VMware, Inc.
>>    OpenGL renderer string: llvmpipe (LLVM 5.0, 256 bits)
>>
>> The same shader compiles successfully, but renders empty black screen.
>> I am not sure that this is how it should to be.
>>
>> It is interesting that the following shader modification works fine on
>> llvmpipe:
>>
>>    #version 330
>>    #extension GL_ARB_gpu_shader_fp64 : require
>>    in vec2 UV;
>>    out vec4 color;
>>    uniform usampler2D image_texture;
>>
>>    void main() {
>>        double value = packDouble2x32(uvec2(texture(image_texture,
>> UV).g, texture(image_texture, UV).r));
>>        color = vec4(float(value), 0.0, 0.0, 1.0);
>>    }
>>
>> The question is how could I debug further what is going wrong here?
>>
>
> Maybe try setting ST_DEBUG=tgsi and run both versions and compare the TGSI
> code printed to your terminal.  Any difference would be a clue.
>
> -Brian
>



-- 
With best regards,
Matwey V. Kornilov


More information about the mesa-users mailing list