diff --git a/core/common.go b/core/common.go index 808202d..7acf812 100644 --- a/core/common.go +++ b/core/common.go @@ -325,17 +325,17 @@ const ( // ZeExternalMemoryTypeFlags (ze_external_memory_type_flags_t) External memory type flags type ZeExternalMemoryTypeFlags uint32 const ( - ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_FD ZeExternalMemoryTypeFlags = (( 1 << 0 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_FD an opaque POSIX file descriptor handle - ZE_EXTERNAL_MEMORY_TYPE_FLAG_DMA_BUF ZeExternalMemoryTypeFlags = (( 1 << 1 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_DMA_BUF a file descriptor handle for a Linux dma_buf - ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32 ZeExternalMemoryTypeFlags = (( 1 << 2 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32 an NT handle - ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32_KMT ZeExternalMemoryTypeFlags = (( 1 << 3 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32_KMT a global share (KMT) handle - ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D11_TEXTURE ZeExternalMemoryTypeFlags = (( 1 << 4 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D11_TEXTURE an NT handle referring to a Direct3D 10 or 11 texture resource - ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D11_TEXTURE_KMT ZeExternalMemoryTypeFlags = (( 1 << 5 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D11_TEXTURE_KMT a global share (KMT) handle referring to a Direct3D 10 or 11 texture + ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_FD ZeExternalMemoryTypeFlags = /* ZE_BIT(0) */(( 1 << 0 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_FD an opaque POSIX file descriptor handle + ZE_EXTERNAL_MEMORY_TYPE_FLAG_DMA_BUF ZeExternalMemoryTypeFlags = /* ZE_BIT(1) */(( 1 << 1 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_DMA_BUF a file descriptor handle for a Linux dma_buf + ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32 ZeExternalMemoryTypeFlags = /* ZE_BIT(2) */(( 1 << 2 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32 an NT handle + ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32_KMT ZeExternalMemoryTypeFlags = /* ZE_BIT(3) */(( 1 << 3 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_OPAQUE_WIN32_KMT a global share (KMT) handle + ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D11_TEXTURE ZeExternalMemoryTypeFlags = /* ZE_BIT(4) */(( 1 << 4 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D11_TEXTURE an NT handle referring to a Direct3D 10 or 11 texture resource + ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D11_TEXTURE_KMT ZeExternalMemoryTypeFlags = /* ZE_BIT(5) */(( 1 << 5 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D11_TEXTURE_KMT a global share (KMT) handle referring to a Direct3D 10 or 11 texture ///< resource - ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_HEAP ZeExternalMemoryTypeFlags = (( 1 << 6 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_HEAP an NT handle referring to a Direct3D 12 heap resource - ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_RESOURCE ZeExternalMemoryTypeFlags = (( 1 << 7 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_RESOURCE an NT handle referring to a Direct3D 12 committed resource + ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_HEAP ZeExternalMemoryTypeFlags = /* ZE_BIT(6) */(( 1 << 6 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_HEAP an NT handle referring to a Direct3D 12 heap resource + ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_RESOURCE ZeExternalMemoryTypeFlags = /* ZE_BIT(7) */(( 1 << 7 )) // ZE_EXTERNAL_MEMORY_TYPE_FLAG_D3D12_RESOURCE an NT handle referring to a Direct3D 12 committed resource ZE_EXTERNAL_MEMORY_TYPE_FLAG_FORCE_UINT32 ZeExternalMemoryTypeFlags = 0x7fffffff // ZE_EXTERNAL_MEMORY_TYPE_FLAG_FORCE_UINT32 Value marking end of ZE_EXTERNAL_MEMORY_TYPE_FLAG_* ENUMs ) @@ -367,3 +367,9 @@ const ( // ZE_MAX_UUID_SIZE Maximum universal unique id (UUID) size in bytes const ZE_MAX_UUID_SIZE = 16 +// ZeUuid (ze_uuid_t) Universal unique id (UUID) +type ZeUuid struct { + Id [ZE_MAX_UUID_SIZE]uint8 // Id [out] opaque data representing a UUID + +} + diff --git a/doc.go b/doc.go index 611a593..00cbb46 100644 --- a/doc.go +++ b/doc.go @@ -1,4 +1,3 @@ package gozel //go:generate go run ./gen -spec ./spec -//go:generate gofmt -w . diff --git a/gen/scan.go b/gen/scan.go index 370ac9c..d7e72e9 100644 --- a/gen/scan.go +++ b/gen/scan.go @@ -251,6 +251,27 @@ func scanBlocks( fsb.WriteString(us2camel(strings.TrimSuffix(strings.TrimSpace(vname), ";"))) fsb.WriteString(" byte") } + case strings.Contains(stat, "_t "): + tname, remains, ok := strings.Cut(stat, "_t ") + if !ok { + panic(fmt.Sprintf("%s L%d: unexpected statement %s", name, ln, stat)) + } + szc, sz := "", "" + vname, szc, ok = strings.Cut(remains, "[") + vname = us2camel(strings.TrimSpace(vname)) + if ok { // is array + sz, c, _ = strings.Cut(szc, "//") + fsb.WriteString("\t") + fsb.WriteString(vname) + fsb.WriteString(" [") + fsb.WriteString(strings.TrimSuffix(strings.TrimSpace(sz), ";")) + fsb.WriteString(strings.TrimSpace(tname)) + } else { + vname, c, _ = strings.Cut(vname, "//") + fsb.WriteString(us2camel(strings.TrimSuffix(strings.TrimSpace(vname), ";"))) + fsb.WriteString(" ") + fsb.WriteString(strings.TrimSpace(tname)) + } default: panic(fmt.Sprintf("%s L%d: unexpected statement %s", name, ln, stat)) } diff --git a/gen/symbol.go b/gen/symbol.go index cc3c13d..fb29ae9 100644 --- a/gen/symbol.go +++ b/gen/symbol.go @@ -81,19 +81,22 @@ func (s *symbol) replace(txt string) string { return strings.ReplaceAll(txt, s.name, s.fields[0]) case symbolTypeFunc: paras := strings.Split(s.fields[0], ",") + txts := []string{} for { args, a, b, err := s.extract1stFunc(txt) if err == errNoSuchSymbol { - return txt + txts = append(txts, txt) + return strings.Join(txts, "") } if len(paras) != len(args) { panic("args " + strings.Join(args, ", ") + " count " + strconv.Itoa(len(args)) + " is different from recorded " + s.fields[0]) } - txts := []string{txt[:a], "(", s.fields[1], txt[b:]} + n := len(txts) + txts = append(txts, []string{txt[:a], "/* ", txt[a:b], ") */(", s.fields[1]}...) for i, p := range paras { - txts[2] = strings.ReplaceAll(txts[2], strings.TrimSpace(p), args[i]) + txts[n+4] = strings.ReplaceAll(txts[n+4], strings.TrimSpace(p), args[i]) } - txt = strings.Join(txts, "") + txt = txt[b:] } } panic("unsupported symbol type " + strconv.Itoa(int(s.stype)))