Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
angle
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
angle
Commits
075368e3
Commit
075368e3
authored
Jun 24, 2013
by
Nicolas Capens
Committed by
Shannon Woods
Jul 19, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented unsigned integer sampler HLSL translation.
TRAC #23360 Signed-off-by: Jamie Madill Signed-off-by: Shannon Woods Author: Nicolas Capens
parent
2ffe0bbe
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
140 additions
and
6 deletions
+140
-6
OutputHLSL.cpp
src/compiler/OutputHLSL.cpp
+140
-6
No files found.
src/compiler/OutputHLSL.cpp
View file @
075368e3
...
@@ -680,6 +680,11 @@ void OutputHLSL::header()
...
@@ -680,6 +680,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.Sample(s, uv);
\n
"
" return t.Sample(s, uv);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2D(Texture2D<uint4> t, SamplerState s, float2 uv)
\n
"
"{
\n
"
" return t.Sample(s, uv);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -706,6 +711,11 @@ void OutputHLSL::header()
...
@@ -706,6 +711,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleBias(s, uv, bias);
\n
"
" return t.SampleBias(s, uv, bias);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2D(Texture2D<uint4> t, SamplerState s, float2 uv, float bias)
\n
"
"{
\n
"
" return t.SampleBias(s, uv, bias);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -747,6 +757,16 @@ void OutputHLSL::header()
...
@@ -747,6 +757,16 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.Sample(s, float2(uvw.x / uvw.w, uvw.y / uvw.w));
\n
"
" return t.Sample(s, float2(uvw.x / uvw.w, uvw.y / uvw.w));
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProj(Texture2D<uint4> t, SamplerState s, float3 uvw)
\n
"
"{
\n
"
" return t.Sample(s, float2(uvw.x / uvw.z, uvw.y / uvw.z));
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProj(Texture2D<uint4> t, SamplerState s, float4 uvw)
\n
"
"{
\n
"
" return t.Sample(s, float2(uvw.x / uvw.w, uvw.y / uvw.w));
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -788,6 +808,16 @@ void OutputHLSL::header()
...
@@ -788,6 +808,16 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleBias(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), bias);
\n
"
" return t.SampleBias(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), bias);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProj(Texture2D<uint4> t, SamplerState s, float3 uvw, float bias)
\n
"
"{
\n
"
" return t.SampleBias(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), bias);
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProj(Texture2D<uint4> t, SamplerState s, float4 uvw, float bias)
\n
"
"{
\n
"
" return t.SampleBias(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), bias);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -814,6 +844,11 @@ void OutputHLSL::header()
...
@@ -814,6 +844,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.Sample(s, uvw);
\n
"
" return t.Sample(s, uvw);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_textureCube(TextureCube<uint4> t, SamplerState s, float3 uvw)
\n
"
"{
\n
"
" return t.Sample(s, uvw);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -840,6 +875,11 @@ void OutputHLSL::header()
...
@@ -840,6 +875,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleBias(s, uvw, bias);
\n
"
" return t.SampleBias(s, uvw, bias);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_textureCube(TextureCube<uint4> t, SamplerState s, float3 uvw, float bias)
\n
"
"{
\n
"
" return t.SampleBias(s, uvw, bias);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -868,6 +908,11 @@ void OutputHLSL::header()
...
@@ -868,6 +908,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DLod0(Texture2D<uint4> t, SamplerState s, float2 uv)
\n
"
"{
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -894,6 +939,11 @@ void OutputHLSL::header()
...
@@ -894,6 +939,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DLod0(Texture2D<uint4> t, SamplerState s, float2 uv, float bias)
\n
"
"{
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -935,6 +985,16 @@ void OutputHLSL::header()
...
@@ -935,6 +985,16 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProjLod0(Texture2D<uint4> t, SamplerState s, float3 uvw)
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), 0);
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProjLod0(Texture2D<uint4> t, SamplerState s, float4 uvw)
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -976,6 +1036,16 @@ void OutputHLSL::header()
...
@@ -976,6 +1036,16 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProjLod_bias(Texture2D<uint4> t, SamplerState s, float3 uvw, float bias)
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), 0);
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProjLod_bias(Texture2D<uint4> t, SamplerState s, float4 uvw, float bias)
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -1002,6 +1072,11 @@ void OutputHLSL::header()
...
@@ -1002,6 +1072,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_textureCubeLod0(TextureCube<uint4> t, SamplerState s, float3 uvw)
\n
"
"{
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -1028,6 +1103,11 @@ void OutputHLSL::header()
...
@@ -1028,6 +1103,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_textureCubeLod0(TextureCube<uint4> t, SamplerState s, float3 uvw, float bias)
\n
"
"{
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -1134,6 +1214,11 @@ void OutputHLSL::header()
...
@@ -1134,6 +1214,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2D(Texture2D<uint> t, SamplerState s, float2 uv)
\n
"
"{
\n
"
" return t.SampleLevel(s, uv, 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -1160,6 +1245,11 @@ void OutputHLSL::header()
...
@@ -1160,6 +1245,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, uv, lod);
\n
"
" return t.SampleLevel(s, uv, lod);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DLod(Texture2D<uint> t, SamplerState s, float2 uv, float lod)
\n
"
"{
\n
"
" return t.SampleLevel(s, uv, lod);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -1201,6 +1291,16 @@ void OutputHLSL::header()
...
@@ -1201,6 +1291,16 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProj(Texture2D<uint4> t, SamplerState s, float3 uvw)
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), 0);
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProj(Texture2D<uint4> t, SamplerState s, float4 uvw)
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -1242,6 +1342,16 @@ void OutputHLSL::header()
...
@@ -1242,6 +1342,16 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), lod);
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), lod);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProj(Texture2D<uint4> t, SamplerState s, float3 uvw, float lod)
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.z, uvw.y / uvw.z), lod);
\n
"
"}
\n
"
"
\n
"
"uint4 gl_texture2DProj(Texture2D<uint4> t, SamplerState s, float4 uvw)
\n
"
"{
\n
"
" return t.SampleLevel(s, float2(uvw.x / uvw.w, uvw.y / uvw.w), lod);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -1268,6 +1378,11 @@ void OutputHLSL::header()
...
@@ -1268,6 +1378,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_textureCube(TextureCube<uint4> t, SamplerState s, float3 uvw)
\n
"
"{
\n
"
" return t.SampleLevel(s, uvw, 0);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -1294,6 +1409,11 @@ void OutputHLSL::header()
...
@@ -1294,6 +1409,11 @@ void OutputHLSL::header()
"{
\n
"
"{
\n
"
" return t.SampleLevel(s, uvw, lod);
\n
"
" return t.SampleLevel(s, uvw, lod);
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"uint4 gl_textureCubeLod(TextureCube<uint4> t, SamplerState s, float3 uvw, float lod)
\n
"
"{
\n
"
" return t.SampleLevel(s, uvw, lod);
\n
"
"}
\n
"
"
\n
"
;
"
\n
"
;
}
}
else
UNREACHABLE
();
else
UNREACHABLE
();
...
@@ -2365,7 +2485,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
...
@@ -2365,7 +2485,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
TBasicType
samplerType
=
arguments
[
0
]
->
getAsTyped
()
->
getType
().
getBasicType
();
TBasicType
samplerType
=
arguments
[
0
]
->
getAsTyped
()
->
getType
().
getBasicType
();
if
(
name
==
"texture2D"
||
if
(
name
==
"texture2D"
||
(
name
==
"texture"
&&
(
samplerType
==
EbtSampler2D
||
samplerType
==
EbtISampler2D
)))
(
name
==
"texture"
&&
(
samplerType
==
EbtSampler2D
||
samplerType
==
EbtISampler2D
||
samplerType
==
EbtUSampler2D
)))
{
{
if
(
!
lod0
)
if
(
!
lod0
)
{
{
...
@@ -2397,7 +2517,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
...
@@ -2397,7 +2517,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
}
}
}
}
else
if
(
name
==
"texture2DProj"
||
else
if
(
name
==
"texture2DProj"
||
(
name
==
"textureProj"
&&
(
samplerType
==
EbtSampler2D
||
samplerType
==
EbtISampler2D
)))
(
name
==
"textureProj"
&&
(
samplerType
==
EbtSampler2D
||
samplerType
==
EbtISampler2D
||
samplerType
==
EbtUSampler2D
)))
{
{
if
(
!
lod0
)
if
(
!
lod0
)
{
{
...
@@ -2429,7 +2549,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
...
@@ -2429,7 +2549,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
}
}
}
}
else
if
(
name
==
"textureCube"
||
else
if
(
name
==
"textureCube"
||
(
name
==
"texture"
&&
(
samplerType
==
EbtSamplerCube
||
samplerType
==
EbtISamplerCube
)))
(
name
==
"texture"
&&
(
samplerType
==
EbtSamplerCube
||
samplerType
==
EbtISamplerCube
||
samplerType
==
EbtUSamplerCube
)))
{
{
if
(
!
lod0
)
if
(
!
lod0
)
{
{
...
@@ -2461,7 +2581,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
...
@@ -2461,7 +2581,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
}
}
}
}
else
if
(
name
==
"texture2DLod"
||
else
if
(
name
==
"texture2DLod"
||
(
name
==
"textureLod"
&&
(
samplerType
==
EbtSampler2D
||
samplerType
==
EbtISampler2D
)))
(
name
==
"textureLod"
&&
(
samplerType
==
EbtSampler2D
||
samplerType
==
EbtISampler2D
||
samplerType
==
EbtUSampler2D
)))
{
{
if
(
arguments
.
size
()
==
3
)
if
(
arguments
.
size
()
==
3
)
{
{
...
@@ -2472,7 +2592,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
...
@@ -2472,7 +2592,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
out
<<
"gl_texture2DLod("
;
out
<<
"gl_texture2DLod("
;
}
}
else
if
(
name
==
"texture2DProjLod"
||
else
if
(
name
==
"texture2DProjLod"
||
(
name
==
"textureProjLod"
&&
(
samplerType
==
EbtSampler2D
||
samplerType
==
EbtISampler2D
)))
(
name
==
"textureProjLod"
&&
(
samplerType
==
EbtSampler2D
||
samplerType
==
EbtISampler2D
||
samplerType
==
EbtUSampler2D
)))
{
{
if
(
arguments
.
size
()
==
3
)
if
(
arguments
.
size
()
==
3
)
{
{
...
@@ -2483,7 +2603,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
...
@@ -2483,7 +2603,7 @@ bool OutputHLSL::visitAggregate(Visit visit, TIntermAggregate *node)
out
<<
"gl_texture2DProjLod("
;
out
<<
"gl_texture2DProjLod("
;
}
}
else
if
(
name
==
"textureCubeLod"
||
else
if
(
name
==
"textureCubeLod"
||
(
name
==
"textureLod"
&&
(
samplerType
==
EbtSamplerCube
||
samplerType
==
EbtISamplerCube
)))
(
name
==
"textureLod"
&&
(
samplerType
==
EbtSamplerCube
||
samplerType
==
EbtISamplerCube
||
samplerType
==
EbtUSamplerCube
)))
{
{
if
(
arguments
.
size
()
==
3
)
if
(
arguments
.
size
()
==
3
)
{
{
...
@@ -3244,9 +3364,11 @@ TString OutputHLSL::typeString(const TType &type)
...
@@ -3244,9 +3364,11 @@ TString OutputHLSL::typeString(const TType &type)
return
"void"
;
return
"void"
;
case
EbtSampler2D
:
case
EbtSampler2D
:
case
EbtISampler2D
:
case
EbtISampler2D
:
case
EbtUSampler2D
:
return
"sampler2D"
;
return
"sampler2D"
;
case
EbtSamplerCube
:
case
EbtSamplerCube
:
case
EbtISamplerCube
:
case
EbtISamplerCube
:
case
EbtUSamplerCube
:
return
"samplerCUBE"
;
return
"samplerCUBE"
;
case
EbtSamplerExternalOES
:
case
EbtSamplerExternalOES
:
return
"sampler2D"
;
return
"sampler2D"
;
...
@@ -3273,6 +3395,10 @@ TString OutputHLSL::textureString(const TType &type)
...
@@ -3273,6 +3395,10 @@ TString OutputHLSL::textureString(const TType &type)
return
"Texture2D<int4>"
;
return
"Texture2D<int4>"
;
case
EbtISamplerCube
:
case
EbtISamplerCube
:
return
"TextureCube<int4>"
;
return
"TextureCube<int4>"
;
case
EbtUSampler2D
:
return
"Texture2D<uint4>"
;
case
EbtUSamplerCube
:
return
"TextureCube<uint4>"
;
default
:
default
:
break
;
break
;
}
}
...
@@ -3896,6 +4022,14 @@ GLenum OutputHLSL::glVariableType(const TType &type)
...
@@ -3896,6 +4022,14 @@ GLenum OutputHLSL::glVariableType(const TType &type)
{
{
return
GL_INT_SAMPLER_CUBE
;
return
GL_INT_SAMPLER_CUBE
;
}
}
else
if
(
type
.
getBasicType
()
==
EbtUSampler2D
)
{
return
GL_UNSIGNED_INT_SAMPLER_2D
;
}
else
if
(
type
.
getBasicType
()
==
EbtUSamplerCube
)
{
return
GL_UNSIGNED_INT_SAMPLER_CUBE
;
}
else
UNREACHABLE
();
else
UNREACHABLE
();
return
GL_NONE
;
return
GL_NONE
;
...
...
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