Loading and storing images

I’m working on a vulkan driver that can run a vulkan application and I’m having some trouble with images and textures.
The user program calls textureLod function to read from a texture image. The image is of type vk_format_astc_8x8_srgb_block. Then it does some computation and calls imageStore to store to an image of type vk_format_b8g8r8a8_unorm.
Now I’m implementing the textureLod and imageStore functions in the driver side and I have to read the texture and write to the image and this is how i do it.

textureLod: I find the address of the ASTC block, decompress it set, devide the 8-bit values by 255 to get a floating points for the RGBA channels. Then I do SRGB to linear conversion. Finally I copy tge colors to the variables user specified.
imageStore: I find the destination address of the pixel in the image, convert floating point color channels to 8-bit RGBA channels by multiplying them to 255 and store it in memory.

Am I doing anything wrong when I read or store the images? Should I do the SRGB to linear conversion when reading the texture? Also vulkan manual says the color channels of both of the image types are normalized. Does that mean I have to somehow account for that when reading/writing?

I tested multiple variations but couldn’t get it to work. When I run the user application on an NVidia GPU with an NVidia driver, The colors are darker and the texture reads and image store have different values.

I would appriciate any help since I’ve been stuck on this for some time.

If you are making a driver, then you definitely need to read the specification (and understand it) and not rely on what random passers-by say.

If something is not clear and unambiguous when you did your due diligence reading the specification, then that is a spec defect, and you should report it.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.