mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-14 15:46:28 +00:00
Descriptorize ShaderModule
Change-Id: Ic79d00380f583485de0fb05bd47b1f869919ebe6
This commit is contained in:
committed by
Corentin Wallez
parent
3ccde9ce72
commit
df6710358b
@@ -25,9 +25,9 @@
|
||||
|
||||
namespace utils {
|
||||
|
||||
void FillShaderModuleBuilder(const dawn::ShaderModuleBuilder& builder,
|
||||
dawn::ShaderStage stage,
|
||||
const char* source) {
|
||||
dawn::ShaderModule CreateShaderModule(const dawn::Device& device,
|
||||
dawn::ShaderStage stage,
|
||||
const char* source) {
|
||||
shaderc::Compiler compiler;
|
||||
shaderc::CompileOptions options;
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace utils {
|
||||
auto result = compiler.CompileGlslToSpv(source, strlen(source), kind, "myshader?", options);
|
||||
if (result.GetCompilationStatus() != shaderc_compilation_status_success) {
|
||||
std::cerr << result.GetErrorMessage();
|
||||
return;
|
||||
return {};
|
||||
}
|
||||
|
||||
// result.cend and result.cbegin return pointers to uint32_t.
|
||||
@@ -58,7 +58,10 @@ namespace utils {
|
||||
// So this size is in units of sizeof(uint32_t).
|
||||
ptrdiff_t resultSize = resultEnd - resultBegin;
|
||||
// SetSource takes data as uint32_t*.
|
||||
builder.SetSource(static_cast<uint32_t>(resultSize), result.cbegin());
|
||||
|
||||
dawn::ShaderModuleDescriptor descriptor;
|
||||
descriptor.codeSize = static_cast<uint32_t>(resultSize);
|
||||
descriptor.code = result.cbegin();
|
||||
|
||||
#ifdef DUMP_SPIRV_ASSEMBLY
|
||||
{
|
||||
@@ -87,14 +90,8 @@ namespace utils {
|
||||
printf("\n");
|
||||
printf("SPIRV JS ARRAY DUMP END\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
dawn::ShaderModule CreateShaderModule(const dawn::Device& device,
|
||||
dawn::ShaderStage stage,
|
||||
const char* source) {
|
||||
dawn::ShaderModuleBuilder builder = device.CreateShaderModuleBuilder();
|
||||
FillShaderModuleBuilder(builder, stage, source);
|
||||
return builder.GetResult();
|
||||
return device.CreateShaderModule(&descriptor);
|
||||
}
|
||||
|
||||
dawn::Buffer CreateBufferFromData(const dawn::Device& device,
|
||||
|
||||
@@ -18,9 +18,6 @@
|
||||
|
||||
namespace utils {
|
||||
|
||||
void FillShaderModuleBuilder(const dawn::ShaderModuleBuilder& builder,
|
||||
dawn::ShaderStage stage,
|
||||
const char* source);
|
||||
dawn::ShaderModule CreateShaderModule(const dawn::Device& device,
|
||||
dawn::ShaderStage stage,
|
||||
const char* source);
|
||||
|
||||
Reference in New Issue
Block a user