[GPU/WGF] Use ByteAddressBuffer in precompiled shaders
Drivers and hardware may provide more optimal paths for untyped buffers compared to typed. Also, ByteAddressBuffer may be bound via a root descriptor in Direct3D 12, greatly simplifying the binding logic. ByteAddressBuffer also doesn't have the 128 * 2^20 element count limit that typed and structured buffers have, and doesn't require the structure stride to be specified at resource creation time in Direct3D 11.
This commit is contained in:
@@ -75,76 +75,41 @@ namespace gpu {
|
||||
|
||||
const TextureCache::LoadShaderInfo
|
||||
TextureCache::load_shader_info_[kLoadShaderCount] = {
|
||||
// k8bpb
|
||||
{3, 4, 1, 4},
|
||||
// k16bpb
|
||||
{4, 4, 2, 4},
|
||||
// k32bpb
|
||||
{4, 4, 4, 3},
|
||||
// k64bpb
|
||||
{4, 4, 8, 2},
|
||||
// k128bpb
|
||||
{4, 4, 16, 1},
|
||||
// kR5G5B5A1ToB5G5R5A1
|
||||
{4, 4, 2, 4},
|
||||
// kR5G6B5ToB5G6R5
|
||||
{4, 4, 2, 4},
|
||||
// kR5G5B6ToB5G6R5WithRBGASwizzle
|
||||
{4, 4, 2, 4},
|
||||
// kRGBA4ToBGRA4
|
||||
{4, 4, 2, 4},
|
||||
// kRGBA4ToARGB4
|
||||
{4, 4, 2, 4},
|
||||
// kGBGR8ToGRGB8
|
||||
{4, 4, 4, 3},
|
||||
// kGBGR8ToRGB8
|
||||
{4, 4, 8, 3},
|
||||
// kBGRG8ToRGBG8
|
||||
{4, 4, 4, 3},
|
||||
// kBGRG8ToRGB8
|
||||
{4, 4, 8, 3},
|
||||
// kR10G11B11ToRGBA16
|
||||
{4, 4, 8, 3},
|
||||
// kR10G11B11ToRGBA16SNorm
|
||||
{4, 4, 8, 3},
|
||||
// kR11G11B10ToRGBA16
|
||||
{4, 4, 8, 3},
|
||||
// kR11G11B10ToRGBA16SNorm
|
||||
{4, 4, 8, 3},
|
||||
// kR16UNormToFloat
|
||||
{4, 4, 2, 4},
|
||||
// kR16SNormToFloat
|
||||
{4, 4, 2, 4},
|
||||
// kRG16UNormToFloat
|
||||
{4, 4, 4, 3},
|
||||
// kRG16SNormToFloat
|
||||
{4, 4, 4, 3},
|
||||
// kRGBA16UNormToFloat
|
||||
{4, 4, 8, 2},
|
||||
// kRGBA16SNormToFloat
|
||||
{4, 4, 8, 2},
|
||||
// kDXT1ToRGBA8
|
||||
{4, 4, 4, 2},
|
||||
// kDXT3ToRGBA8
|
||||
{4, 4, 4, 1},
|
||||
// kDXT5ToRGBA8
|
||||
{4, 4, 4, 1},
|
||||
// kDXNToRG8
|
||||
{4, 4, 2, 1},
|
||||
// kDXT3A
|
||||
{4, 4, 1, 2},
|
||||
// kDXT3AAs1111ToBGRA4
|
||||
{4, 4, 2, 2},
|
||||
// kDXT3AAs1111ToARGB4
|
||||
{4, 4, 2, 2},
|
||||
// kDXT5AToR8
|
||||
{4, 4, 1, 2},
|
||||
// kCTX1
|
||||
{4, 4, 2, 2},
|
||||
// kDepthUnorm
|
||||
{4, 4, 4, 3},
|
||||
// kDepthFloat
|
||||
{4, 4, 4, 3},
|
||||
{1, 4}, // k8bpb
|
||||
{2, 4}, // k16bpb
|
||||
{4, 3}, // k32bpb
|
||||
{8, 2}, // k64bpb
|
||||
{16, 1}, // k128bpb
|
||||
{2, 4}, // kR5G5B5A1ToB5G5R5A1
|
||||
{2, 4}, // kR5G6B5ToB5G6R5
|
||||
{2, 4}, // kR5G5B6ToB5G6R5WithRBGASwizzle
|
||||
{2, 4}, // kRGBA4ToBGRA4
|
||||
{2, 4}, // kRGBA4ToARGB4
|
||||
{4, 3}, // kGBGR8ToGRGB8
|
||||
{8, 3}, // kGBGR8ToRGB8
|
||||
{4, 3}, // kBGRG8ToRGBG8
|
||||
{8, 3}, // kBGRG8ToRGB8
|
||||
{8, 3}, // kR10G11B11ToRGBA16
|
||||
{8, 3}, // kR10G11B11ToRGBA16SNorm
|
||||
{8, 3}, // kR11G11B10ToRGBA16
|
||||
{8, 3}, // kR11G11B10ToRGBA16SNorm
|
||||
{2, 4}, // kR16UNormToFloat
|
||||
{2, 4}, // kR16SNormToFloat
|
||||
{4, 3}, // kRG16UNormToFloat
|
||||
{4, 3}, // kRG16SNormToFloat
|
||||
{8, 2}, // kRGBA16UNormToFloat
|
||||
{8, 2}, // kRGBA16SNormToFloat
|
||||
{4, 2}, // kDXT1ToRGBA8
|
||||
{4, 1}, // kDXT3ToRGBA8
|
||||
{4, 1}, // kDXT5ToRGBA8
|
||||
{2, 1}, // kDXNToRG8
|
||||
{1, 2}, // kDXT3A
|
||||
{2, 2}, // kDXT3AAs1111ToBGRA4
|
||||
{2, 2}, // kDXT3AAs1111ToARGB4
|
||||
{1, 2}, // kDXT5AToR8
|
||||
{2, 2}, // kCTX1
|
||||
{4, 3}, // kDepthUnorm
|
||||
{4, 3}, // kDepthFloat
|
||||
};
|
||||
|
||||
TextureCache::TextureCache(const RegisterFile& register_file,
|
||||
|
||||
Reference in New Issue
Block a user