25
#include <pipe/p_defines.h>
26
#include <pipe/p_state.h>
27
#include <pipe/p_context.h>
28
#include <pipe/p_screen.h>
29
#include <util/u_memory.h>
30
#include <util/u_inlines.h>
31
#include <util/u_format.h>
25
#include "pipe/p_defines.h"
26
#include "pipe/p_state.h"
27
#include "pipe/p_context.h"
28
#include "pipe/p_screen.h"
29
#include "util/u_memory.h"
30
#include "util/u_inlines.h"
31
#include "util/u_format.h"
32
32
#include "noop_public.h"
34
34
DEBUG_GET_ONCE_BOOL_OPTION(noop, "GALLIUM_NOOP", FALSE)
226
226
static void noop_clear(struct pipe_context *ctx, unsigned buffers,
227
const float *rgba, double depth, unsigned stencil)
227
const union pipe_color_union *color, double depth, unsigned stencil)
231
231
static void noop_clear_render_target(struct pipe_context *ctx,
232
232
struct pipe_surface *dst,
233
const union pipe_color_union *color,
234
234
unsigned dstx, unsigned dsty,
235
235
unsigned width, unsigned height)
325
325
static int noop_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
328
/* Supported features (boolean caps). */
329
case PIPE_CAP_NPOT_TEXTURES:
330
case PIPE_CAP_TWO_SIDED_STENCIL:
332
case PIPE_CAP_OCCLUSION_QUERY:
333
case PIPE_CAP_POINT_SPRITE:
334
case PIPE_CAP_ANISOTROPIC_FILTER:
335
case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
336
case PIPE_CAP_TEXTURE_MIRROR_REPEAT:
337
case PIPE_CAP_TEXTURE_SHADOW_MAP:
338
case PIPE_CAP_TEXTURE_SWIZZLE:
339
case PIPE_CAP_BLEND_EQUATION_SEPARATE:
340
case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
343
case PIPE_CAP_DUAL_SOURCE_BLEND:
346
case PIPE_CAP_INDEP_BLEND_ENABLE:
347
case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE:
348
case PIPE_CAP_DEPTH_CLAMP:
349
case PIPE_CAP_SHADER_STENCIL_EXPORT:
350
case PIPE_CAP_TIMER_QUERY:
351
case PIPE_CAP_STREAM_OUTPUT:
352
case PIPE_CAP_PRIMITIVE_RESTART:
353
case PIPE_CAP_INDEP_BLEND_FUNC:
357
case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
358
case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
359
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
361
case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
363
case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
364
case PIPE_CAP_MAX_COMBINED_SAMPLERS:
367
/* Render targets. */
368
case PIPE_CAP_MAX_RENDER_TARGETS:
371
/* Fragment coordinate conventions. */
372
case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
373
case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
375
case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
376
case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
327
struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
329
return screen->get_param(screen, param);
384
static float noop_get_paramf(struct pipe_screen* pscreen, enum pipe_cap param)
332
static float noop_get_paramf(struct pipe_screen* pscreen,
333
enum pipe_capf param)
387
case PIPE_CAP_MAX_LINE_WIDTH:
388
case PIPE_CAP_MAX_LINE_WIDTH_AA:
389
case PIPE_CAP_MAX_POINT_WIDTH:
390
case PIPE_CAP_MAX_POINT_WIDTH_AA:
392
case PIPE_CAP_MAX_TEXTURE_ANISOTROPY:
394
case PIPE_CAP_MAX_TEXTURE_LOD_BIAS:
335
struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
337
return screen->get_paramf(screen, param);
401
340
static int noop_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
405
case PIPE_SHADER_FRAGMENT:
406
case PIPE_SHADER_VERTEX:
407
case PIPE_SHADER_GEOMETRY:
342
struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
414
case PIPE_SHADER_CAP_MAX_INSTRUCTIONS:
415
case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS:
416
case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS:
417
case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS:
419
case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH:
421
case PIPE_SHADER_CAP_MAX_INPUTS:
423
case PIPE_SHADER_CAP_MAX_TEMPS:
425
case PIPE_SHADER_CAP_MAX_ADDRS:
427
case PIPE_SHADER_CAP_MAX_CONSTS:
429
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
431
case PIPE_SHADER_CAP_MAX_PREDS:
433
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
435
case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR:
436
case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR:
437
case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
438
case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
344
return screen->get_shader_param(screen, shader, param);
445
static boolean noop_is_format_supported(struct pipe_screen* screen,
347
static boolean noop_is_format_supported(struct pipe_screen* pscreen,
446
348
enum pipe_format format,
447
349
enum pipe_texture_target target,
448
350
unsigned sample_count,
353
struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
355
return screen->is_format_supported(screen, format, target, sample_count, usage);
454
358
static void noop_destroy_screen(struct pipe_screen *screen)