@ -93,7 +93,7 @@ void UtilShaders::BlockLinearUpload2D(Image& image, const ImageBufferMap& map,
glUniform1ui ( 7 , params . block_height_mask ) ;
glBindBufferRange ( GL_SHADER_STORAGE_BUFFER , BINDING_INPUT_BUFFER , map . buffer , input_offset ,
image . guest_size_bytes - swizzle . buffer_offset ) ;
glBindImageTexture ( BINDING_OUTPUT_IMAGE , image . Handle( ) , swizzle . level , GL_TRUE , 0 ,
glBindImageTexture ( BINDING_OUTPUT_IMAGE , image . Storage Handle( ) , swizzle . level , GL_TRUE , 0 ,
GL_WRITE_ONLY , store_format ) ;
glDispatchCompute ( num_dispatches_x , num_dispatches_y , image . info . resources . layers ) ;
}
@ -134,7 +134,7 @@ void UtilShaders::BlockLinearUpload3D(Image& image, const ImageBufferMap& map,
glUniform1ui ( 9 , params . block_depth_mask ) ;
glBindBufferRange ( GL_SHADER_STORAGE_BUFFER , BINDING_INPUT_BUFFER , map . buffer , input_offset ,
image . guest_size_bytes - swizzle . buffer_offset ) ;
glBindImageTexture ( BINDING_OUTPUT_IMAGE , image . Handle( ) , swizzle . level , GL_TRUE , 0 ,
glBindImageTexture ( BINDING_OUTPUT_IMAGE , image . Storage Handle( ) , swizzle . level , GL_TRUE , 0 ,
GL_WRITE_ONLY , store_format ) ;
glDispatchCompute ( num_dispatches_x , num_dispatches_y , num_dispatches_z ) ;
}
@ -164,7 +164,8 @@ void UtilShaders::PitchUpload(Image& image, const ImageBufferMap& map,
glUniform2i ( LOC_DESTINATION , 0 , 0 ) ;
glUniform1ui ( LOC_BYTES_PER_BLOCK , bytes_per_block ) ;
glUniform1ui ( LOC_PITCH , pitch ) ;
glBindImageTexture ( BINDING_OUTPUT_IMAGE , image . Handle ( ) , 0 , GL_FALSE , 0 , GL_WRITE_ONLY , format ) ;
glBindImageTexture ( BINDING_OUTPUT_IMAGE , image . StorageHandle ( ) , 0 , GL_FALSE , 0 , GL_WRITE_ONLY ,
format ) ;
for ( const SwizzleParameters & swizzle : swizzles ) {
const Extent3D num_tiles = swizzle . num_tiles ;
const size_t input_offset = swizzle . buffer_offset + map . offset ;
@ -195,9 +196,9 @@ void UtilShaders::CopyBC4(Image& dst_image, Image& src_image, std::span<const Im
glUniform3ui ( LOC_SRC_OFFSET , copy . src_offset . x , copy . src_offset . y , copy . src_offset . z ) ;
glUniform3ui ( LOC_DST_OFFSET , copy . dst_offset . x , copy . dst_offset . y , copy . dst_offset . z ) ;
glBindImageTexture ( BINDING_INPUT_IMAGE , src_image . Handle( ) , copy . src_subresource . base_level ,
GL_FALSE, 0 , GL_READ_ONLY , GL_RG32UI ) ;
glBindImageTexture ( BINDING_OUTPUT_IMAGE , dst_image . Handle( ) ,
glBindImageTexture ( BINDING_INPUT_IMAGE , src_image . Storage Handle( ) ,
copy. src_subresource . base_level , GL_FALSE, 0 , GL_READ_ONLY , GL_RG32UI ) ;
glBindImageTexture ( BINDING_OUTPUT_IMAGE , dst_image . Storage Handle( ) ,
copy . dst_subresource . base_level , GL_FALSE , 0 , GL_WRITE_ONLY , GL_RGBA8UI ) ;
glDispatchCompute ( copy . extent . width , copy . extent . height , copy . extent . depth ) ;
}