Skip to content

Instantly share code, notes, and snippets.

@bylaws
Last active March 20, 2024 18:40
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bylaws/04130932e2634d1c6a2a9729e3940d60 to your computer and use it in GitHub Desktop.
Save bylaws/04130932e2634d1c6a2a9729e3940d60 to your computer and use it in GitHub Desktop.
Qualcomm Vulkan Driver qgl_config.txt Format

Info

Qualcomm Vulkan drivers on Android store their internal settings in a config file located in /data/{vendor, misc}/gpu/qgl_config.txt. This format is completely undocumented by Qualcomm however it contains many settings that can be useful for developers. Detailed documentation on it can be found below however it should be noted that selinux needs to be disabled for apps running in the Android sandbox to access this file.

Syntax

; is a comment
key{=, \n, \r}value assigns a setting value (all are treated in the same way)

On <SDM845, key is the human-readable setting name but on SDM845 or greater key can also be the hash of the setting name, to enable support for the older behaviour the line 0x0=0x8675309 can be added to the top of the file.

Keys

A full list of bruteforced keys can be found attached in the settings_* series of files, care should be taken as many of the longer ones are hash collisions rather than their true names.

The most useful settings are:
enableshaderlog=True which creates large shader debugging data files with IR and optimisation info in /data/vendor/gpu
enablebinlog=True which dumps binary timeline files in /data/vendor/gpu
shadersubstitution which enables shader replacement support (see below for details)
debugTracingGroupsEnabled is a mask of which atrace categories to enable
debugPrintGroupsEnabled is a mask of which debug print categories to enable

Hashing

Rather than storing all settings as strings, the driver uses a simple rolling XOR hash function, the exact details of which vary depending on the driver version:

>SDM845 (Current)

uint32_t state{0x425534b3};
for (char c : string) {
  uint32_t c_uint = c;
  uint32_t c_lower = c_int | 0x20;
  if (0x19 < (c_uint - 0x41))
    lower = c_int;
    
  state = c_lower ^ (state >> 0x1b | state << 0x5);
}

return state;

MSM8998

uint32_t state{};
for (char c : string)
  state = std::tolower(c) ^ ((state << 0x5) | (state >> 0x1b));

return state;

MSM8996

uint32_t state{};
for (char c : string)
  state = std::tolower(c) ^ (state << 0x5) ^ (state >> 0x1b);

return state;

The use of a hash makes identifying possible settings and their meanings quite non-trivial. It is fairly simple to work backwards from desired hash to a setting name, that can be used to enable it however that is unlikely to be the real name of the setting. To find the true names of setting a bruteforce must be used.

Bruteforcing

Bruteforcing at a character level for settings which can be more than 15 characters long is almost impossible on modern computers; however, a dictionary based bruteforce is significantly more viable. We can reduce the scope further by using the strings of the driver binary and related materials such as the Vulkan spec - narrowing it down to about 1600 entries. While bruteforcing such a small hash has the potential to generate many false positives, we can make use of the fact that hash functions changed between SDM845 and MSM8998 to almost half the chance of them. The outcome of this is a fairly comprehensive list of settings - many work as described - though some false positives still exist with three levels of the dictionary.

File index

settings* - Valid settings for each GPU driver version, some may be collisions and so have weird names
bruteforce.cpp - Small (and ugly) C++ program that was used to perform the bruteforcing, it isn't the fastest thing though it is much quicker than any python script.
results-* - Setting hashes for each driver version for input to bruteforce.cpp
words.txt - Wordlist for bruteforce.cpp, generated off of strings and the Vulkan spec

Found Single: forcepunt Hash MSM8998: 0x4069bcd0
Found Single: cpucount Hash MSM8998: 0xec065ab0
Found Single: depthclamp Hash MSM8998: 0xd60b6f4d
Found Single: depthbounds Hash MSM8998: 0xc357e749
Found Single: shaderint64 Hash MSM8998: 0xa367b4cd
Found Single: shadersubstitution Hash MSM8998: 0xb93888f9
Found Single: shaderint16 Hash MSM8998: 0xa367b42f
Found Single: ifhmode Hash MSM8998: 0x8ab730ff
Found Single: ifhMode Hash MSM8998: 0x8ab730ff
Found Single: debugwait Hash MSM8998: 0x6c4a6e64
Found Single: debugprocess Hash MSM8998: 0xd1582c37
Found Single: subgroupsize Hash MSM8998: 0x15600fae
Found Single: geometryshader Hash MSM8998: 0xc689cb94
Found Single: logicop Hash MSM8998: 0xd845018b
Found Single: maxsamples Hash MSM8998: 0x4e47e0f
Found Single: multiviewmode Hash MSM8998: 0x6679da49
Found Single: multiviewMode Hash MSM8998: 0x6679da49
Found Single: tessellationshader Hash MSM8998: 0x99dd72bd
Found Single: preemptionstyle Hash MSM8998: 0x78318254
Found Single: queuecount Hash MSM8998: 0x8c080f81
Found Single: multiviewport Hash MSM8998: 0x66775898
Found Single: dynamicscope Hash MSM8998: 0xb2e99017
Found Single: sparsebinding Hash MSM8998: 0x5d599990
Found Single: gputype Hash MSM8998: 0x276bea7c
Found Double: forcegmemstore Hash SDM845: 0xc0c65a4e Hash MSM8998: 0x558b769e
Found Double: forcegmemload Hash SDM845: 0x5e09df07 Hash MSM8998: 0xdaa3b661
Found Double: forcegmemstore Hash SDM845: 0xc0c65a4e Hash MSM8998: 0x558b769e
Found Double: forceshaderprecision Hash SDM845: 0x34416517 Hash MSM8998: 0x11122e23
Found Double: forcepunt Hash SDM845: 0xe6ffd49a Hash MSM8998: 0x4069bcd0
Found Double: shaderimagegatherextended Hash SDM845: 0x741a4484 Hash MSM8998: 0x1c50e212
Found Double: cpucount Hash SDM845: 0xb932e9f2 Hash MSM8998: 0xec065ab0
Found Double: alphatoone Hash SDM845: 0x17b7776b Hash MSM8998: 0xc57a7e3f
Found Double: initialtexturethreshold Hash SDM845: 0x3b8e570d Hash MSM8998: 0x9e1445a4
Found Double: texturecompressionetc2 Hash SDM845: 0xe2ea8230 Hash MSM8998: 0xafc652a5
Found Double: texturemaxdimension Hash SDM845: 0x96226927 Hash MSM8998: 0x3708f37e
Found Double: samplerateshading Hash SDM845: 0x737fa793 Hash MSM8998: 0xe517ed35
Found Double: usercompatibleuuid Hash SDM845: 0x5afe6e86 Hash MSM8998: 0x97f73a54
Found Double: occlusionqueryprecise Hash SDM845: 0x90a7190d Hash MSM8998: 0x3ace7f89
Found Double: depthclamp Hash SDM845: 0x4c66619 Hash MSM8998: 0xd60b6f4d
Found Double: depthbiasclamp Hash SDM845: 0x5c97c49e Hash MSM8998: 0xc9dae84e
Found Double: depthbounds Hash SDM845: 0x9af6cdd3 Hash MSM8998: 0xc357e749
Found Double: compatibledupvbifm Hash SDM845: 0x13506e87 Hash MSM8998: 0xde593a55
Found Double: shaderint64 Hash SDM845: 0xfac69e57 Hash MSM8998: 0xa367b4cd
Found Double: shaderint16 Hash SDM845: 0xfac69eb5 Hash MSM8998: 0xa367b42f
Found Double: shaderint64 Hash SDM845: 0xfac69e57 Hash MSM8998: 0xa367b4cd
Found Double: managedbufferalignment Hash SDM845: 0x1fe70f11 Hash MSM8998: 0x52cbdf84
Found Double: shadersubstitution Hash SDM845: 0x7431dc2b Hash MSM8998: 0xb93888f9
Found Double: shaderfloat64 Hash SDM845: 0xdfe3d91c Hash MSM8998: 0x5b49b07a
Found Double: shaderint16 Hash SDM845: 0xfac69eb5 Hash MSM8998: 0xa367b42f
Found Double: shaderresourceresidency Hash SDM845: 0x4344d5be Hash MSM8998: 0xe6dec717
Found Double: unrestrictednativeubo Hash SDM845: 0xb072688c Hash MSM8998: 0x1a1b0e08
Found Double: linewidthprecision Hash SDM845: 0xe396677d Hash MSM8998: 0x2e9f33af
Found Double: pm4dumpenable Hash SDM845: 0x7e279af0 Hash MSM8998: 0xfa8df396
Found Double: ljkrangevars Hash SDM845: 0x4beac86b Hash MSM8998: 0x7fcf9b20
Found Double: physicalmemoryavailable Hash SDM845: 0xff32f9c0 Hash MSM8998: 0x5aa8eb69
Found Double: subgroupoperationflags Hash SDM845: 0xf6135aec Hash MSM8998: 0xbb3f8a79
Found Double: geometryshader Hash SDM845: 0x53c4e744 Hash MSM8998: 0xc689cb94
Found Double: subgroupsize Hash SDM845: 0x21455ce5 Hash MSM8998: 0x15600fae
Found Double: variablemultisamplerate Hash SDM845: 0x886aec81 Hash MSM8998: 0x2df0fe28
Found Double: ifhmode Hash SDM845: 0x981e9565 Hash MSM8998: 0x8ab730ff
Found Double: debugwait Hash SDM845: 0xcadc062e Hash MSM8998: 0x6c4a6e64
Found Double: debugvalueuint Hash SDM845: 0x19fe90b9 Hash MSM8998: 0x8cb3bc69
Found Double: debugvalueUint Hash SDM845: 0x19fe90b9 Hash MSM8998: 0x8cb3bc69
Found Double: ifhMode Hash SDM845: 0x981e9565 Hash MSM8998: 0x8ab730ff
Found Double: mipmapprecisionbits Hash SDM845: 0xb8314a8e Hash MSM8998: 0x191bd0d7
Found Double: debugprocess Hash SDM845: 0xe57d7f7c Hash MSM8998: 0xd1582c37
Found Double: bltlibcopyengine Hash SDM845: 0x4d666c80 Hash MSM8998: 0x79d52ed5
Found Double: utilsallocm"vk Hash SDM845: 0x387528ed Hash MSM8998: 0xad38043d
Found Double: bltlibdecompressengine Hash SDM845: 0x3bf124cf Hash MSM8998: 0x76ddf45a
Found Double: bltlibloadengine Hash SDM845: 0xd678c0f Hash MSM8998: 0x39d4ce5a
Found Double: fbodumpmode Hash SDM845: 0xc5023642 Hash MSM8998: 0x9ca31cd8
Found Double: fbodumpMode Hash SDM845: 0xc5023642 Hash MSM8998: 0x9ca31cd8
Found Double: memorypagesize Hash SDM845: 0x7a173db1 Hash MSM8998: 0xef5a1161
Found Double: bltlibstoreengine Hash SDM845: 0xba19f254 Hash MSM8998: 0x2c71b8f2
Found Double: bufferimagegranularity Hash SDM845: 0x4c7c8e7 Hash MSM8998: 0x49eb1872
Found Double: logicop Hash SDM845: 0xcaeca411 Hash MSM8998: 0xd845018b
Found Double: maxbinningpasses Hash SDM845: 0x7add859 Hash MSM8998: 0x331e9a0c
Found Double: maxviewportsize Hash SDM845: 0x30757e29 Hash MSM8998: 0x99d0e43b
Found Double: maxtexturesize Hash SDM845: 0x1af9dc94 Hash MSM8998: 0x8fb4f044
Found Double: maxdrawbuffers Hash SDM845: 0xd481949f Hash MSM8998: 0x41ccb84f
Found Double: maxpushdescriptors Hash SDM845: 0x906cea08 Hash MSM8998: 0x5d65beda
Found Double: maxbinheight Hash SDM845: 0x554b236c Hash MSM8998: 0x616e7027
Found Double: maxintegersamples Hash SDM845: 0x4977662d Hash MSM8998: 0xdf1f2c8b
Found Double: maxmultiviewinstances Hash SDM845: 0xbc83170f Hash MSM8998: 0x16ea718b
Found Double: maxlodbias Hash SDM845: 0xab063dc Hash MSM8998: 0xd87d6a88
Found Double: maxsamples Hash SDM845: 0xd629775b Hash MSM8998: 0x4e47e0f
Found Double: maxtesslevel Hash SDM845: 0x23dd70b3 Hash MSM8998: 0x17f823f8
Found Double: maxcolorattachments Hash SDM845: 0xc71858a5 Hash MSM8998: 0x6632c2fc
Found Double: maxvertexbuffers Hash SDM845: 0xba44e09 Hash MSM8998: 0x3f170c5c
Found Double: statesunpreforce Hash SDM845: 0xba44e09 Hash MSM8998: 0x3f170c5c
Found Double: decexecutableleft Hash SDM845: 0x7b6a350f Hash MSM8998: 0xed027fa9
Found Double: statesdefaultsdevicem Hash SDM845: 0xbc83170f Hash MSM8998: 0x16ea718b
Found Double: dropqueries Hash SDM845: 0xf457aed5 Hash MSM8998: 0xadf6844f
Found Double: numbingroups Hash SDM845: 0x4beac86b Hash MSM8998: 0x7fcf9b20
Found Double: multiviewmode Hash SDM845: 0xe2d3b32f Hash MSM8998: 0x6679da49
Found Double: gmemoffsetalignment Hash SDM845: 0xe021129c Hash MSM8998: 0x410b88c5
Found Double: multiviewMode Hash SDM845: 0xe2d3b32f Hash MSM8998: 0x6679da49
Found Double: importablecallablefallback Hash SDM845: 0x2ddc9f0c Hash MSM8998: 0x24884dc1
Found Double: pipelinecachemode Hash SDM845: 0x7548ee9f Hash MSM8998: 0xe320a439
Found Double: pipelinecacheMode Hash SDM845: 0x7548ee9f Hash MSM8998: 0xe320a439
Found Double: pipelinestatisticsquery Hash SDM845: 0x924afedd Hash MSM8998: 0x37d0ec74
Found Double: standardsamplelocations Hash SDM845: 0xd51efe58 Hash MSM8998: 0x7084ecf1
Found Double: dynamicscope Hash SDM845: 0x86ccc35c Hash MSM8998: 0xb2e99017
Found Double: baseoperatorpatchespwr Hash SDM845: 0x34910ad2 Hash MSM8998: 0x79bdda47
Found Double: enableglslshaders Hash SDM845: 0x733c486b Hash MSM8998: 0xe55402cd
Found Double: enablebinlog Hash SDM845: 0x85b7afb5 Hash MSM8998: 0xb192fcfe
Found Double: enablebinLog Hash SDM845: 0x85b7afb5 Hash MSM8998: 0xb192fcfe
Found Double: enableskipib2 Hash SDM845: 0xf28bee26 Hash MSM8998: 0x76218740
Found Double: enableshaderpreamble Hash SDM845: 0xec29e6de Hash MSM8998: 0xc97aadea
Found Double: enableshaderlog Hash SDM845: 0x771ee57 Hash MSM8998: 0xaed47445
Found Double: enableshaderLog Hash SDM845: 0x771ee57 Hash MSM8998: 0xaed47445
Found Double: tessellationshader Hash SDM845: 0x54d4266f Hash MSM8998: 0x99dd72bd
Found Double: minbinheight Hash SDM845: 0x5569e36c Hash MSM8998: 0x614cb027
Found Double: imagecubearray Hash SDM845: 0x387528ed Hash MSM8998: 0xad38043d
Found Double: preemptionstyle Hash SDM845: 0xd1941846 Hash MSM8998: 0x78318254
Found Double: winalignmenthf8 Hash SDM845: 0xf4436f95 Hash MSM8998: 0x5de6f587
Found Double: texbinningparams Hash SDM845: 0x7add859 Hash MSM8998: 0x331e9a0c
Found Double: directloadshaders Hash SDM845: 0x8b9106e5 Hash MSM8998: 0x1df94c43
Found Double: sparseresidency16samples Hash SDM845: 0xc88abedd Hash MSM8998: 0x7bc8ebe9
Found Double: sparseresidency8samples Hash SDM845: 0x128aa49a Hash MSM8998: 0xb710b633
Found Double: sparseresidency2samples Hash SDM845: 0x128aa4ca Hash MSM8998: 0xb710b663
Found Double: sparseresidencybuffer Hash SDM845: 0xa6270c14 Hash MSM8998: 0xc4e6a90
Found Double: sparseresidencyaliased Hash SDM845: 0x36125810 Hash MSM8998: 0x7b3e8885
Found Double: sparsebinding Hash SDM845: 0xd9f3f0f6 Hash MSM8998: 0x5d599990
Found Double: sparsefindinf Hash SDM845: 0xd9f3f0f6 Hash MSM8998: 0x5d599990
Found Double: sparseresidency4samples Hash SDM845: 0x128aa4fa Hash MSM8998: 0xb710b653
Found Double: skipgmemstore Hash SDM845: 0x1d8bbf35 Hash MSM8998: 0x9921d653
Found Double: skipgmemload Hash SDM845: 0x80e3b02c Hash MSM8998: 0xb4c6e367
Found Double: skipgmemstore Hash SDM845: 0x1d8bbf35 Hash MSM8998: 0x9921d653
Found Double: timesstopqjj Hash SDM845: 0x21455ce5 Hash MSM8998: 0x15600fae
Found Double: sortinterfacemaintenance3 Hash SDM845: 0x39d02d9a Hash MSM8998: 0x519a8b0c
Found Double: disableyuvpatching Hash SDM845: 0x9c8ca86f Hash MSM8998: 0x5185fcbd
Found Double: serveratracemenabledmtagsfree Hash SDM845: 0x51bd31c4 Hash MSM8998: 0x38dbb56e
Found Double: patchesselfheight Hash SDM845: 0x733c486b Hash MSM8998: 0xe55402cd
Found Double: subgroupsize Hash SDM845: 0x21455ce5 Hash MSM8998: 0x15600fae
Found Double: queuecount Hash SDM845: 0x5ec506d5 Hash MSM8998: 0x8c080f81
Found Double: pointclippingbehavior Hash SDM845: 0x2c5d6ffc Hash MSM8998: 0x86340978
Found Double: pointsizeprecision Hash SDM845: 0x46a9fdba Hash MSM8998: 0x8ba0a968
Found Double: gputype Hash SDM845: 0x35c24fe6 Hash MSM8998: 0x276bea7c
Found Double: gpuscopemode Hash SDM845: 0x200cb3ad Hash MSM8998: 0x1429e0e6
Found Double: gpuscopeMode Hash SDM845: 0x200cb3ad Hash MSM8998: 0x1429e0e6
Found Double: allowfastformats Hash SDM845: 0xa7b30bc1 Hash MSM8998: 0x93004994
Found Double: multiviewport Hash SDM845: 0xe2dd31fe Hash MSM8998: 0x66775898
Found Double: multidrawindirect Hash SDM845: 0x7b6a350f Hash MSM8998: 0xed027fa9
Found Double: multiviewmode Hash SDM845: 0xe2d3b32f Hash MSM8998: 0x6679da49
Found Double: multiviewMode Hash SDM845: 0xe2d3b32f Hash MSM8998: 0x6679da49
Found Single: cpucount Hash SDM845: 0xb932e9f2
Found Single: forcepunt Hash SDM845: 0xe6ffd49a
Found Single: depthclamp Hash SDM845: 0x4c66619
Found Single: depthbounds Hash SDM845: 0x9af6cdd3
Found Single: shaderint64 Hash SDM845: 0xfac69e57
Found Single: shadersubstitution Hash SDM845: 0x7431dc2b
Found Single: shaderint16 Hash SDM845: 0xfac69eb5
Found Single: ifhmode Hash SDM845: 0x981e9565
Found Single: ifhMode Hash SDM845: 0x981e9565
Found Single: subgroupsize Hash SDM845: 0x21455ce5
Found Single: geometryshader Hash SDM845: 0x53c4e744
Found Single: logicop Hash SDM845: 0xcaeca411
Found Single: maxsamples Hash SDM845: 0xd629775b
Found Single: gmemsize Hash SDM845: 0xd9dc9b44
Found Single: multiviewmode Hash SDM845: 0xe2d3b32f
Found Single: multiviewMode Hash SDM845: 0xe2d3b32f
Found Single: enablealias Hash SDM845: 0x941f20c2
Found Single: debugwait Hash SDM845: 0xcadc062e
Found Single: enablesubsampled Hash SDM845: 0x27c3dbd9
Found Single: debugprocess Hash SDM845: 0xe57d7f7c
Found Single: preemptionstyle Hash SDM845: 0xd1941846
Found Single: tessellationshader Hash SDM845: 0x54d4266f
Found Single: multiviewport Hash SDM845: 0xe2dd31fe
Found Single: dumpenvironment Hash SDM845: 0x18eb2f1e
Found Single: protectedmemory Hash SDM845: 0xbe5aa3f8
Found Single: queuecount Hash SDM845: 0x5ec506d5
Found Single: rendermode Hash SDM845: 0x1fd41fd8
Found Single: renderMode Hash SDM845: 0x1fd41fd8
Found Single: dynamicscope Hash SDM845: 0x86ccc35c
Found Single: sparsebinding Hash SDM845: 0xd9f3f0f6
Found Single: gputype Hash SDM845: 0x35c24fe6
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
#include <bitset>
#include <memory>
#include <thread>
uint32_t hash_msm8996(const std::string &string) {
uint32_t state{};
for (char c : string)
state = std::tolower(c) ^ (state << 0x5) ^ (state >> 0x1b);
return state;
}
// Technically same as 8996
uint32_t hash_msm8998(const std::string &string) {
uint32_t state{};
for (char c : string)
state = std::tolower(c) ^ ((state << 0x5) | (state >> 0x1b));
return state;
}
uint32_t hash_sdm845(const std::string &string) {
uint32_t state{0x425534b3};
for (char c : string) {
uint32_t c_int = c;
uint32_t lower = c_int | 0x20;
if (0x19 < (c_int - 0x41))
lower = c_int;
state = lower ^ (state >> 0x1b | state << 0x5);
}
return state;
}
struct result_entry {
enum class hash_type {
MSM8996,
MSM8998,
SDM845
} type;
std::bitset<UINT32_MAX> *set;
};
void check_str(const std::vector<result_entry> &results, const std::string &to_hash) {
bool found_sdm845{}, found_msm8996{}, found_msm8998{};
for (const auto &result : results) {
if (result.type == result_entry::hash_type::MSM8996) {
if ((*result.set)[hash_msm8996(to_hash)])
found_msm8996 = true;
} else if (result.type == result_entry::hash_type::MSM8998) {
if ((*result.set)[hash_msm8998(to_hash)])
found_msm8998 = true;
} else if (result.type == result_entry::hash_type::SDM845) {
if ((*result.set)[hash_sdm845(to_hash)])
found_sdm845 = true;
}
}
int score{found_sdm845 + found_msm8998 + found_msm8996};
if (score > 0) {
if (score == 1)
std::cout << "Found Single: " << to_hash << " ";
else if (score == 2)
std::cout << "Found Double: " << to_hash << " ";
else if (score == 3)
std::cout << "Found Triple: " << to_hash << " ";
if (found_msm8996)
std::cout << "Hash MSM8996: " << std::hex << "0x" << hash_msm8996(to_hash) << " ";
if (found_sdm845)
std::cout << "Hash SDM845: " << std::hex << "0x" << hash_sdm845(to_hash) << " ";
if (found_msm8998)
std::cout << "Hash MSM8998: " << std::hex << "0x" << hash_msm8998(to_hash) << " ";
std::cout << "\n";
}
}
void process_full(const std::vector<std::string> &full, const std::vector<result_entry> &results, const std::string &progress, int cnt) {
for (const auto &one : full) {
std::string layer{progress + one};
check_str(results, layer);
if (cnt > 0)
process_full(full, results, layer, cnt - 1);
}
}
void process_batch(const std::vector<std::string> &batch, const std::vector<std::string> &full, const std::vector<result_entry> &results, int cnt) {
for (const auto &one : batch) {
check_str(results, one);
if (cnt > 0)
process_full(full, results, one, cnt - 1);
}
}
int main(int argc, char *argv[]) {
if (argc < 4) {
std::cout << "<word list> <depth> [<msm8996/sdm845> <result list>]\n";
return 0;
}
constexpr int BatchSize{150}; // EDIT ME wordlist_size / cpu_count
std::ifstream wordlist_stream(argv[1]);
std::vector<std::string> wordlist_full;
std::vector<std::string> wordlist_batch;
wordlist_batch.reserve(BatchSize);
std::vector<std::vector<std::string>> wordlist_batches;
std::string data;
int i{};
while(getline(wordlist_stream, data, ',')) {
if (i > BatchSize) {
i = 0;
wordlist_batches.push_back(wordlist_batch);
wordlist_batch.clear();
}
wordlist_batch.push_back(data);
wordlist_full.push_back(data);
i++;
}
std::vector<result_entry> results;
for (int i{3}; (i + 1) < argc; i += 2) {
result_entry entry;
if (std::string(argv[i]) == "SDM845")
entry.type = result_entry::hash_type::SDM845;
else if (std::string(argv[i]) == "MSM8996")
entry.type = result_entry::hash_type::MSM8996;
else if (std::string(argv[i]) == "MSM8998")
entry.type = result_entry::hash_type::MSM8998;
entry.set = new std::bitset<UINT32_MAX>();
std::ifstream resultlist_stream(argv[i+1]);
while(getline(resultlist_stream, data, ',')) {
std::cout << "Set result: 0x" << std::hex << static_cast<uint32_t>(std::stol(data, 0, 16)) << '\n';
entry.set->set(static_cast<uint32_t>(std::stol(data, 0, 16)));
}
results.push_back(entry);
}
if (results.empty()) {
std::cout << "Invalid argument\n";
return 0;
}
std::vector<std::thread> workers;
for (const auto &batch : wordlist_batches)
workers.emplace_back(process_batch, std::cref(batch), std::cref(wordlist_full), std::cref(results), std::stoi(argv[2]));
for (auto &worker : workers)
worker.join();
}
0x8ab730ff,0xd1582c37,0xc0faf030,0x71e25046,0x81ff3722,0x9ca31cd8,0x6c4a6e64,0xea6445a5,0xea44c5a5,0xe4e78975,0x8cb3bc69,0x1429e0e6,0xe4e9a131,0xb91bc24,0x1e7a8c45,0x79b6756d,0x7499b56d,0x2d7cbede,0xe1ae974b,0xbd1200d4,0x49af7fda,0x276bea7c,0x78318254,0x8ffbf6e9,0x1e64be2e,0x331e9a0c,0xcd19168c,0x8ce82806,0x7fcf9b20,0x12e119cc,0x77a3d11d,0x77a3d01d,0x9afc53e2,0x614cb027,0x9afd45e2,0x616e7027,0x5de6f587,0x5de6f586,0x410b88c5,0x8120dc45,0x29ec4605,0x9be7ee46,0xbac8bd91,0x8db6ac49,0x501d145f,0xa6227ee5,0xa6ae7ee5,0x191bd0d7,0x855eb8fe,0xf2bd981d,0xad8a9895,0xc15eb8fe,0x333179a0,0xb93888f9,0x11122e23,0xe320a439,0x4fd65ab5,0x52cbdf84,0x76e2424c,0x8ab0bf6f,0x38dbb56e,0x8b7e2f11,0x4b5e2fa7,0x7e1cbf6e,0x8f64bf6e,0x90f234e2,0x33470ea1,0x3f828c12,0xdfdb78fb,0xb652cd7c,0x97f73a54,0x90b5947e,0xfa2788dc,0x25ed7fbd,0x59765d91,0x3f63d5d0,0xf80f7d7a,0xa906df73,0x8fb4f044,0xbcf628b4,0xa1b7802b,0x7109e197,0xde593a55,0x2cca3880,0x7b04dec9,0xf349ce83,0xdbc36906,0xc999823e,0xa48b6a37,0x31cf78db,0x49eb1872,0x1a1b0e08,0xe2b97634,0x5195de02,0x5195ee02,0xe2b9fe34,0xe2b9f634,0xef1329ef,0xbb1329ef,0xef087079,0xf7087079,0xff1329ef,0xfb1329ef,0xe2b9de34,0x68b34c22,0xd87d6a88,0x7a97c9f5,0xdf1f2c8b,0x4df87c56,0xd484d65d,0x917f7c24,0xc97f7c20,0x7474d389,0x7474d302,0x4db079ab,0xa56c9991,0x2b735e45,0xe09d2717,0xccb7fc53,0xe15670e8,0x3f170c5c,0x648ce9fc,0x999a9ceb,0x41fbee5f,0x3f0d3931,0x29f07021,0x4a9e5cf2,0x84a0d53f,0x575d69d6,0xeeaf9496,0x80e1257a,0x88711c72,0x8a1624a5,0x9265e39d,0xe5fe91aa,0x70e0f362,0x17f823f8,0x8d6fbefd,0x3f9f8305,0x995e3f6c,0xe43c7fa1,0x3e0e045d,0x3e0e045c,0x3e0e045f,0x9e3d33a2,0x99d0e43b,0x1c7c02bc,0x298f9731,0x25181731,0xc29e8888,0xa70662fc,0xdc10e26e,0xdd06e26e,0x2e9f33af,0xa2dcb92,0xb3bcb92,0x8ba0a968,0x366fc277,0x366fc2fc,0x977fd5a9,0x6632c2fc,0x2cf269bd,0x3967b574,0xddce7dd0,0xe9d431a2,0xdb30ffd0,0x41ccb84f,0x39120e54,0x841234ed,0x79d52ed5,0x39d4ce5a,0x2c71b8f2,0x3b2215ef,0x76ddf45a,0x3880d7c5,0xec6dd38c,0x1500c708,0x59b29dd3,0x8c080f81,0xaf0f5fa2,0xbfbc022a,0xd7f382c,0x910c736c,0x3af4b286,0x50400887,0xad38043d,0x78d6dd9,0xc689cb94,0x99dd72bd,0xe517ed35,0xea4cec8b,0x66775898,0x2bd616c0,0xd845018b,0xed027fa9,0xceeebbde,0x3ace7f89,0xd60b6f4d,0xc9dae84e,0xec35f1b1,0xc357e749,0xccf54082,0xa77967d2,0xafc652a5,0x8e2834bd,0xc164c0b6,0xbdebf160,0x37d0ec74,0xe7e771ac,0xc7b0664f,0x7ff1cc66,0x1c50e212,0x8d10fa9b,0x84c7ba5f,0xe56f470d,0xa6613daa,0x93f62783,0x532a9b28,0x425ecd25,0x766ebda0,0xbf4776f2,0xbf23caf2,0x5b49b07a,0xa367b4cd,0xa367b42f,0xe6dec717,0xd8d358df,0xc57a7e3f,0x5d599990,0xc4e6a90,0x79bdda67,0x79bdda47,0xb710b663,0xb710b653,0xb710b633,0x7bc8ebe9,0xdeeb0d2c,0xc90d227,0xde6b0d2c,0x4cd7cf15,0x24884dc1,0xa85abb64,0x7b3e8885,0x2df0fe28,0xc4c11db9,0x4fb9e873,0xdccc5351,0xb333f80b,0x23c5b396,0xcfa484e2
0x8ab730ff,0xc506fcb1,0xfa8df396,0xff8ed259,0xb4c6e367,0x9921d653,0xc26cd236,0xec065ab0,0x93004994,0x5a6e057b,0x500c5671,0x5aa8eb69,0x5c22c6df,0xd6e7689a,0xef5a1161,0xcff6665e,0x343ef776,0xb022dbe5,0x3708f37e,0xc1cc1628,0x76218740,0xd1582c37,0xc0faf030,0x71e25046,0xb80c7cfe,0xb192fcfe,0x81ff3722,0xdaa3b661,0x558b769e,0xeeb8f96,0x4e47e0f,0x7084ecf1,0xb6d613f9,0xf81e559d,0x9ca31cd8,0x76efa7cc,0xab6a5cc5,0x855092f1,0x6c4a6e64,0xea6445a5,0xea44c5a5,0xe4e78975,0xcb380050,0x8cb3bc69,0x1429e0e6,0xb2e99017,0xe4e9a131,0xb91bc24,0x36ab8631,0x1e7a8c45,0x70dc8141,0x6de48bd6,0x3634b7a5,0x6a82ded,0x79b6756d,0x7499b56d,0x104066d3,0x2d7cbede,0x49af7fda,0x276bea7c,0x56844b75,0x78318254,0x38aa87fd,0x1e64be2e,0x331e9a0c,0x4069bcd0,0x7fcf9b20,0x12e119cc,0x77a3d11d,0x77a3d01d,0x614cb027,0x616e7027,0x5de6f587,0x5de6f586,0x410b88c5,0x29ec4605,0x34045420,0x5fc9f27,0xadf6844f,0x8db6ac49,0x501d145f,0xa6227ee5,0xa6ae7ee5,0x191bd0d7,0x855eb8fe,0xf2bd981d,0xad8a9895,0xc15eb8fe,0x333179a0,0xaed47445,0xe55402cd,0xb93888f9,0x5b02c2ab,0x11122e23,0x1df94c43,0xe6529617,0xe320a439,0x4fd65ab5,0xf59bff8b,0x95f3f994,0x3cb81600,0x24ba530f,0x4445272e,0x7a1a4a7a,0x61e653e0,0x26d24234,0xf8af4730,0x9e1445a4,0x7b33a001,0x5185fcbd,0x5e67df62,0xc36d7467,0xc97aadea,0xe59610df,0xd99b3b76,0x542c4d1a,0x4dcecabd,0xc0073254,0xcab15030,0x5ad5c84b,0x93783cf7,0x1c7b3789,0x8c518d13,0x224f02a8,0x52cbdf84,0x76e2424c,0x8ab0bf6f,0x38dbb56e,0x8b7e2f11,0x4b5e2fa7,0x7e1cbf6e,0x8f64bf6e,0x90f234e2,0x33470ea1,0x833db5d7,0x3f828c12,0xdfdb78fb,0xb652cd7c,0x97f73a54,0x90b5947e,0xfa2788dc,0x25ed7fbd,0x59765d91,0x3f63d5d0,0xf80f7d7a,0xa906df73,0x35d45660,0x8fb4f044,0xbcf628b4,0xa1b7802b,0x7109e197,0xde593a55,0x2cca3880,0x7b04dec9,0xf349ce83,0xdbc36906,0xc999823e,0xa48b6a37,0x31cf78db,0x49eb1872,0x1a1b0e08,0xe2b97634,0x5195de02,0x5195ee02,0xe2b9fe34,0xe2b9f634,0xef1329ef,0xbb1329ef,0xef087079,0xf7087079,0xff1329ef,0xfb1329ef,0xe2b9de34,0x68b34c22,0xd87d6a88,0x7a97c9f5,0xdf1f2c8b,0x4df87c56,0xd484d65d,0x917f7c24,0xc97f7c20,0x7474d389,0x7474d302,0x4db079ab,0xa56c9991,0x2b735e45,0xe09d2717,0xccb7fc53,0xe15670e8,0x3f170c5c,0x648ce9fc,0x999a9ceb,0x41fbee5f,0x3f0d3931,0x29f07021,0x4a9e5cf2,0x84a0d53f,0x575d69d6,0xeeaf9496,0x80e1257a,0x88711c72,0x8a1624a5,0x9265e39d,0xe5fe91aa,0x70e0f362,0x17f823f8,0x8d6fbefd,0x3f9f8305,0x995e3f6c,0xe43c7fa1,0x3e0e045d,0x3e0e045c,0x3e0e045f,0x9e3d33a2,0x99d0e43b,0x1c7c02bc,0x298f9731,0x25181731,0xc29e8888,0xa70662fc,0x5d65beda,0xdc10e26e,0xdd06e26e,0x2e9f33af,0x2f37c583,0xa2dcb92,0xb3bcb92,0x8ba0a968,0x366fc277,0x366fc2fc,0x977fd5a9,0x6632c2fc,0x2cf269bd,0x76bf22ac,0x3967b574,0xddce7dd0,0xe9d431a2,0xdb30ffd0,0x41ccb84f,0xcee6591f,0x16ea718b,0x6679da49,0x15600fae,0xc1e436fa,0xbb3f8a79,0x39120e54,0x841234ed,0x79d52ed5,0x39d4ce5a,0x2c71b8f2,0x3b2215ef,0x76ddf45a,0x3880d7c5,0xec6dd38c,0x1500c708,0x59b29dd3,0x8c080f81,0xaf0f5fa2,0xbfbc022a,0xd7f382c,0x910c736c,0x3af4b286,0x50400887,0xad38043d,0x78d6dd9,0xc689cb94,0x99dd72bd,0xe517ed35,0xea4cec8b,0x66775898,0x2bd616c0,0xd845018b,0xed027fa9,0xceeebbde,0x3ace7f89,0xd60b6f4d,0xc9dae84e,0xec35f1b1,0xc357e749,0xccf54082,0xa77967d2,0xafc652a5,0x8e2834bd,0xc164c0b6,0xbdebf160,0x37d0ec74,0xe7e771ac,0xc7b0664f,0x7ff1cc66,0x1c50e212,0x8d10fa9b,0x84c7ba5f,0xe56f470d,0xa6613daa,0x93f62783,0x532a9b28,0x425ecd25,0x766ebda0,0xbf4776f2,0xbf23caf2,0x5b49b07a,0xa367b4cd,0xa367b42f,0xe6dec717,0xd8d358df,0xc57a7e3f,0x5d599990,0xc4e6a90,0x79bdda67,0x79bdda47,0xb710b663,0xb710b653,0xb710b633,0x7bc8ebe9,0xdeeb0d2c,0xc90d227,0xde6b0d2c,0x4cd7cf15,0x24884dc1,0xa85abb64,0x7b3e8885,0x2df0fe28,0xc4c11db9,0x86340978,0x4fb9e873,0xdccc5351,0xb333f80b,0x23c5b396,0xcfa484e2,0x88138fc8,0x88138fcb,0x88138fca,0x6b6a8c1c,0xf4580a79,0x83c58266,0xf8e18eaa,0x7b308b0b,0x9792f3cb,0xc7f3064d,0xc204fc12,0x4e529b67,0x4db2d78d,0xfd94dcc4,0x519a8b0c,0x45875869,0xbb24f843,0xf2c2994f,0x4ca689c5,0xdea7acf8,0x9973a311,0xa1c96d19,0x6a93561,0x986b0956,0x67e216aa,0xced7508,0x2c6339bb,0x876dc857,0xeeee5a31
0x981e9565,0x17cbf5e5,0x7e279af0,0x7b24bb3f,0x80e3b02c,0x1d8bbf35,0x9127e613,0xb932e9f2,0xa7b30bc1,0x533ad7b6,0xf126cc28,0xff32f9c0,0xc08e7086,0xf64ba05b,0x65a53dae,0x7a173db1,0xd2cbd003,0x99fa2f50,0xb1b7c3bd,0xa7bcc0c8,0x791227e3,0x96226927,0x91371606,0x60e68c71,0xf28bee26,0xeb254947,0x6e5bc873,0x91417df9,0xe57d7f7c,0x6560e299,0x19a8f6d0,0x3b9fba96,0x6c207700,0xa0746926,0x8c292fb5,0x85b7afb5,0x32bd6216,0x5e09df07,0xc0c65a4e,0xbaf33422,0xddcef280,0x43c75f03,0xd629775b,0xd51efe58,0x17fc89a0,0x3517014f,0xc5023642,0xeae93b9d,0xec793db9,0xa0f85d3d,0xbbe6f31e,0x87bac988,0xc705a642,0xcadc062e,0x7c0c0f03,0x7c2c8f03,0x728fc3d3,0xd5828f5,0x1bad4d7c,0x19fe90b9,0x47e298b,0xbbbcfe28,0x49590963,0x1b91aed0,0x69cd4e3b,0xbac2579c,0x2dc3dc5f,0x5eaf9add,0x6ba61ffa,0xd2650824,0xbc5f3b12,0xe3090681,0x200cb3ad,0x86ccc35c,0x4d4c3b23,0x2ec2f710,0x4d38a389,0xb47056ef,0x9d5bcdc3,0x74feb282,0x8812c6e3,0x5a46d8e0,0xccce118f,0x3f606568,0x87a6581d,0x602c8784,0x4d932626,0x40bce626,0x94ea0fb5,0x18eb2f1e,0x7cf29a2a,0xffb1b78a,0x74e3bb9b,0xb30ffaa4,0xe3c6195e,0x35c24fe6,0xe04b3b8d,0x52b679e,0xd1941846,0x127ef24a,0xbb338460,0x1993bc4f,0xbf4e2477,0x7add859,0x1fd41fd8,0xe6ffd49a,0xd9dc9b44,0x4beac86b,0xbb4483de,0xbaaa85cf,0xbaaa84cf,0xc35d7978,0x5569e36c,0xc35c6f78,0x554b236c,0xf4436f95,0xf4436f94,0x9be95fff,0xe021129c,0xa82e5d8d,0xb51b0add,0xa29ce113,0xd0337ef8,0xe6522b4,0xfea220d6,0x7e06958e,0xd881f6df,0x1dc9154e,0x1e9e0d81,0x92b33c8b,0xa4d6057e,0x719c929f,0x1ee26e4c,0x17ba74e3,0xc920ceb5,0xf457aed5,0x3ef4f97d,0x356207a,0xc4b1861,0xa13b9273,0xcc71861,0xb8314a8e,0x771ee57,0x733c486b,0x7431dc2b,0xc1106b0e,0x34416517,0x8b9106e5,0x7548ee9f,0x6a851181,0xdf01a62a,0xe77754c1,0x8ffa4334,0x1009115a,0xd3bfd068,0x55c300ab,0x8348509d,0x90e5e1a6,0x20f92c4a,0x3b8e570d,0x620e25c0,0xb63af4d3,0x9c8ca86f,0x8caad636,0xf7de3632,0x45c3a67e,0x3d2c9be7,0x3923d7f,0xec29e6de,0x9c6cd61b,0xcf0c497e,0x8caf8834,0xf1b65fb3,0xe21a28,0x6a6e54d0,0xc3e582fd,0x704f91ea,0x9a2cee3a,0xb5974ee7,0x5157e71c,0x164324b6,0xd0206d97,0x2b1bd065,0xc18ffed0,0x3ef48a3c,0xae4790ea,0x486b0158,0x8c6096e4,0x941f20c2,0x5e32ac22,0xc0852e3d,0xcf8153fe,0xe554c76f,0x1fe70f11,0x5c781bed,0x83e46da2,0x51bd31c4,0xd8351b34,0x18151b82,0x77486da3,0x86306da3,0x35e10f3b,0xc3781aca,0x70805c4d,0xaa4fcd1d,0x77406da3,0x74b6a941,0xf4e35d7,0x65c0fd0d,0x6d587fa2,0x82e18f29,0x5afe6e86,0x5dbcc0ac,0x4965dde8,0xbfffd618,0xea3408a5,0xa5717c75,0x4b4d284e,0x1a448a47,0x10871d54,0x906cea08,0x1af9dc94,0x71ff7c66,0x9504c27e,0xd493f33e,0x13506e87,0x8de0a2d9,0xc8468bfd,0x400b9bb7,0xb389cf90,0x7adbd70a,0x3e99c392,0xab96d9f1,0x4c7c8e7,0xb072688c,0xc116d630,0xab063dc,0x5fc482c1,0x4977662d,0x3b161aa0,0x63161aa4,0x3958031c,0x39580397,0xab06b9c,0x25fadf3d,0x162ecca5,0x8ee94cec,0xadb1f782,0x6776de95,0xaa33563a,0x407ceab1,0xba44e09,0x56f1f1bb,0xb300c54a,0x6b61b7fe,0x48e5dded,0xb286a7a,0x70515abb,0x87970820,0x49a981ed,0xe7fb465b,0xc2b411c9,0xa2eb45d3,0xe25c8233,0x83c42b7,0xd1ca693b,0x23dd70b3,0x2706d879,0x72b35390,0xbc0d7458,0xcea62600,0xa2b5716,0xa2b5717,0xa2b5714,0xaa1860e9,0x30757e29,0x392f4988,0x1d3cd564,0x11ab5564,0x588c212d,0x6a0f362e,0x7d3a7837,0x7c2c7837,0xe396677d,0x7696ef19,0x1af8d598,0xab0751cb,0xaa1151cb,0x46a9fdba,0x7b4312e2,0x7b431269,0xd6d7c0c,0xc71858a5,0x9fb03c89,0xd3253005,0x6a2c8151,0x891cb0d9,0x5a966496,0x961c2f45,0x79ccf27b,0xefb32f12,0xd481949f,0x588e13b9,0xbc83170f,0xe2d3b32f,0xc08dcaee,0xa8038b56,0xc20b0ce8,0x6164f288,0x6164f203,0x7c892d53,0x72978634,0x55dc26e6,0xffa5ca50,0xff870a50,0x85ca5b13,0x98d9d608,0x27c3dbd9,0x3ab6bb6f,0xc6666ad9,0x21455ce5,0x5cc58e28,0x3cc58e39,0xa9ae906c,0xf6135aec,0x743edec1,0xc93ee478,0x4d666c80,0xd678c0f,0x1f58d8d1,0xba19f254,0xfdf36996,0x5bfb7577,0x3276c722,0x3bf124cf,0x6bcbe3e0,0xd8de91d9,0x7a96292,0x50e64f1e,0x5ec506d5,0x3317079a,0x1e42c27c,0xcafa416c,0x1a261083,0xa8e52a85,0xbe5aa3f8,0xe541d5e3,0xa5bf3139,0xf57be2d9,0x694345f1,0xca1290bc,0x4520c4c4,0xdea1e42c,0x8de6519b,0xf7fde654,0xf16a92de,0x387528ed,0x333e2f8c,0x53c4e744,0xc9a24006,0x54d4266f,0x20fd8005,0x737fa793,0x7c24a62d,0xe2dd31fe,0x82738cd2,0xcaeca411,0x7b6a350f,0xa6a41d48,0x90a7190d,0x4c66619,0x5c97c49e,0xd886b3e4,0x9af6cdd3,0x6a6328c8,0xfed84d48,0xe2ea8230,0xc48ea2d5,0xc830127b,0x98b8ba54,0x924afedd,0x718f3b0a,0x669afc16,0xaf64814a,0x741a4484,0xe4767e31,0x1e9e1b75,0xae5b625e,0xecc7abc2,0x815f8219,0x83bfd604,0x50f768bf,0xa6fbf08c,0xf143db09,0x94c97716,0x6762bf5f,0x724e2220,0x722a9e20,0xdfe3d91c,0xfac69e57,0xfac69eb5,0x4344d5be,0xfd8013eb,0x417336b5,0x17b7776b,0xfdde41ac,0x8b7396d3,0x3845f90c,0x32676ca9,0x537ed190,0xd9f3f0f6,0xa6270c14,0x34910af2,0x34910ad2,0x128aa4ca,0x128aa4fa,0x128aa49a,0xc88abedd,0x44b2ac06,0x99ddfef7,0x4432ac06,0x25b14bbf,0x2ddc9f0c,0xea0f8fd7,0x36125810,0x886aec81,0xf0725fec,0x2c5d6ffc,0x3136d3a3,0x73532f98,0x56b51aa6,0x7d3ce286,0x13c80205,0x788644e5,0x99d39275,0xa0c31250,0xd5c971be,0xccdef0,0x1f73040,0x37e4bf2,0x9f32e6e,0xaac4878,0xc591e7d,0xd805a6e,0x123c3763,0x134a31ff,0x16cc6c4c,0x1776f1c3,0x17dd0ca5,0x1a80a5c0,0x25f8711b,0x2671a83d,0x267ed4db,0x29391591,0x29391592,0x29391593,0x29843aa5,0x2b612c64,0x2d0191e8,0x304059d8,0x34e5d00f,0x38593948,0x39d02d9a,0x3e27af97,0x44b5055d,0x45e5d229,0x471a5f4d,0x4b85e5f4,0x4c45e5a6,0x4d5697a4,0x4ee5f927,0x4fc4c068,0x51aad2aa,0x585d5d38,0x58abffcb,0x5c029c11,0x5f4cde05,0x5fd9ce49,0x62b82f80,0x69463fd0,0x7166ba83,0x80d1a520,0x8a05e11c,0x8eb43ba4,0x8eb45ec2,0x9a853fae,0xa0b0665d,0xa661dd64,0xa696c952,0xaea18bc8,0xb06109eb,0xb5c1cc6f,0xb7124cc4,0xbe7aa29e,0xbe83dd7d,0xc1fdc90a,0xc21bad70,0xc8afe9b3,0xc9865516,0xc9bad40c,0xcf868dd0,0xd2cd9f3e,0xd426fc72,0xd5381568,0xd6067eac,0xdbe20ad8,0xe16a6d69,0xe6c7f1ef,0xeaf7cfd6,0xed695fec,0xeff6354a,0xf9b17f24,0xfcfbbd47,0xfdbbb780,0xffe4dcf1
commands,semaphorem,descs,fast128bpp,exportable,compiled,program,signed,volatile,vtx,blendfill,256,small,subst,fast4444,fopen,arithmetic,qccm,native,qoj2b,22n,binary,d,transient,mi88m,linkprogramm,caches,int64,adrenom,reserve,gslmtimestampmcmp,interface,reallocate,qti,image3,hlsl,merge,difftime,jw8x,cleanup,check,fread,ended,choose,anisotropyshader,temporary,g,deferred,formatsshader,destination,channel,fast32bpp,targets,mmap,params,with,jf0,ras,long,bne6,copy,gslmmemorymmunmap,ajb,9nb,adreno,cntl,unsigned,enumerate,zj,op,packet,mj7,imcbs,180,family,extended,shadertype,bits,return,fast32,spirv,surfaces,dladdr,pthreadmcondminit,intel,stores,conservative,directfb,inverted,merged,jjn,gslmmemdesc,gslmibdesc,triangles,opaque,indirect,address,separate,nv,coarse,atracembeginmbody,row,ccu,hcuem,pcode,red,insertfence,virt,amd,horizontal,monitors,alloc,maintenance3,on,box,varyings,order,offset,arrayindependent,maintenance1,jal,bltlib,viz,jp,wrapper,general8888,blend,osmalog,rk9,chained,build,store3,jja,inherit,mprotect,pool,defer,ptr,win,requirements,rgsma4x,atracemsetup,rgba,bind,general1555,bindable,full,sum,scratch,...,buffer2,coherent,dependency,supported,to2,1c4,opmulti,valid,tehb8,residencyshader,tja,metadatam,pointslogic,clamp,lookup,rasterization,line,post,errno,ray,wayland,waittimestamp,submit,ozc,s0,dirty,khrmswapchain,worker,jp8,event,virtual,x,explicit,resources,blt,internal,idx,destroy,pbj,concurrently,lightweight,chunk,offsets,dump,memcmp,wave,source,void,wait,khrmwin32msurface,2jo8,miptail,bufferm,bindingsparse,bhu,search,calloc,gslmcontextmdestroy,priority,parameter,array2,jump,hwshader,rectangle,pci,gdi,burst,errata93,sint,errata52,subpass,meta,nonstandard,drawtype,regions,he8,logic,binning,bypass,model,pipeline,gettimeofday,destroyed,early,glsl,instances,online,lrzm,face,calc,tj,kill,viewport,name,nkg80,image2,patching,description,njk,time,origin,print,aj7,via,exit,sbqhj,cntl0,pregenerated,mcxamfinalize,texture,base,qcom,framebuffer,level,add,usage2,passm,draw,push,atfork,compiler,operation,kmt,logging,stream,conv,get2,cacheoperation,aynb,severity,importable,len,diagnostic,composite,ib2,decode,handle,gslmsyncobjmclone,timer,cached,type,used,none,style,update,qdj,timeout,factor,jw87,preprocess,irshader,compaction,equation,qjj,core,jljb7,dirname,conversion,tolower,sysconf,gmu,buffers,only,quad,gslmmemorymread,assembly,mpopcountdi2,b,mask,stateblockidm,tmp,viewm,access,mcxampuremvirtual,debug,utils,disabled,notify,checktimestamp,discard,fprintf,barrier,bk9,functionality1,transition,the,mem,a506,wjo,structure,coverage,file,memoperator,sendto,override,propertymset,pthreadmcondmwait,bd9i,trace,formatshader,relaxed,robustness,determine,sampled,grasm,shuffle,reconstruction,while,for,google,realloc,fmt,derivative,setting,resolve,depth,semantic,mutex,bool,tiling,initialize,statistic,ratevertex,dispatches,pthreadmself,residency16,issueib,increment,memory,view,dso,signaled,srcshaderm,gslmsyncobjmdestroy,ij2,int,dlsym,dbg,imf,vk,perf,ejc,etc2,calculate,get,proc,from1,afj,information,vbifm,times,planar,bias,scissor,queryrobust,macrotype,flag,blit,dj6s,dependencies,transparency,poke,after,int64shader,open,descriptor,errata97,workloads,qct,remove,mmemcpymchk,vfprintf,float16,entry\n,objm0,from,handler,replacement,a9h,fbo,groupm,imagem,wsi,memory2,relative,tir,pthreadmmutexmlock,gslmcacheopmbuf,capabilities,pass,strncmp,border,gcn,imagepipe,stats,errata58,pthreadmcondmsignal,libcm,strtok,disable,primitive,pipelinem,vertices,assign,executable,generate3,timing,zmodem,matrix,optimized,alignment,nothing,reg,capabilities2,fd,asjj,uniform,alias,swap,verts,gating,field64,purpose,bindless,pm4,tests,until,subgroup,clipping,instruction,hb8c,glslmshader,planes,socket,presentable,uints,ha8c,gslmcontextmtype,residency8,object,clockmgettime,hash,dst,are,residency2,khrmsurface,ggp,release,memalign,availability,vfd,mesh,lib,128,patches,block,engine,unpre,count,logger,scaled,hardware,poolm,rotate,kbkdxf,1,imageless,bins,rendering,compilation,support,table,message,fast565,pregenerated2,trinary,sizes,qctpixelformat,unordered,samplessparse,export,patchedhwshader,counter,gslmsyncobjmdupmfd,include,temp,invalidate,reason,partial,parameters,unlock,to32bpp,length,astc,available,extent2,array,tp,apply,input,9v2,no,ujn,budget,memcpy,fast1555,filter,register,init,use,constant,control,jl9,cpu,h9d2,pix,prebuild,bin,texel,requirements2,fast24bpp,rgb,monitor,partition,instancedual,phys,true,subgroups,errata72,window,chip,cmd,without,get3,capture,advanced,pipe,divisor,node,inputs,create,passes,myr,context,allocate,ranges,linear,descriptors,buffersparse,high,errata44,late,alog,stat,perfcounter,slot,invert,receive,modem,timestamp,sysmem,multi,untile,info2,pvrtc,ref,data,linkprogram,zmode,affinity,workaround,getpid,mregistermatfork,qazj,cmp,callbacks,ftell,counters,aligned,screen,modulem,allocation,vert,visibility,increments,subset,doubly,covers,scaling,cst,to,start,frag,jx8w,shadertexture,left,exclusive,sv0,api,synchronized,resetstatus,integer,any,indexed,float64shader,verbose,code,reserved,decorate,target,onedepth,surf,auto,compile,compare,distanceshader,posixmmemalign,const,write,fgets,indexing,inf,dim,qv2c,specialization,slow,atexit,downsample,conditional,host,range,compiletoirm,clock,convertable,error,fencem,dis,commitment,custom,layout,rect2,passthrough,images,semaphore,image,yuv,portability,vulkan,stage,prop,active,additonal,streams,test,ram,path,direction,fputc,expand,errata79,unreserve,inst,gslmdeviceid,of,atexit\\\\n,element,prune,shaderlimitm,initial,ldrs,compression,front,mprogname,getinfo,\t,dlsym\\n,win32,inline,yield,ib1,ny,rma,gslmcontextmcreate,buffer,deserialize,alwayson,4444,aspect,h88,index,locations,oob,pre,clear,value,tiled,c93c,atracemenabledmtags,src,preemption,maintenance2,framebufferm,branch,arrays,prev,optimal,enum,required,swizzle,hit,delete,ballot,param,current,total,bank,linked,negative,aabbs,quj,limits,char,clears,a508,describe,non,postamble,stateblockid,strrchr,double,generate,thunk,wrap,default,hlsq,cooperative,fences,compressed,aliasing,static,jkb,subresource,standard,rl,calibrated,factory,8bit,controls,metal,mode,bus,acquire,generic,general24to32bpp,tex,gslmtimestampmtype,snprintf,sm,xcb,plane,issue,swapchain,average,strlcat,qglmemobj,join,robustness2,checkpoints,encoding,msaa,modifier,ne,allocator,promote,named,bit,memorym,managed,ops,ryn,asic,vars,extent3,failed,snorm,geometry,adapter,match,synchronization2,general,workload,signal,can,unused,ready,convert,chr8d,nj,results,could,end,shading,super,addr,timedwait,command,fuchsia,guard,th5x,symbols,terminate,markers,continue,jp0,pthreadmjoin,addrs,bounds,dimensions,modifying,finalize,inc,uav,decrement,features,fast16bpp,mvk,closest,strcmp,granularity,shadingsampler,decompress,hf8,vsnprintf,unresolve,qglinternal,form,pointer,errata92,gslmdevicemgetinfo,first,flush,zdx,low,shaders,ordered,solidfragment,shaderm,multisample,symbol,reset,qzjabqj,state,builtins,skip,back,membind,vbif,eventm,rfr,bljxrlj,mcxamguardmacquire,module,progname,duplicate,begin,valve,optimization,timeline,texmem,nvx,dimension,kmd,khr,distribution,combination,gslmsyncobjmcreate,munmap,settype,triangle,qglinternalvk,rects,mipmaps,operator,uncompress,ifh,raster,properties2,size,shaderstate,syncobj,errata103,elements,fclose,mgr,rop,readtimestamp,ou,colorspace,replay,uint32geometry,allocated,stop,texmemm,tool,col,gslmsetmpwrctrl,execute3,cachem,preamble,ubwc,s3tc,instance,remote,cull,aliasedsparse,workarounds,kp8,android,query,lazily,fallback,setsockopt,strcasecmp,32,user,drm,dtessellation,bindm,pthreadmmutexminit,storage",must,threshold,iterator,mcxamatexit,rt,externally,field,height,int8,cache,accumulate,but,max,reference,extendedshader,multiview,lod,rbm,accept,precisepipeline,groups,vote,tessellation,performance,consts,instructions,rate,indexingshader,16bit,list,constants,tooling,functions2,midpoint,gslmsyncobjmmerge,forced,import,footprint,cacheop,heap,etc2variable,pkj,substitution,sampleable,registers,indirectmulti,propertymgetmbool,rgs,threaded,chk,samplerm,msg,gslmmembindmregion,imgextensions(imaginationtechnologies),threads,a540,loop,ljk,miss,attachments,uses,strlen,short,fflush,opt,bc4,gmem,float,component,report,xqn,timestamps,substitute,subpasses,errata,atomic,rgb888,device3d,shaderlimit,bctexture,restore,invocation,link,limit,bpp,display,alignments,optimize,patchshaderm,gha,allow,ssbo,dup,enums,extension,result&,rect,sp,facing,multisampleshader,patchshader,shader,basis,result,cubic,ycbcr,pwrctrl,16,bound,read,derivatives,cond,protect,sched,desc,lrz,mapped,immediate,cmds,lodshader,prim,outputs,gslmmemorymmmap,renderm,allocm,h68,gslmmemorymbind,direct,entries,errata77,tracing,qctrotation,qjux,prefer,layouts,int16,adjust,sub,int16shader,queue,stencil,clampdraw,basename,constraint,func,pthreadmdetach,dlopen,template,attributes,free,nn,varying,dd,dlclose,20,unrestricted,before,async,atracemintmbody,he8a,select,validate,use3,imcb,bjb,noncoherent,srcshader,region,clustered,fast24to32bpp,jkqwj,premultiplied,fast8bpp,acceleration,system,patched,a5x,contention,deviceid,metadata,clip,task,unknown,angle,qcc,filtered,extensions,draws,freememontimestamp,jarwj,right,single,layer,force,stamp,zero,rotated,sjdbsj,sample,prepare,listen,blob,mip,counterclockwise,filterable,isdb,log,debugging,padding,thread,precise,trim,layoutm,commands2,posix,entire,mirror,strlcpy,events,chroma,edge,forceable,enable,pwc,sdp,dsparse,unmap,lines,retire,profiler,marker,dma,accum,hashes,format,sort,buf,jb,regs,uint8,str,puj,protected,qaj,surface,renderpass2,insert,bulk,spec,fill,occlusion,lens,set,compatible,flip,disjointable,frame,behavior,a505,physical,memset,and,map2,validator,helper,mbssmstart,general4444,viewportocclusion,bcn,section,ubo,uncached,settings,contents,demote,chain,astc_,number,identity,reduction,seperate,pwj,pjc,properties,general32,renderable,be9c,tile,library,local,half,ifd,storage,medata,boundsdepth,peer,io8f,alpha,gslmmemorymnotify,strtoul,correction,cube,mmap64,load,values,4,obj,ratio,ext,attribute,body,patch,atracemmarkermfd,sequences,exec,page,specializationm,sys,fetch,density,querieslarge,gather,precision,ios,copy3,residency,atrace,a512,min,xlib,parse,output,qgl,sublist,rotation,instancing,reconstruct,fast8888,compiletoir,pam,dedicated,gslmsyncobjmwait,linear24bpp,flagbuffer,useable,qglc,expected,detach,feedback,overrides,preserve,csc,present,subsampled,pgm,clampdepth,disjoint,render,pending,frontface,queuem,infom,failure,r,compute,args,independence,minmax,dec,num,jct,impacting,confirm,baseoperator,samplers,fragment,pthreadmcreate,vpc,memstore,rbga,fwrite,hlsqm,not,global,config,profiling,corner,next,status,tjb,mixed,raygen,sam,blendable,usleep,partitioned,getaddr,unsupported,application,fseek,samples,has,vsc,impacted,perfcountergroupid,old,gmqgl,creation,accumulated,vertical,mcxamguardmrelease,fast,vid,img,partially,nzi,freed,macos,binding,fail,usage,atomicsfull,ldrtexture,setup,sampler,devicem,driver,compress,fcntl,adb,idle,representative,final,float32,highest,sparse,strstr,all,flags,diagnostics,qglcm,transform,gslmsetmconstraint,needed,find,clone,raise,additional,pixel,shaderimage,queries,feature,jt8,winrt,external,map,strtokmr,tag,shared,by,aliased,fence,pname,gk68,features2,automatic,unconfirmed,cxa,blendinherited,bj1,blj,scalar,append,pointers,pack,callable,execute,transfer,errata80,multiplied,gfx,tess,class,align,validation,attachment,workgroup,one,exists,flow,sysinfo,nq,malloc,require,server,exceeds,headless,gslmdevicemopen,barycentric,resource,struct,environment,shadermemm,setm,token,defaults,lock,close,bytes,bottom,rectangles,punt,info,client,gslmlibrarymopen,deselect,generated,w,gsl,states,upsample,qnx,may,dynamic,vi,errata74,mstrlenmchk,renders,uuid,string,indexingsparse,memdesc,formats,cosited,res,operations,space,entry,unaligned,stack,eval,store,device,uint,area,reporting,types,point,gpu,exp2f,incremental,split,per,srgb,mutable,vtable,vblank,residency4,packing,sync,field32,certain,visible,wjd,private,keyed,errata64,statistics,property,variable,mipmap,secondary,overwrite,pure,gras,null,field512,warning,enabled,merrno,save,serialize,gettime,tpm,mktime,pipelines,vkm,ibdesc,flex,xcnqv0,gslmdevicemclose,rqt,xto,shadermem,errata54,rbdp2,dispatchable,atracemismready,invocations,mstrrchrmchk,graphics,textured,macro,top,gen,foreign,self,general565,position,color,jd,primitives,fast64bpp,intersection,group,process,sets,"vk,renderpass,basic,version,ljf,hpb,a,atomicswide,scope,vpcm,bufs,mandroidmlogmprint,bucket,aniso,mag,wj4,accesssample,perform,mfwritemchk,tracking,dispatch,sds,gralloc,multipass,pwr,gslmlibrarymclose,overallocation,representations,64,hdr,a530,vertex,tags,devices,simultaneous,clientm,interlock,srand,mstrlcatmchk,new,instancem,evaluation,rjdpmj,sizeshader,width,propertymget,fixed,configure,Dbg,Print,Debug,Mode,Settings,Enabled,Mask,Uint,Bool,Disabled,Hash,Init,Info,Info,Error,Debug,Warning,Log,Logging,Print,Logged,Logger,Qgl
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment