~ubuntu-branches/ubuntu/precise/mesa/precise-updates

« back to all changes in this revision

Viewing changes to src/gallium/drivers/noop/noop_pipe.c

  • Committer: Package Import Robot
  • Author(s): Robert Hooker
  • Date: 2012-02-02 12:05:48 UTC
  • mfrom: (1.7.1) (3.3.27 sid)
  • Revision ID: package-import@ubuntu.com-20120202120548-nvkma85jq0h4coix
Tags: 8.0~rc2-0ubuntu4
Drop drisearchdir handling, it is no longer needed with multiarch
and dri-alternates being removed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 */
23
23
#include <stdio.h>
24
24
#include <errno.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>
 
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"
33
33
 
34
34
DEBUG_GET_ONCE_BOOL_OPTION(noop, "GALLIUM_NOOP", FALSE)
101
101
        nresource->base = *templ;
102
102
        nresource->base.screen = screen;
103
103
        nresource->size = stride * templ->height0 * templ->depth0;
104
 
        nresource->data = malloc(nresource->size);
 
104
        nresource->data = MALLOC(nresource->size);
105
105
        pipe_reference_init(&nresource->base.reference, 1);
106
106
        if (nresource->data == NULL) {
107
107
                FREE(nresource);
137
137
{
138
138
        struct noop_resource *nresource = (struct noop_resource *)resource;
139
139
 
140
 
        free(nresource->data);
 
140
        FREE(nresource->data);
141
141
        FREE(resource);
142
142
}
143
143
 
224
224
 * clear/copy
225
225
 */
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)
228
228
{
229
229
}
230
230
 
231
231
static void noop_clear_render_target(struct pipe_context *ctx,
232
232
                                     struct pipe_surface *dst,
233
 
                                     const float *rgba,
 
233
                                     const union pipe_color_union *color,
234
234
                                     unsigned dstx, unsigned dsty,
235
235
                                     unsigned width, unsigned height)
236
236
{
324
324
 
325
325
static int noop_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
326
326
{
327
 
        switch (param) {
328
 
        /* Supported features (boolean caps). */
329
 
        case PIPE_CAP_NPOT_TEXTURES:
330
 
        case PIPE_CAP_TWO_SIDED_STENCIL:
331
 
        case PIPE_CAP_GLSL:
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:
341
 
 
342
 
          return 1;
343
 
        case PIPE_CAP_DUAL_SOURCE_BLEND:
344
 
 
345
 
        case PIPE_CAP_SM3:
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:
354
 
                return 0;
355
 
 
356
 
        /* Texturing. */
357
 
        case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
358
 
        case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
359
 
        case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
360
 
                return 14;
361
 
        case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
362
 
                return 16;
363
 
        case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
364
 
        case PIPE_CAP_MAX_COMBINED_SAMPLERS:
365
 
                return 16;
366
 
 
367
 
        /* Render targets. */
368
 
        case PIPE_CAP_MAX_RENDER_TARGETS:
369
 
                return 8;
370
 
 
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:
374
 
                return 1;
375
 
        case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
376
 
        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
377
 
                return 0;
378
 
 
379
 
        default:
380
 
                return 0;
381
 
        }
 
327
        struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
 
328
 
 
329
        return screen->get_param(screen, param);
382
330
}
383
331
 
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)
385
334
{
386
 
        switch (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:
391
 
                return 8192.0f;
392
 
        case PIPE_CAP_MAX_TEXTURE_ANISOTROPY:
393
 
                return 16.0f;
394
 
        case PIPE_CAP_MAX_TEXTURE_LOD_BIAS:
395
 
                return 16.0f;
396
 
        default:
397
 
                return 0.0f;
398
 
        }
 
335
        struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
 
336
 
 
337
        return screen->get_paramf(screen, param);
399
338
}
400
339
 
401
340
static int noop_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
402
341
{
403
 
        switch(shader)
404
 
        {
405
 
        case PIPE_SHADER_FRAGMENT:
406
 
        case PIPE_SHADER_VERTEX:
407
 
        case PIPE_SHADER_GEOMETRY:
408
 
                break;
409
 
        default:
410
 
                return 0;
411
 
        }
 
342
        struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
412
343
 
413
 
        switch (param) {
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:
418
 
                return 16384;
419
 
        case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH:
420
 
                return 8;
421
 
        case PIPE_SHADER_CAP_MAX_INPUTS:
422
 
                return 16;
423
 
        case PIPE_SHADER_CAP_MAX_TEMPS:
424
 
                return 256;
425
 
        case PIPE_SHADER_CAP_MAX_ADDRS:
426
 
                return 1;
427
 
        case PIPE_SHADER_CAP_MAX_CONSTS:
428
 
                return 256;
429
 
        case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
430
 
                return 1;
431
 
        case PIPE_SHADER_CAP_MAX_PREDS:
432
 
                return 0;
433
 
        case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
434
 
                return 1;
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:
439
 
                return 1;
440
 
        default:
441
 
                return 0;
442
 
        }
 
344
        return screen->get_shader_param(screen, shader, param);
443
345
}
444
346
 
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,
449
351
                                        unsigned usage)
450
352
{
451
 
        return true;
 
353
        struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
 
354
 
 
355
        return screen->is_format_supported(screen, format, target, sample_count, usage);
452
356
}
453
357
 
454
358
static void noop_destroy_screen(struct pipe_screen *screen)