Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
ad3f10bb
Commit
ad3f10bb
authored
Mar 10, 2020
by
Jeff Bolz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
EXT_debug_printf - make escape sequences better match C/C++
parent
dbb56a1d
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
72 additions
and
37 deletions
+72
-37
spv.debugPrintf.frag.out
Test/baseResults/spv.debugPrintf.frag.out
+5
-1
spv.debugPrintf_Error.frag.out
Test/baseResults/spv.debugPrintf_Error.frag.out
+7
-0
spv.debugPrintf.frag
Test/spv.debugPrintf.frag
+6
-0
spv.debugPrintf_Error.frag
Test/spv.debugPrintf_Error.frag
+11
-0
PpScanner.cpp
glslang/MachineIndependent/preprocessor/PpScanner.cpp
+42
-36
Spv.FromFile.cpp
gtests/Spv.FromFile.cpp
+1
-0
No files found.
Test/baseResults/spv.debugPrintf.frag.out
View file @
ad3f10bb
spv.debugPrintf.frag
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 1
3
// Id's are bound by 1
7
Capability Shader
Extension "SPV_KHR_non_semantic_info"
...
...
@@ -11,6 +11,8 @@ spv.debugPrintf.frag
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginUpperLeft
6: String "ASDF \ ? \ %d %d %d"
13: String "ABAZ"
15: String "B#$B1Z"
Source GLSL 450
SourceExtension "GL_EXT_debug_printf"
Name 4 "main"
...
...
@@ -23,5 +25,7 @@ spv.debugPrintf.frag
4(main): 2 Function None 3
5: Label
12: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 6 8 9 10
14: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 13
16: 2 ExtInst 11(NonSemantic.DebugPrintf) 1(DebugPrintf) 15
Return
FunctionEnd
Test/baseResults/spv.debugPrintf_Error.frag.out
0 → 100644
View file @
ad3f10bb
spv.debugPrintf_Error.frag
ERROR: 0:7: 'string' : Expected hex value in escape sequence
ERROR: 0:10: 'string' : Invalid escape sequence
ERROR: 2 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link
Test/spv.debugPrintf.frag
View file @
ad3f10bb
...
...
@@ -4,4 +4,10 @@
void
main
()
{
debugPrintfEXT
(
"ASDF
\\
\?
\x5C
%d %d %d"
,
1
,
2
,
3
);
// ABA{backspace}Z
debugPrintfEXT
(
"
\x41\x0000
42
\x41
\x8Z"
);
// B#${bell, aka \a}B1Z
debugPrintfEXT
(
"
\102\043\44\7\102
1Z"
);
}
Test/spv.debugPrintf_Error.frag
0 → 100644
View file @
ad3f10bb
#version 450
#extension GL_EXT_debug_printf : enable
void
main
()
{
// invalid hex sequence
debugPrintfEXT
(
"\xZ"
);
// not an octal sequence
debugPrintfEXT
(
"\8"
);
}
glslang/MachineIndependent/preprocessor/PpScanner.cpp
View file @
ad3f10bb
...
...
@@ -1045,28 +1045,31 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
case
't'
:
ch
=
0x09
;
break
;
case
'v'
:
ch
=
0x0b
;
break
;
case
'x'
:
// two character hex value
nextCh
=
getch
();
if
(
nextCh
>=
'0'
&&
nextCh
<=
'9'
)
nextCh
-=
'0'
;
else
if
(
nextCh
>=
'A'
&&
nextCh
<=
'F'
)
nextCh
-=
'A'
-
10
;
else
if
(
nextCh
>=
'a'
&&
nextCh
<=
'f'
)
nextCh
-=
'a'
-
10
;
else
pp
->
parseContext
.
ppError
(
ppToken
->
loc
,
"Expected hex value in escape sequence"
,
"string"
,
""
);
ch
=
nextCh
*
0x10
;
nextCh
=
getch
();
if
(
nextCh
>=
'0'
&&
nextCh
<=
'9'
)
nextCh
-=
'0'
;
else
if
(
nextCh
>=
'A'
&&
nextCh
<=
'F'
)
nextCh
-=
'A'
-
10
;
else
if
(
nextCh
>=
'a'
&&
nextCh
<=
'f'
)
nextCh
-=
'a'
-
10
;
else
pp
->
parseContext
.
ppError
(
ppToken
->
loc
,
"Expected hex value in escape sequence"
,
"string"
,
""
);
ch
+=
nextCh
;
break
;
// Hex value, arbitrary number of characters. Terminated by the first
// non-hex digit
{
int
numDigits
=
0
;
ch
=
0
;
while
(
true
)
{
nextCh
=
getch
();
if
(
nextCh
>=
'0'
&&
nextCh
<=
'9'
)
nextCh
-=
'0'
;
else
if
(
nextCh
>=
'A'
&&
nextCh
<=
'F'
)
nextCh
-=
'A'
-
10
;
else
if
(
nextCh
>=
'a'
&&
nextCh
<=
'f'
)
nextCh
-=
'a'
-
10
;
else
{
ungetch
();
break
;
}
numDigits
++
;
ch
=
ch
*
0x10
+
nextCh
;
}
if
(
numDigits
==
0
)
{
pp
->
parseContext
.
ppError
(
ppToken
->
loc
,
"Expected hex value in escape sequence"
,
"string"
,
""
);
}
break
;
}
case
'0'
:
case
'1'
:
case
'2'
:
...
...
@@ -1075,20 +1078,23 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
case
'5'
:
case
'6'
:
case
'7'
:
// three character octal value
nextCh
=
getch
()
-
'0'
;
if
(
nextCh
>
3
)
pp
->
parseContext
.
ppError
(
ppToken
->
loc
,
"Expected octal value in escape sequence"
,
"string"
,
""
);
ch
=
nextCh
*
8
*
8
;
nextCh
=
getch
()
-
'0'
;
if
(
nextCh
>
7
)
pp
->
parseContext
.
ppError
(
ppToken
->
loc
,
"Expected octal value in escape sequence"
,
"string"
,
""
);
ch
+=
nextCh
*
8
;
nextCh
=
getch
()
-
'0'
;
if
(
nextCh
>
7
)
pp
->
parseContext
.
ppError
(
ppToken
->
loc
,
"Expected octal value in escape sequence"
,
"string"
,
""
);
ch
+=
nextCh
;
break
;
// Octal value, up to three octal digits
{
int
numDigits
=
1
;
ch
=
nextCh
-
'0'
;
while
(
numDigits
<
3
)
{
nextCh
=
getch
();
if
(
nextCh
>=
'0'
&&
nextCh
<=
'7'
)
nextCh
-=
'0'
;
else
{
ungetch
();
break
;
}
numDigits
++
;
ch
=
ch
*
8
+
nextCh
;
}
break
;
}
default
:
pp
->
parseContext
.
ppError
(
ppToken
->
loc
,
"Invalid escape sequence"
,
"string"
,
""
);
break
;
...
...
gtests/Spv.FromFile.cpp
View file @
ad3f10bb
...
...
@@ -310,6 +310,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.dataOutIndirect.frag"
,
"spv.dataOutIndirect.vert"
,
"spv.debugPrintf.frag"
,
"spv.debugPrintf_Error.frag"
,
"spv.demoteDisabled.frag"
,
"spv.deepRvalue.frag"
,
"spv.depthOut.frag"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment