mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
glsl: Add glsl_type::sampler_index
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
195ee502c3
commit
32be81de39
2 changed files with 35 additions and 0 deletions
|
|
@ -127,6 +127,35 @@ glsl_type::contains_sampler() const
|
|||
}
|
||||
}
|
||||
|
||||
gl_texture_index
|
||||
glsl_type::sampler_index() const
|
||||
{
|
||||
const glsl_type *const t = (this->is_array()) ? this->fields.array : this;
|
||||
|
||||
assert(t->is_sampler());
|
||||
|
||||
switch (t->sampler_dimensionality) {
|
||||
case GLSL_SAMPLER_DIM_1D:
|
||||
return (t->sampler_array) ? TEXTURE_1D_ARRAY_INDEX : TEXTURE_1D_INDEX;
|
||||
case GLSL_SAMPLER_DIM_2D:
|
||||
return (t->sampler_array) ? TEXTURE_2D_ARRAY_INDEX : TEXTURE_2D_INDEX;
|
||||
case GLSL_SAMPLER_DIM_3D:
|
||||
return TEXTURE_3D_INDEX;
|
||||
case GLSL_SAMPLER_DIM_CUBE:
|
||||
return TEXTURE_CUBE_INDEX;
|
||||
case GLSL_SAMPLER_DIM_RECT:
|
||||
return TEXTURE_RECT_INDEX;
|
||||
case GLSL_SAMPLER_DIM_BUF:
|
||||
assert(!"FINISHME: Implement ARB_texture_buffer_object");
|
||||
break;
|
||||
case GLSL_SAMPLER_DIM_EXTERNAL:
|
||||
return TEXTURE_EXTERNAL_INDEX;
|
||||
default:
|
||||
assert(!"Should not get here.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
glsl_type::generate_100ES_types(glsl_symbol_table *symtab)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include "main/mtypes.h" /* for gl_texture_index, C++'s enum rules are broken */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
@ -353,6 +354,11 @@ struct glsl_type {
|
|||
*/
|
||||
bool contains_sampler() const;
|
||||
|
||||
/**
|
||||
* Get the Mesa texture target index for a sampler type.
|
||||
*/
|
||||
gl_texture_index sampler_index() const;
|
||||
|
||||
/**
|
||||
* Query whether or not a type is an array
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue